diff options
Diffstat (limited to '')
435 files changed, 38920 insertions, 0 deletions
diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt new file mode 100644 index 0000000..9185c3c --- /dev/null +++ b/testfiles/CMakeLists.txt @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# ----------------------------------------------------------------------------- + +# custom "check" target with proper dependencies (builds inkscape and tests) +file(TO_NATIVE_PATH "/" _separator) +ADD_DEFINITIONS(-DINKSCAPE_TESTS_DIR="${CMAKE_SOURCE_DIR}/testfiles") +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure + DEPENDS tests + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_dependencies(check inkscape) + + +# create symlink "inkscape_datadir" to use as INKSCAPE_DATADIR +# - ensures tests can be run without installing the project +# - also helpful for running Inkscape uninstalled: 'INKSVAPE_DATADIR=inkscape_datadir bin/inkscape' +set(INKSCAPE_DATADIR ${CMAKE_BINARY_DIR}/inkscape_datadir) +if(NOT EXISTS ${INKSCAPE_DATADIR}/inkscape) + set(link_source ${INKSCAPE_DATADIR}/inkscape) + set(link_target ${CMAKE_SOURCE_DIR}/share) + message(STATUS "Creating link '${link_source}' --> '${link_target}'") + execute_process(COMMAND mkdir inkscape_datadir) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${link_target} ${link_source} + RESULT_VARIABLE result) + if(result) + message(WARNING "Creation of link failed: ${result}") + endif() +endif() +# check if creation succeeded +if(EXISTS ${INKSCAPE_DATADIR}/inkscape) + set(CMAKE_CTEST_ENV INKSCAPE_DATADIR=${INKSCAPE_DATADIR}) +else() + message(WARNING "Directory 'inkscape_datadir/inkscape' missing. Tests might not run properly.\n" + "Possible solutions:\n" + " - create a suitable symlink yourself, e.g.\n" + " ln -s ${CMAKE_SOURCE_DIR}/share ${INKSCAPE_DATADIR}/inkscape\n" + " - run '${CMAKE_MAKE_PROGRAM} install' before running tests (only for not relocatable packages.\n" + " - set the environment variable 'INKSCAPE_DATADIR' manually (every time you run tests)") +endif() + + +# Set custom profile directory for tests using environment variable. +# Copy CTestCustom.cmake into binary dir, where it will be picked up automatically by ctest for cleanup. +set(INKSCAPE_TEST_PROFILE_DIR ${CMAKE_CURRENT_BINARY_DIR}/test_profile_dir) +set(INKSCAPE_TEST_PROFILE_DIR_ENV INKSCAPE_PROFILE_DIR=${INKSCAPE_TEST_PROFILE_DIR}) +configure_file(CTestCustom.cmake.in ${CMAKE_BINARY_DIR}/CTestCustom.cmake) + + + +### tests using gtest +include_directories("${CMAKE_SOURCE_DIR}/src/3rdparty/adaptagrams") # TODO: remove this hack + +if(${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(LPE_TESTS_64bit + #0.92 or lower LPEs + # (test not stable on 32bit Windows) + lpe64-test + ) +endif() + +set(TEST_SOURCES + uri-test + util-test + drag-and-drop-svgz + extract-uri-test + attributes-test + color-profile-test + dir-util-test + sp-object-test + object-set-test + object-style-test + path-boolop-test + rebase-hrefs-test + style-elem-test + style-internal-test + style-test + svg-affine-test + svg-color-test + svg-length-test + svg-stringstream-test + sp-gradient-test + svg-path-geom-test + object-test + sp-glyph-kerning-test + cairo-utils-test + svg-extension-test + curve-test + 2geom-characterization-test + xml-test + sp-item-group-test + lpe-test + ${LPE_TESTS_64bit} + ) + +add_library(cpp_test_static_library SHARED unittest.cpp doc-per-case-test.cpp lpespaths-test.h) +target_link_libraries(cpp_test_static_library PUBLIC ${GTEST_LIBRARIES} inkscape_base) + +add_custom_target(tests) +foreach(test_source ${TEST_SOURCES}) + string(REPLACE "-test" "" testname "test_${test_source}") + add_executable(${testname} src/${test_source}.cpp) + target_include_directories(${testname} SYSTEM PRIVATE ${GTEST_INCLUDE_DIRS}) + target_link_libraries(${testname} cpp_test_static_library 2Geom::2geom) + add_test(NAME ${testname} COMMAND ${testname}) + set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${INKSCAPE_TEST_PROFILE_DIR_ENV}/${testname};${CMAKE_CTEST_ENV}") + add_dependencies(tests ${testname}) +endforeach() + + +### CLI rendering tests and LPE +add_subdirectory(cli_tests) +add_subdirectory(rendering_tests) +add_subdirectory(lpe_tests) + +### Fuzz test +if(WITH_FUZZ) + # to use the fuzzer, make sure you use the right compiler (clang) + # with the right flags -fsanitize=address -fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep -fno-omit-frame-pointer + # (see libfuzzer doc for info in flags) + # first line is for integration into oss-fuzz https://github.com/google/oss-fuzz + add_executable(fuzz fuzzer.cpp) + if(LIB_FUZZING_ENGINE) + target_link_libraries(fuzz inkscape_base -lFuzzingEngine) + else() + target_link_libraries(fuzz inkscape_base -lFuzzer) + endif() +endif() diff --git a/testfiles/CTestCustom.cmake.in b/testfiles/CTestCustom.cmake.in new file mode 100644 index 0000000..9c1c834 --- /dev/null +++ b/testfiles/CTestCustom.cmake.in @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +# Cleanup test-specific profile directories whenever running tests (before and after, just to be safe) +set(CTEST_CUSTOM_PRE_TEST "rm -rf ${INKSCAPE_TEST_PROFILE_DIR}") +set(CTEST_CUSTOM_POST_TEST "rm -rf ${INKSCAPE_TEST_PROFILE_DIR}") diff --git a/testfiles/cli_tests/CMakeLists.txt b/testfiles/cli_tests/CMakeLists.txt new file mode 100644 index 0000000..e40a982 --- /dev/null +++ b/testfiles/cli_tests/CMakeLists.txt @@ -0,0 +1,844 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + + +# Helper function to add a CLI test +# +# Run an Inkscape command line and check for pass/fail condition (by default only exit status is checked) +# +# Command line options: +# INPUT_FILENAME - name of input file (optional) +# OUTPUT_FILENAME - name of output file (optional) +# PARAMETERS - additional command line parameters to pass to Inkscape +# +# Pass/fail criteria: +# PASS_FOR_OUTPUT - pass if output matches the given value, otherwise fail +# see https://cmake.org/cmake/help/latest/prop_test/PASS_REGULAR_EXPRESSION.html for details +# FAIL_FOR_OUTPUT - fail if output matches the given value +# see https://cmake.org/cmake/help/latest/prop_test/FAIL_REGULAR_EXPRESSION.html for details +# REFERENCE_FILENAME - compare OUTPUT_FILENAME with this pre-rendered reference file +# both files are converted to PNG and compared with ImageMagick's 'compare' +# EXPECTED_FILES - verify the command produced the expected files (i.e. they exist on disk) +# TEST_SCRIPT - additional script to run after performing all checks and before cleaning up +# +# Other options: +# ENVIRONMENT - Additional environment variables to set while running the test +function(add_cli_test name) + # parse arguments + set(oneValueArgs INPUT_FILENAME OUTPUT_FILENAME PASS_FOR_OUTPUT FAIL_FOR_OUTPUT REFERENCE_FILENAME) + set(multiValueArgs PARAMETERS EXPECTED_FILES TEST_SCRIPT ENVIRONMENT) + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + set(testname cli_${name}) + + #disable dithering + set(ARG_PARAMETERS ${ARG_PARAMETERS} "--export-png-use-dithering=false") + + if(DEFINED ARG_OUTPUT_FILENAME) + # for actions: if an export-do is present do not append export-filename option to prevent + if(NOT ARG_PARAMETERS MATCHES "export-do") + set(ARG_PARAMETERS ${ARG_PARAMETERS} "--export-filename=${ARG_OUTPUT_FILENAME}") + endif() + endif() + if(DEFINED ARG_INPUT_FILENAME) + set(ARG_INPUT_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/testcases/${ARG_INPUT_FILENAME}") + set(ARG_PARAMETERS ${ARG_PARAMETERS} ${ARG_INPUT_FILENAME}) + endif() + + set(CMAKE_CTEST_ENV "${INKSCAPE_TEST_PROFILE_DIR_ENV}/${testname};${CMAKE_CTEST_ENV}") + if(DEFINED ARG_ENVIRONMENT) + if(ARG_ENVIRONMENT STREQUAL "unset") + unset(CMAKE_CTEST_ENV) + else() + # variables might already be set, however the last value wins + list(APPEND CMAKE_CTEST_ENV ${ARG_ENVIRONMENT}) + endif() + endif() + + # add test for main command line + add_test(NAME ${testname} COMMAND inkscape ${ARG_PARAMETERS}) + set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${CMAKE_CTEST_ENV}") + if(DEFINED ARG_PASS_FOR_OUTPUT) + set_tests_properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION ${ARG_PASS_FOR_OUTPUT}) + endif() + if(DEFINED ARG_FAIL_FOR_OUTPUT) + set_tests_properties(${testname} PROPERTIES FAIL_REGULAR_EXPRESSION ${ARG_FAIL_FOR_OUTPUT}) + endif() + + # add test to check output files + if(DEFINED ARG_REFERENCE_FILENAME OR DEFINED ARG_EXPECTED_FILES OR DEFINED ARG_TEST_SCRIPT) + if(DEFINED ARG_REFERENCE_FILENAME) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/testcases/${ARG_REFERENCE_FILENAME}" ARG_REFERENCE_FILENAME) + endif() + if(DEFINED ARG_EXPECTED_FILES) + string(REPLACE ";" " " ARG_EXPECTED_FILES "${ARG_EXPECTED_FILES}") + endif() + if(DEFINED ARG_TEST_SCRIPT) + set(ARG_TEST_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/${ARG_TEST_SCRIPT}") + endif() + + add_test(NAME ${testname}_check_output + COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/check_output.sh + "${ARG_OUTPUT_FILENAME}" "${ARG_REFERENCE_FILENAME}" "${ARG_EXPECTED_FILES}" "${ARG_TEST_SCRIPT}") + set_tests_properties(${testname}_check_output PROPERTIES + ENVIRONMENT "${CMAKE_CTEST_ENV}" DEPENDS ${testname} SKIP_RETURN_CODE 42) + endif() +endfunction(add_cli_test) + + + +##### Tests follow below ##### + + + +############################################################################################# +### Command line options (basic tests for all program options as listed in --help output) ### +############################################################################################# + +# --help + +# --version (check if we can run inkscape and the revision is known) +add_cli_test(version PARAMETERS --version) +add_cli_test(version_known PARAMETERS --version FAIL_FOR_OUTPUT unknown) + +# --system-data-directory / --user-data-directory (unset environment variables to override our override) +# TODO: Can we make these tests more specific without making too many assumptions? +add_cli_test(system-data-directory PARAMETERS --system-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") +add_cli_test(user-data-directory PARAMETERS --user-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# --pipe + +# --pdf-page=PAGE + +# --pdf-poppler +add_cli_test(pdf-poppler-mesh-import + PARAMETERS --pdf-poppler + INPUT_FILENAME pdf-mesh.pdf + OUTPUT_FILENAME pdf-mesh_poppler.svg + TEST_SCRIPT match_regex.sh pdf-mesh_poppler.svg "<image") +add_cli_test(pdf-internal-mesh-import + INPUT_FILENAME pdf-mesh.pdf + OUTPUT_FILENAME pdf-mesh_internal.svg + TEST_SCRIPT match_regex_fail.sh pdf-mesh_internal.svg "<image") + +# --convert-dpi-method=METHOD + +# --no-convert-text-baseline-spacing + +# --export-filename=FILENAME +## check for https://gitlab.com/inkscape/inkscape/-/issues/1712 +install(DIRECTORY DESTINATION ${test.dir}) +add_cli_test(export-type-dot-separated PARAMETERS --export-type=svg,png + INPUT_FILENAME empty.svg OUTPUT_FILENAME test.dir/empty + EXPECTED_FILES test.dir/empty.svg test.dir/empty.png) + +# --export-overwrite + +# --export-type=TYPE[,TYPE]* + +## test whether we can export all default types in principle (and in one command) +add_cli_test(export-type PARAMETERS --export-type=svg,png,ps,eps,pdf,emf,wmf,xaml + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty + EXPECTED_FILES empty.svg empty.png empty.ps empty.eps empty.pdf empty.emf empty.wmf empty.xaml) +## test whether this also works if the export types are not lowercase +add_cli_test(export-type-caseinsensitive PARAMETERS --export-type=sVg,Png,PS,eps,Pdf,emf,wmf,xaml + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty + EXPECTED_FILES empty.svg empty.png empty.ps empty.eps empty.pdf empty.emf empty.wmf empty.xaml) + +## test whether we produce sane output for the default types +add_cli_test(export-type_svg PARAMETERS --export-type=svg INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg) +add_cli_test(export-type_png PARAMETERS --export-type=png INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.png REFERENCE_FILENAME shapes_expected.png) +add_cli_test(export-type_ps PARAMETERS --export-type=ps INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.ps REFERENCE_FILENAME shapes_expected.ps) +add_cli_test(export-type_eps PARAMETERS --export-type=eps INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.eps REFERENCE_FILENAME shapes_expected.eps) +add_cli_test(export-type_pdf PARAMETERS --export-type=pdf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf REFERENCE_FILENAME shapes_expected.pdf) +add_cli_test(export-type_emf PARAMETERS --export-type=emf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.emf REFERENCE_FILENAME shapes_expected.emf) +add_cli_test(export-type_wmf PARAMETERS --export-type=wmf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.wmf REFERENCE_FILENAME shapes_expected.wmf) +# XAML is not supported by ImageMagick's convert, so simply compare binary +add_cli_test(export-type_xaml PARAMETERS --export-type=xaml INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.xaml + TEST_SCRIPT compare.sh shapes.xaml "${CMAKE_CURRENT_SOURCE_DIR}/testcases/shapes_expected.xaml") + +# --export-area-page +add_cli_test(export-area-page_png PARAMETERS --export-area-page --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.png REFERENCE_FILENAME export-area-page_expected.png) +add_cli_test(export-area-page_svg PARAMETERS --export-area-page --export-type=svg INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.svg REFERENCE_FILENAME export-area-page_expected.svg) +add_cli_test(export-area-page_pdf PARAMETERS --export-area-page --export-type=pdf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.pdf REFERENCE_FILENAME export-area-page_expected.pdf) +add_cli_test(export-area-page_ps PARAMETERS --export-area-page --export-type=ps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.ps REFERENCE_FILENAME export-area-page_expected.ps) +# EPS: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-area-page_eps PARAMETERS --export-area-page --export-type=eps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.eps REFERENCE_FILENAME export-area-page_expected.eps) +add_cli_test(export-area-page_emf PARAMETERS --export-area-page --export-type=emf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.emf REFERENCE_FILENAME export-area-page_expected.emf) +add_cli_test(export-area-page_wmf PARAMETERS --export-area-page --export-type=wmf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page.wmf REFERENCE_FILENAME export-area-page_expected.wmf) + +# --export-area-page + --export-id (+ --export-id-only) +# TODO: PDF/PS/EPS always behave as if --export-id-only was given, see https://gitlab.com/inkscape/inkscape/-/issues/1173 +add_cli_test(export-area-page_export-id_png PARAMETERS --export-area-page --export-id=MyStar --export-id-only INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.png REFERENCE_FILENAME export-area-page_export-id.png) +add_cli_test(export-area-page_export-id_svg PARAMETERS --export-area-page --export-id=MyStar --export-id-only INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.svg REFERENCE_FILENAME export-area-page_export-id.svg) +add_cli_test(export-area-page_export-id_pdf PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.pdf REFERENCE_FILENAME export-area-page_export-id.pdf) +add_cli_test(export-area-page_export-id_ps PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.ps REFERENCE_FILENAME export-area-page_export-id.ps) +# EPS: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1074 +#add_cli_test(export-area-page_export-id_eps PARAMETERS --export-area-page --export-id=MyStar INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-page_export-id.eps REFERENCE_FILENAME export-area-page_export-id.eps) +# EMF, WMF: Nont supported. + +# --export-area-drawing +add_cli_test(export-area-drawing_png PARAMETERS --export-area-drawing --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.png REFERENCE_FILENAME export-area-drawing_expected.png) +add_cli_test(export-area-drawing_svg PARAMETERS --export-area-drawing --export-type=svg INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.svg REFERENCE_FILENAME export-area-drawing_expected.svg) +add_cli_test(export-area-drawing_pdf PARAMETERS --export-area-drawing --export-type=pdf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.pdf REFERENCE_FILENAME export-area-drawing_expected.pdf) +add_cli_test(export-area-drawing_ps PARAMETERS --export-area-drawing --export-type=ps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.ps REFERENCE_FILENAME export-area-drawing_expected.ps) +add_cli_test(export-area-drawing_eps PARAMETERS --export-area-drawing --export-type=eps INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.eps REFERENCE_FILENAME export-area-drawing_expected.eps) +# EMF, WMF: Currently not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1056 +# add_cli_test(export-area-drawing_emf PARAMETERS --export-area-drawing --export-type=emf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.emf REFERENCE_FILENAME export-area-drawing_expected.emf) +# add_cli_test(export-area-drawing_wmf PARAMETERS --export-area-drawing --export-type=wmf INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area-drawing.wmf REFERENCE_FILENAME export-area-drawing_expected.wmf) + +# --export-area=x0:y0:x1:y1 +add_cli_test(export-area_png PARAMETERS --export-area=150:150:350:300 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-area.png REFERENCE_FILENAME export-area_expected.png) +# SVG, PDF, PS, EPS, EMF, WMF: Not supported. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/678 + +# --export-area-snap +add_cli_test(export-area-snap_export-id PARAMETERS --export-id=rect_misaligned --export-area-snap --export-type=png INPUT_FILENAME pyramids.svg OUTPUT_FILENAME export-area-snap-id.png REFERENCE_FILENAME export-area-snap_expected.png) +add_cli_test(export-area-snap_export-area-drawing PARAMETERS --export-area-drawing --export-area-snap --export-type=png INPUT_FILENAME pyramids.svg OUTPUT_FILENAME export-area-snap-drawing.png REFERENCE_FILENAME export-area-snap_expected.png) +# SVG, PDF, PS, EPS, EMF, WMF: doesn't make sense + +# --export-dpi=DPI +add_cli_test(export-dpi_png PARAMETERS --export-dpi=12 --export-type=png INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.png REFERENCE_FILENAME export-dpi_expected.png) +# SVG: doesn't make sense +add_cli_test(export-dpi_pdf PARAMETERS --export-dpi=12 --export-type=pdf INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.pdf REFERENCE_FILENAME export-dpi_expected.pdf) +add_cli_test(export-dpi_ps PARAMETERS --export-dpi=12 --export-type=ps INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.ps REFERENCE_FILENAME export-dpi_expected.ps) +add_cli_test(export-dpi_eps PARAMETERS --export-dpi=12 --export-type=eps INPUT_FILENAME filter.svg OUTPUT_FILENAME export-dpi.eps REFERENCE_FILENAME export-dpi_expected.eps) +# EMF, WMF: doesn't make sense + +# --export-width=WIDTH / --export-height=HEIGHT +add_cli_test(export-width PARAMETERS --export-width=380 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-width.png REFERENCE_FILENAME export-width_expected.png) +add_cli_test(export-width_export-dpi PARAMETERS --export-width=380 --export-dpi=300 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-width2.png REFERENCE_FILENAME export-width_expected.png) +add_cli_test(export-width_export-use-hints PARAMETERS --export-width=380 --export-use-hints --export-id=rect1 --export-type=png INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh export_hints_rectangle.png "PNG 385x285" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +add_cli_test(export-height PARAMETERS --export-height=40 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-height.png REFERENCE_FILENAME export-height_expected.png) +add_cli_test(export-height_export-dpi PARAMETERS --export-height=40 --export-dpi=300 --export-type=png INPUT_FILENAME export_hints.svg OUTPUT_FILENAME export-height2.png REFERENCE_FILENAME export-height_expected.png) +add_cli_test(export-height_export-use-hints PARAMETERS --export-height=40 --export-use-hints --export-id=rect1 --export-type=png INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png "PNG 53x40" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +# SVG, PDF, PS, EPS, EMF, WMF: doesn't make sense + +# --export-margin=MARGIN +# There are many problems: +# - PNG, EPS, EMF, WMF: --export-margin is't supported. This affects all PNG, EPS, EMF, WMF tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - PDF: Defaults to margin in millimeters. This affects all mm based PDF tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - PS: Defaults to margin in pixels. This affects all px based OS tests below. Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1142 +# - --export-id for PDF/PS/EPS is buggy: works as --export-id + --export-id-only should work. See: https://gitlab.com/inkscape/inkscape/-/issues/1173 +# - --export-margin + --export-area=x0:y0:x1:y1 is PNG only feature. +# - --export-margin + --export-use-hints is PNG only feature. +# There is no test for --export-margin + --export-area-page combination because it's equivalent to --export-margin + +## simple --export-margin (millimeter based) +# add_cli_test(export-margin_mm_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.png REFERENCE_FILENAME export-margin_mm_expected.png ) +add_cli_test(export-margin_mm_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.svg REFERENCE_FILENAME export-margin_mm_expected.svg ) +add_cli_test(export-margin_mm_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.pdf REFERENCE_FILENAME export-margin_mm_expected.pdf ) +# add_cli_test(export-margin_mm_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.ps REFERENCE_FILENAME export-margin_mm_expected.ps ) +# add_cli_test(export-margin_mm_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.eps REFERENCE_FILENAME export-margin_mm_expected.eps ) +# add_cli_test(export-margin_mm_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.emf REFERENCE_FILENAME export-margin_mm_expected.emf ) +# add_cli_test(export-margin_mm_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_mm.svg OUTPUT_FILENAME export-margin_mm.wmf REFERENCE_FILENAME export-margin_mm_expected.wmf ) + +## simple --export-margin (pixel based) +# add_cli_test(export-margin_px_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.png REFERENCE_FILENAME export-margin_px_expected.png ) +add_cli_test(export-margin_px_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.svg REFERENCE_FILENAME export-margin_px_expected.svg ) +# add_cli_test(export-margin_px_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.pdf REFERENCE_FILENAME export-margin_px_expected.pdf ) +add_cli_test(export-margin_px_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.ps REFERENCE_FILENAME export-margin_px_expected.ps ) +# add_cli_test(export-margin_px_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.eps REFERENCE_FILENAME export-margin_px_expected.eps ) +# add_cli_test(export-margin_px_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.emf REFERENCE_FILENAME export-margin_px_expected.emf ) +# add_cli_test(export-margin_px_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_px.wmf REFERENCE_FILENAME export-margin_px_expected.wmf ) + +## --export-margin + --export-id (pixel based) +# add_cli_test(export-margin_export-id_png PARAMETERS --export-margin=50 --export-id=square-red --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.png REFERENCE_FILENAME export-margin_export-id_expected.png ) +add_cli_test(export-margin_export-id_svg PARAMETERS --export-margin=50 --export-id=square-red --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.svg REFERENCE_FILENAME export-margin_export-id_expected.svg ) +# add_cli_test(export-margin_export-id_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.pdf REFERENCE_FILENAME export-margin_export-id_expected.pdf ) +# add_cli_test(export-margin_export-id_ps PARAMETERS --export-margin=50 --export-id=square-red --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.ps REFERENCE_FILENAME export-margin_export-id_expected.ps ) +# add_cli_test(export-margin_export-id_eps PARAMETERS --export-margin=50 --export-id=square-red --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.eps REFERENCE_FILENAME export-margin_export-id_expected.eps ) +# add_cli_test(export-margin_export-id_emf PARAMETERS --export-margin=50 --export-id=square-red --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.emf REFERENCE_FILENAME export-margin_export-id_expected.emf ) +# add_cli_test(export-margin_export-id_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id.wmf REFERENCE_FILENAME export-margin_export-id_expected.wmf ) + +## --export-margin + --export-id + export-id-only (pixel based) +# add_cli_test(export-margin_export-id_export-id-only_png PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.png REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.png ) +add_cli_test(export-margin_export-id_export-id-only_svg PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.svg REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.svg ) +# add_cli_test(export-margin_export-id_export-id-only_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.pdf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.pdf ) +add_cli_test(export-margin_export-id_export-id-only_ps PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.ps REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.ps ) +# add_cli_test(export-margin_export-id_export-id-only_eps PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.eps REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.eps ) +# add_cli_test(export-margin_export-id_export-id-only_emf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.emf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.emf ) +# add_cli_test(export-margin_export-id_export-id-only_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-id-only --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-id_export-id-only.wmf REFERENCE_FILENAME export-margin_export-id_export-id-only_expected.wmf ) + +## --export-margin + --export-area-drawing (pixel based) +# add_cli_test(export-margin_export-area-drawing_png PARAMETERS --export-margin=50 --export-area-drawing --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.png REFERENCE_FILENAME export-margin_drawing_expected.png ) +add_cli_test(export-margin_export-area-drawing_svg PARAMETERS --export-margin=50 --export-area-drawing --export-type=svg INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.svg REFERENCE_FILENAME export-margin_drawing_expected.svg ) +# add_cli_test(export-margin_export-area-drawing_pdf PARAMETERS --export-margin=50 --export-area-drawing --export-type=pdf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.pdf REFERENCE_FILENAME export-margin_drawing_expected.pdf ) +add_cli_test(export-margin_export-area-drawing_ps PARAMETERS --export-margin=50 --export-area-drawing --export-type=ps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.ps REFERENCE_FILENAME export-margin_drawing_expected.ps ) +# add_cli_test(export-margin_export-area-drawing_eps PARAMETERS --export-margin=50 --export-area-drawing --export-type=eps INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.eps REFERENCE_FILENAME export-margin_drawing_expected.eps ) +# add_cli_test(export-margin_export-area-drawing_emf PARAMETERS --export-margin=50 --export-area-drawing --export-type=emf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.emf REFERENCE_FILENAME export-margin_drawing_expected.emf ) +# add_cli_test(export-margin_export-area-drawing_wmf PARAMETERS --export-margin=50 --export-area-drawing --export-type=wmf INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_drawing.wmf REFERENCE_FILENAME export-margin_drawing_expected.wmf ) + +## --export-margin + --export-area=x0:y0:x1:y1 (pixel based) +# add_cli_test(export-margin_export-area_png PARAMETERS --export-margin=50 --export-area=50:50:100:100 --export-type=png INPUT_FILENAME square_px.svg OUTPUT_FILENAME export-margin_export-area.png REFERENCE_FILENAME export-margin_export-area_expected.png ) + +## --export-margin + --export-use-hints (pixel based) +# add_cli_test(export-margin_export-use-hints_export-id PARAMETERS --export-margin=50 --export-use-hints --export-id=rect1 INPUT_FILENAME export_hints.svg PASS_FOR_OUTPUT "Area 10:10:90:70 exported to 203 x 177 pixels \\(123 dpi\\)" EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") + +## --export-margin (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_png PARAMETERS --export-margin=50 --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.png REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.png ) +add_cli_test(export-margin_viewbox_svg PARAMETERS --export-margin=50 --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.svg REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.svg ) +# add_cli_test(export-margin_viewbox_pdf PARAMETERS --export-margin=50 --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.pdf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.pdf ) +# add_cli_test(export-margin_viewbox_ps PARAMETERS --export-margin=50 --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.ps REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.ps ) +# add_cli_test(export-margin_viewbox_eps PARAMETERS --export-margin=50 --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.eps REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.eps ) +# add_cli_test(export-margin_viewbox_emf PARAMETERS --export-margin=50 --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.emf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.emf ) +# add_cli_test(export-margin_viewbox_wmf PARAMETERS --export-margin=50 --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox.wmf REFERENCE_FILENAME export-margin_mm_viewbox_page_expected.wmf ) + +## --export-margin + --export-area-drawing (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_drawing_png PARAMETERS --export-margin=50 --export-area-drawing --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.png REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.png ) +add_cli_test(export-margin_viewbox_drawing_svg PARAMETERS --export-margin=50 --export-area-drawing --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.svg REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.svg ) +# add_cli_test(export-margin_viewbox_drawing_pdf PARAMETERS --export-margin=50 --export-area-drawing --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.pdf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.pdf ) +# add_cli_test(export-margin_viewbox_drawing_ps PARAMETERS --export-margin=50 --export-area-drawing --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.ps REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.ps ) +# add_cli_test(export-margin_viewbox_drawing_eps PARAMETERS --export-margin=50 --export-area-drawing --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.eps REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.eps ) +# add_cli_test(export-margin_viewbox_drawing_emf PARAMETERS --export-margin=50 --export-area-drawing --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.emf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.emf ) +# add_cli_test(export-margin_viewbox_drawing_wmf PARAMETERS --export-margin=50 --export-area-drawing --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_drawing.wmf REFERENCE_FILENAME export-margin_mm_viewbox_drawing_expected.wmf ) + +## --export-margin + --export-id (millimeter based, user units rescaled via viewBox) +# add_cli_test(export-margin_viewbox_id_png PARAMETERS --export-margin=50 --export-id=square-red --export-type=png INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.png REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.png ) +add_cli_test(export-margin_viewbox_id_svg PARAMETERS --export-margin=50 --export-id=square-red --export-type=svg INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.svg REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.svg ) +# add_cli_test(export-margin_viewbox_id_pdf PARAMETERS --export-margin=50 --export-id=square-red --export-type=pdf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.pdf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.pdf ) +# add_cli_test(export-margin_viewbox_id_ps PARAMETERS --export-margin=50 --export-id=square-red --export-type=ps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.ps REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.ps ) +# add_cli_test(export-margin_viewbox_id_eps PARAMETERS --export-margin=50 --export-id=square-red --export-type=eps INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.eps REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.eps ) +# add_cli_test(export-margin_viewbox_id_emf PARAMETERS --export-margin=50 --export-id=square-red --export-type=emf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.emf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.emf ) +# add_cli_test(export-margin_viewbox_id_wmf PARAMETERS --export-margin=50 --export-id=square-red --export-type=wmf INPUT_FILENAME square_mm_viewbox.svg OUTPUT_FILENAME export-margin_viewbox_id.wmf REFERENCE_FILENAME export-margin_mm_viewbox_id_expected.wmf ) + +# --export-id=OBJECT-ID[;OBJECT-ID]* +add_cli_test(export-id_png PARAMETERS --export-id=red --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.png REFERENCE_FILENAME export-id_expected.png ) +add_cli_test(export-id_svg PARAMETERS --export-id=red --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.svg REFERENCE_FILENAME export-id_expected.svg ) +# PDF, PS, EPS doesn't respect --export-id-only, bug report: https://gitlab.com/inkscape/inkscape/-/issues/1173 +# add_cli_test(export-id_pdf PARAMETERS --export-id=red --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.pdf REFERENCE_FILENAME export-id_expected.pdf ) +# add_cli_test(export-id_ps PARAMETERS --export-id=red --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.ps REFERENCE_FILENAME export-id_expected.ps ) +# add_cli_test(export-id_eps PARAMETERS --export-id=red --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.eps REFERENCE_FILENAME export-id_expected.eps ) +# EMF, WMF There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_emf PARAMETERS --export-id=red --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.emf REFERENCE_FILENAME export-id_expected.emf ) +# add_cli_test(export-id_wmf PARAMETERS --export-id=red --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id.wmf REFERENCE_FILENAME export-id_expected.wmf ) + +## --export-id + --export-area-page = --export-area-page +## --export-id + --export-area-drawing = --export-area-drawing +## --export-id + --export-area-snap → export-area-snap_export-id +## --export-id + --export-margin → export-margin_export-id_png|svg|pdf|ps|eps|emf|wmf +## --export-id + --export-use-hints → export-use-hints_export-id +## --export-id + --export-use-hints + --export-width | --export-height → export-width_export-use-hints + +# --export-id-only +## --export-id + --export-id-only +add_cli_test(export-id_export-id-only_png PARAMETERS --export-id=blue --export-id-only --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.png REFERENCE_FILENAME export-id_export-id-only_expected.png ) +add_cli_test(export-id_export-id-only_svg PARAMETERS --export-id=blue --export-id-only --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.svg REFERENCE_FILENAME export-id_export-id-only_expected.svg ) +add_cli_test(export-id_export-id-only_pdf PARAMETERS --export-id=blue --export-id-only --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.pdf REFERENCE_FILENAME export-id_export-id-only_expected.pdf ) +add_cli_test(export-id_export-id-only_ps PARAMETERS --export-id=blue --export-id-only --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.ps REFERENCE_FILENAME export-id_export-id-only_expected.ps ) +add_cli_test(export-id_export-id-only_eps PARAMETERS --export-id=blue --export-id-only --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.eps REFERENCE_FILENAME export-id_export-id-only_expected.eps ) +# EMF, WMF There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_export-id-only_emf PARAMETERS --export-id=blue --export-id-only --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.emf REFERENCE_FILENAME export-id_export-id-only_expected.emf ) +# add_cli_test(export-id_export-id-only_wmf PARAMETERS --export-id=blue --export-id-only --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only.wmf REFERENCE_FILENAME export-id_export-id-only_expected.wmf ) + +## --export-id + --export-id-only + --export-area-page +add_cli_test(export-id_export-id-only_export-area-page_png PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.png REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.png ) +add_cli_test(export-id_export-id-only_export-area-page_svg PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.svg REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.svg ) +add_cli_test(export-id_export-id-only_export-area-page_pdf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.pdf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.pdf ) +add_cli_test(export-id_export-id-only_export-area-page_ps PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.ps REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.ps ) +# EPS: Depents on https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-id_export-id-only_export-area-page_eps PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.eps REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.eps ) +# EMF, WMF: There is no support, feature request: https://gitlab.com/inkscape/inkscape/-/issues/1204 +# add_cli_test(export-id_export-id-only_export-area-page_emf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.emf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.emf ) +# add_cli_test(export-id_export-id-only_export-area-page_wmf PARAMETERS --export-id=yellow --export-id-only --export-area-page --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-page.wmf REFERENCE_FILENAME export-id_export-id-only_export-area-page_expected.wmf ) + +## --export-id + --export-id-only + --export-area-drawing +# PNG, PDF, PS, EPS, EMF, WMF: Feature request: https://gitlab.com/inkscape/inkscape/-/issues/1215 +# add_cli_test(export-id_export-id-only_export-area-drawing_png PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=png INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.png REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.png ) +add_cli_test(export-id_export-id-only_export-area-drawing_svg PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=svg INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.svg REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.svg ) +# add_cli_test(export-id_export-id-only_export-area-drawing_pdf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=pdf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.pdf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.pdf ) +# add_cli_test(export-id_export-id-only_export-area-drawing_ps PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=ps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.ps REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.ps ) +# add_cli_test(export-id_export-id-only_export-area-drawing_eps PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=eps INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.eps REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.eps ) +# add_cli_test(export-id_export-id-only_export-area-drawing_emf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=emf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.emf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.emf ) +# add_cli_test(export-id_export-id-only_export-area-drawing_wmf PARAMETERS --export-id=yellow --export-id-only --export-area-drawing --export-type=wmf INPUT_FILENAME theta.svg OUTPUT_FILENAME export-id_export-id-only_export-area-drawing.wmf REFERENCE_FILENAME export-id_export-id-only_export-area-drawing_expected.wmf ) + +## --export-id + --export-id-only + --export-margin → export-margin_export-id_export-id-only_png|svg|pdf|ps|eps|emw|wmf + +# --export-plain-svg +add_cli_test(export-plain-svg PARAMETERS --export-type=svg --export-plain-svg + INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg + TEST_SCRIPT match_regex_fail.sh "shapes.svg" "inkscape:|sodipodi:") + +# --export-ps-level=LEVEL +add_cli_test(export-ps-level_2 PARAMETERS --export-ps-level=2 --export-type=ps INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps REFERENCE_FILENAME export-ps-level-2_expected.ps ) +add_cli_test(export-ps-level_2_content PARAMETERS --export-ps-level=2 --export-type=ps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps + TEST_SCRIPT match_regex.sh "export-ps-level-2.ps" "%%LanguageLevel: 2") +add_cli_test(export-ps-level_3 PARAMETERS --export-ps-level=3 --export-type=ps INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps REFERENCE_FILENAME export-ps-level-3_expected.ps ) +add_cli_test(export-ps-level_3_content PARAMETERS --export-ps-level=3 --export-type=ps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps + TEST_SCRIPT match_regex.sh "export-ps-level-3.ps" "%%LanguageLevel: 3") +add_cli_test(export-eps-level_2_content PARAMETERS --export-ps-level=2 --export-type=eps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-2.ps + TEST_SCRIPT match_regex.sh "export-ps-level-2.eps" "%%LanguageLevel: 2") +add_cli_test(export-eps-level_3_content PARAMETERS --export-ps-level=3 --export-type=eps + INPUT_FILENAME gradient.svg OUTPUT_FILENAME export-ps-level-3.ps + TEST_SCRIPT match_regex.sh "export-ps-level-3.eps" "%%LanguageLevel: 3") + +# --export-pdf-version=VERSION +add_cli_test(export-pdf-version-14 PARAMETERS --export-pdf-version=1.4 --export-type=pdf + INPUT_FILENAME rects.svg OUTPUT_FILENAME export-pdf-version-14.pdf + TEST_SCRIPT match_regex.sh "export-pdf-version-14.pdf" "^%PDF-1.4$") +add_cli_test(export-pdf-version-15 PARAMETERS --export-pdf-version=1.5 --export-type=pdf + INPUT_FILENAME rects.svg OUTPUT_FILENAME export-pdf-version-15.pdf + TEST_SCRIPT match_regex.sh "export-pdf-version-15.pdf" "^%PDF-1.5$") + +# --export-text-to-path +# PNG: Doesn't make sense. +# EMF/WMF: No way to check. +add_cli_test(preserve-text_pdf PARAMETERS --export-type=pdf + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.pdf + TEST_SCRIPT match_regex.sh "preserve-text.pdf" "/FontDescriptor") +add_cli_test(preserve-text_ps PARAMETERS --export-type=ps + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.ps + TEST_SCRIPT match_regex.sh "preserve-text.ps" "^%%BeginResource: font") +add_cli_test(preserve-text_eps PARAMETERS --export-type=eps + INPUT_FILENAME text.svg OUTPUT_FILENAME preserve-text.eps + TEST_SCRIPT match_regex.sh "preserve-text.eps" "^%%BeginResource: font") +add_cli_test(export-text-to-path_svg PARAMETERS --export-text-to-path --export-type=svg + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.svg + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.svg" "<text") +add_cli_test(export-text-to-path_pdf PARAMETERS --export-text-to-path --export-type=pdf + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.pdf + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.pdf" "/FontDescriptor") +add_cli_test(export-text-to-path_ps PARAMETERS --export-text-to-path --export-type=ps + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.ps + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.ps" "^%%BeginResource: font") +add_cli_test(export-text-to-path_eps PARAMETERS --export-text-to-path --export-type=eps + INPUT_FILENAME text.svg OUTPUT_FILENAME export-text-to-path.eps + TEST_SCRIPT match_regex_fail.sh "export-text-to-path.eps" "^%%BeginResource: font") + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/1364 +add_cli_test(regression-1364 PARAMETERS --select=large,small --actions=path-intersection + INPUT_FILENAME regression-1364.svg + OUTPUT_FILENAME regression-1364_output.svg + TEST_SCRIPT testcases/regression-1364_script.py) + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/2602 +add_cli_test(regression-2602 PARAMETERS --export-text-to-path + INPUT_FILENAME regression-2602.svg + OUTPUT_FILENAME regression-2602_output.svg + TEST_SCRIPT testcases/regression-2602_script.py) + +# Regression test for https://gitlab.com/inkscape/inkscape/-/issues/2797 +add_cli_test(regression-2797 INPUT_FILENAME regression-2797.svg + OUTPUT_FILENAME regression-2797_output.svg + TEST_SCRIPT testcases/regression-2797_script.py) + +# --export-latex +# PDF, PS, EPS only function by design. +add_cli_test(export-latex PARAMETERS --export-type=pdf,ps,eps --export-latex + INPUT_FILENAME text.svg OUTPUT_FILENAME export-latex + EXPECTED_FILES export-latex.pdf export-latex.pdf_tex export-latex.ps export-latex.ps_tex export-latex.eps export-latex.eps_tex + TEST_SCRIPT match_regex.sh "export-latex.pdf_tex" "some text") + +# --export-ignore-filters +## testing exporting with filters +add_cli_test(export-with-filters_svg PARAMETERS --export-type=svg INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.svg REFERENCE_FILENAME export-with-filters_expected.svg) +add_cli_test(export-with-filters_png PARAMETERS --export-type=png INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.png REFERENCE_FILENAME export-with-filters_expected.png) +add_cli_test(export-with-filters_ps PARAMETERS --export-type=ps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.ps REFERENCE_FILENAME export-with-filters_expected.ps ) +add_cli_test(export-with-filters_eps PARAMETERS --export-type=eps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.eps REFERENCE_FILENAME export-with-filters_expected.eps) +add_cli_test(export-with-filters_pdf PARAMETERS --export-type=pdf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.pdf REFERENCE_FILENAME export-with-filters_expected.pdf) +# EMF, WMF: No support for exporting filters. Feature request: https://gitlab.com/inkscape/inbox/-/issues/2275 +# add_cli_test(export-with-filters_emf PARAMETERS --export-type=emf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.emf REFERENCE_FILENAME export-with-filters_expected.emf) +# add_cli_test(export-with-filters_wmf PARAMETERS --export-type=wmf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-with-filters.wmf REFERENCE_FILENAME export-with-filters_expected.wmf) +## --export-ignore-filters +# SVG, PNG: No support for --export-ignore-filters. Feature request: https://gitlab.com/inkscape/inbox/-/issues/2275 +# add_cli_test(export-ignore-filters_svg PARAMETERS --export-ignore-filters --export-type=svg INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.svg REFERENCE_FILENAME export-ignore-filters_expected.svg) +# add_cli_test(export-ignore-filters_png PARAMETERS --export-ignore-filters --export-type=png INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.png REFERENCE_FILENAME export-ignore-filters_expected.png) +add_cli_test(export-ignore-filters_ps PARAMETERS --export-ignore-filters --export-type=ps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.ps REFERENCE_FILENAME export-ignore-filters_expected.ps ) +# EPS: Works, but depends on https://gitlab.com/inkscape/inkscape/-/issues/1074 +# add_cli_test(export-ignore-filters_eps PARAMETERS --export-ignore-filters --export-type=eps INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.eps REFERENCE_FILENAME export-ignore-filters_expected.eps) +add_cli_test(export-ignore-filters_pdf PARAMETERS --export-ignore-filters --export-type=pdf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.pdf REFERENCE_FILENAME export-ignore-filters_expected.pdf) +add_cli_test(export-ignore-filters_emf PARAMETERS --export-ignore-filters --export-type=emf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.emf REFERENCE_FILENAME export-ignore-filters_expected.emf) +add_cli_test(export-ignore-filters_wmf PARAMETERS --export-ignore-filters --export-type=wmf INPUT_FILENAME offset.svg OUTPUT_FILENAME export-ignore-filters.wmf REFERENCE_FILENAME export-ignore-filters_expected.wmf) + +# --export-use-hints +add_cli_test(export-use-hints_export-id PARAMETERS --export-use-hints --export-id=rect1 INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png "PNG 103x77" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_rectangle.png") +add_cli_test(export-use-hints_export-area-drawing PARAMETERS --export-use-hints --export-area-drawing INPUT_FILENAME export_hints.svg + # TEST_SCRIPT identify.sh ${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_drawing.png "PNG 197x69" + EXPECTED_FILES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/export_hints_drawing.png") + +# --export-background=COLOR +## check for default background color and opacity +# SVG, PDF, PS, EPS: Format not supoorted. Feature request: https://gitlab.com/inkscape/inbox/issues/2293 +# EMF, WMF: Format does not support opacity. + add_cli_test(export-default-background_png PARAMETERS --export-type=png INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.png REFERENCE_FILENAME export-default-background_expected.png) + add_cli_test(export-default-background_svg PARAMETERS --export-type=svg INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.svg REFERENCE_FILENAME export-default-background_expected.svg) +# add_cli_test(export-default-background_pdf PARAMETERS --export-type=pdf INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.pdf REFERENCE_FILENAME export-default-background_expected.pdf) +# add_cli_test(export-default-background_ps PARAMETERS --export-type=ps INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.ps REFERENCE_FILENAME export-default-background_expected.ps ) +# add_cli_test(export-default-background_eps PARAMETERS --export-type=eps INPUT_FILENAME lambda-background.svg OUTPUT_FILENAME export-default-background.eps REFERENCE_FILENAME export-default-background_expected.eps) +## test --export-background=COLOR + add_cli_test(export-background_png PARAMETERS --export-background=yellow --export-type=png INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.png REFERENCE_FILENAME export-background_expected.png) + add_cli_test(export-background_svg PARAMETERS --export-background=yellow --export-type=svg INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.svg REFERENCE_FILENAME export-background_expected.svg) +# add_cli_test(export-background_pdf PARAMETERS --export-background=yellow --export-type=pdf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.pdf REFERENCE_FILENAME export-background_expected.pdf) +# add_cli_test(export-background_ps PARAMETERS --export-background=yellow --export-type=ps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.ps REFERENCE_FILENAME export-background_expected.ps ) +# add_cli_test(export-background_eps PARAMETERS --export-background=yellow --export-type=eps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.eps REFERENCE_FILENAME export-background_expected.eps) +# add_cli_test(export-background_emf PARAMETERS --export-background=yellow --export-type=emf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.emf REFERENCE_FILENAME export-background_expected.emf) +# add_cli_test(export-background_wmf PARAMETERS --export-background=yellow --export-type=wmf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background.wmf REFERENCE_FILENAME export-background_expected.wmf) + +# --export-background-opacity=VALUE +# SVG, PDF, PS, EPS: Format not supoorted. Feature request: https://gitlab.com/inkscape/inbox/issues/2293 +# EMF, WMF: Format does not support opacity. +add_cli_test(export-background-opacity_png PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=png INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.png REFERENCE_FILENAME export-background-opacity_expected.png) + add_cli_test(export-background-opacity_svg PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=svg INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.svg REFERENCE_FILENAME export-background-opacity_expected.svg) +# add_cli_test(export-background-opacity_pdf PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=pdf INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.pdf REFERENCE_FILENAME export-background-opacity_expected.pdf) +# add_cli_test(export-background-opacity_ps PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=ps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.ps REFERENCE_FILENAME export-background-opacity_expected.ps ) +# add_cli_test(export-background-opacity_eps PARAMETERS --export-background=yellow --export-background-opacity=0.5 --export-type=eps INPUT_FILENAME lambda.svg OUTPUT_FILENAME export-background-opacity.eps REFERENCE_FILENAME export-background-opacity_expected.eps) + +# --export-png-color-mode=COLOR-MODE +# SVG, PDF, PS, EPS, EMF, WMF: Vector formats - bitmap bit-depth and color-type not relevant there. + add_cli_test(export-png-color-mode-gray-8_png PARAMETERS --export-png-color-mode=Gray_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-gray-8.png REFERENCE_FILENAME export-png-color-mode-gray-8_expected.png) + add_cli_test(export-png-color-mode-rgb-8_png PARAMETERS --export-png-color-mode=RGB_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-rgb-8.png REFERENCE_FILENAME export-png-color-mode-rgb-8_expected.png) + add_cli_test(export-png-color-mode-rgba-8_png PARAMETERS --export-png-color-mode=RGBA_8 --export-type=png INPUT_FILENAME areas.svg OUTPUT_FILENAME export-png-color-mode-rgba-8.png REFERENCE_FILENAME export-png-color-mode-rgba-8_expected.png) + +## test whether we produce correct output for default export extensions +add_cli_test(export-extension_svg PARAMETERS --export-type=svg --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg) +add_cli_test(export-extension_ps PARAMETERS --export-type=ps --export-extension=org.inkscape.print.ps.cairo INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.ps REFERENCE_FILENAME shapes_expected.ps) +add_cli_test(export-extension_eps PARAMETERS --export-type=eps --export-extension=org.inkscape.print.eps.cairo INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.eps REFERENCE_FILENAME shapes_expected.eps) +add_cli_test(export-extension_pdf PARAMETERS --export-type=pdf --export-extension=org.inkscape.output.pdf.cairorenderer INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf REFERENCE_FILENAME shapes_expected.pdf) +add_cli_test(export-extension_emf PARAMETERS --export-type=emf --export-extension=org.inkscape.output.emf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.emf REFERENCE_FILENAME shapes_expected.emf) +add_cli_test(export-extension_wmf PARAMETERS --export-type=wmf --export-extension=org.inkscape.output.wmf INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.wmf REFERENCE_FILENAME shapes_expected.wmf) +add_cli_test(export-plain-extension-svg PARAMETERS --export-type=svg --export-extension=org.inkscape.output.svg.plain + INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.svg REFERENCE_FILENAME shapes.svg + TEST_SCRIPT match_regex_fail.sh "shapes.svg" "inkscape:|sodipodi:") +## guess file type from --export-extension +add_cli_test(export-type-extension_svg_guess_file_type PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes) + +## check error messages for --export-extension +add_cli_test(export-type-extension_png_error PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.png + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The parameter --export-extension is invalid for PNG export") +add_cli_test(export-type-extension_type_error PARAMETERS --export-extension=org.inkscape.output.svg.inkscape INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.pdf + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The supplied extension ID \\(org\\.inkscape\\.output\\.svg\\.inkscape\\) does not match any of the extensions available for this file type.*") +add_cli_test(export-type-extension_id_error PARAMETERS --export-extension=whatever INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: The supplied --export-extension was not found. Specify a file extension to get a list of available extensions for this file type.") +add_cli_test(export-type_filetype_error INPUT_FILENAME shapes.svg OUTPUT_FILENAME shapes.xxx + PASS_FOR_OUTPUT "InkFileExportCmd::do_export: Unknown export type: xxx. Allowed values: \\[.*]") + +# --query-id=OBJECT-ID[,OBJECT-ID]* + +# --query-all / --query-x / --query-y / --query-width / --query-height +string(CONCAT query_all_expected "rect1,10,10,80,80\n" + "rect2,110,20,80,70\n" + "rect3,210,30,80,60") +add_cli_test(query-all PARAMETERS --query-id=rect2 --query-all INPUT_FILENAME rects.svg PASS_FOR_OUTPUT ${query_all_expected}) +add_cli_test(query-x PARAMETERS --query-id=rect2 --query-x INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 110) +add_cli_test(query-y PARAMETERS --query-id=rect2 --query-y INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 20) +add_cli_test(query-width PARAMETERS --query-id=rect2 --query-width INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 80) +add_cli_test(query-height PARAMETERS --query-id=rect2 --query-height INPUT_FILENAME rects.svg PASS_FOR_OUTPUT 70) + +# --vacuum-defs + +# --select=OBJECT-ID[,OBJECT-ID]* + +# --actions / --verbs +# (see below) + +# --action-list / --verb-list +add_cli_test(action-list PARAMETERS --action-list PASS_FOR_OUTPUT "file-new") + +# --with-gui + +# --batch-process + +# --shell + + +############### +### actions ### +############### + +# action-list: test = action-list +add_cli_test(actions-action-list PARAMETERS --actions=action-list PASS_FOR_OUTPUT "file-new") + +# convert-dpi-method +# debug-info +add_cli_test(actions-debug-info PARAMETERS --actions=debug-info PASS_FOR_OUTPUT "OS version:") + +# export-area +# export-area-drawing +# export-area-page +# export-area-snap +# export-background +# export-background-opacity +# export-do +# export-dpi +# export-filename +# export-height +# export-id +# export-id-only +# export-ignore-filters +# export-latex +# export-margin +# export-overwrite +# export-pdf-version +# export-plain-svg +# export-png-color-mode +# export-ps-level +# export-text-to-path +# export-type +# export-use-hints +# export-width + +# file-close +add_cli_test(actions-file-close PARAMETERS --actions=file-new$<SEMICOLON>file-close$<SEMICOLON>file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-close.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-close.svg "id=\"purple-cover\"") + +# file-new +add_cli_test(actions-file-new1 PARAMETERS --actions=file-new$<SEMICOLON>export-filename:actions-file-new1.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-new1.svg "viewBox=\"0 0 210 297\"") +add_cli_test(actions-file-new2 PARAMETERS --actions=file-new:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-new2.svg$<SEMICOLON>export-do + TEST_SCRIPT match_regex.sh actions-file-new2.svg "id=\"purple-cover\"") + +# file-open +add_cli_test(actions-file-open PARAMETERS --actions=file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/theta.svg$<SEMICOLON>export-filename:actions-file-open.png$<SEMICOLON>export-do + OUTPUT_FILENAME actions-file-open.png + REFERENCE_FILENAME actions-file-open_expected.png) + +# inkscape-version +add_cli_test(actions-inkscape-version PARAMETERS --actions=inkscape-version + PASS_FOR_OUTPUT "Inkscape [0-9]+\\.[0-9]+") + +# no-convert-baseline +# object-align +add_cli_test(actions-object-align INPUT_FILENAME lambda.svg + PARAMETERS --actions=select-by-id:green$<SEMICOLON>object-align:left\ page + OUTPUT_FILENAME actions-object-align.png + REFERENCE_FILENAME actions-object-align_expected.png) + +# object-distribute +add_cli_test(actions-object-distribute INPUT_FILENAME rects.svg + PARAMETERS --actions=select-by-element:rect$<SEMICOLON>object-distribute:vgap + OUTPUT_FILENAME actions-object-distribute.png + REFERENCE_FILENAME actions-object-distribute_expected.png) + +# object-set-attribute +add_cli_test(actions-object-set-attribute INPUT_FILENAME rects.svg + PARAMETERS --actions=select-by-id:rect1$<SEMICOLON>object-set-attribute:rx,15 + OUTPUT_FILENAME actions-object-set-attribute.png + REFERENCE_FILENAME actions-object-set-attribute_expected.png) + +# object-set-property +add_cli_test(actions-object-set-property INPUT_FILENAME areas.svg + PARAMETERS --actions=select-by-id:MyRect$<SEMICOLON>object-set-property:fill,gold + OUTPUT_FILENAME actions-object-set-property.svg + TEST_SCRIPT match_regex.sh actions-object-set-property.svg "style=\"fill:gold\"") + +# path-simplify +add_cli_test(actions-path-simplify INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:gates$<SEMICOLON>path-simplify$<SEMICOLON>export-id:gates$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-simplify-path.png + REFERENCE_FILENAME actions-object-simplify-path_expected.png) + +# object-stroke-to-path +add_cli_test(actions-object-stroke-to-path INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:cross$<SEMICOLON>object-stroke-to-path$<SEMICOLON>select-by-selector:path\:nth-of-type\(2\)$<SEMICOLON>object-set-attribute:stroke,red$<SEMICOLON>export-id:cross$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-stroke-to-path.png + REFERENCE_FILENAME actions-object-stroke-to-path_expected.png) + +add_cli_test(action_stroke-to-path_varied + INPUT_FILENAME stroke-to-path-variations.svg + PARAMETERS --actions=select-all:all$<SEMICOLON>object-stroke-to-path$<SEMICOLON>export-filename:stroke-to-path-variations_out.svg$<SEMICOLON>export-do + EXPECTED_FILES stroke-to-path-variations_out.svg + TEST_SCRIPT match_regex_fail.sh stroke-to-path-variations_out.svg "(#mixed)|(#fillet)|(<text)|(<flow)|(<use)") + +# object-to-path +add_cli_test(actions-object-to-path INPUT_FILENAME areas.svg + PARAMETERS --actions=select-by-id:MyRect$<SEMICOLON>object-to-path$<SEMICOLON>export-id:MyRect$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-to-path.svg + TEST_SCRIPT match_regex.sh actions-object-to-path.svg "<path") + +# object-unlink-clones +add_cli_test(actions-object-unlink-clones INPUT_FILENAME path.svg + PARAMETERS --actions=select-by-id:clone$<SEMICOLON>object-unlink-clones$<SEMICOLON>object-set-attribute:fill,red$<SEMICOLON>export-id:clone$<SEMICOLON>export-id-only + OUTPUT_FILENAME actions-object-unlink-clones.png + REFERENCE_FILENAME actions-object-unlink-clones_expected.png) +# open-page +add_cli_test(actions-open-page PARAMETERS --actions=open-page:3$<SEMICOLON>file-open:${CMAKE_CURRENT_SOURCE_DIR}/testcases/pdf-pages.pdf$<SEMICOLON>export-filename:actions-open-page.png$<SEMICOLON>export-do + OUTPUT_FILENAME actions-open-page.png + REFERENCE_FILENAME actions-open-page_expected.png) + +# query-all: test = query-all +add_cli_test(actions-query-all INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-all PASS_FOR_OUTPUT ${query_all_expected}) + +# query-height: test = query-height +add_cli_test(actions-query-height INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-height PASS_FOR_OUTPUT 70) + +# query-width: test = query-width +add_cli_test(actions-query-width INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-width PASS_FOR_OUTPUT 80) + +# query-x: test = query-x +add_cli_test(actions-query-x INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-x PASS_FOR_OUTPUT 110) + +# query-y: test = query-y +add_cli_test(actions-query-y INPUT_FILENAME rects.svg PARAMETERS --actions=select-by-id:rect2$<SEMICOLON>query-y PASS_FOR_OUTPUT 20) + +# quit-inkscape +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-quit-inkscape PARAMETERS --actions=quit-inkscape FAIL_FOR_OUTPUT ".+") + +# select: it is deprecated +# select-all +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-all INPUT_FILENAME path.svg PARAMETERS --actions=select-all$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^heart .+\nbottom-left-corner .+\nsquare .+\ntop-right-corner .+\narc-big .+\narc-small .+\ngates .+\ncross .+\nclone .+$") + +# select-by-class +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-class INPUT_FILENAME path.svg PARAMETERS --actions=select-by-class:corner$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^bottom-left-corner .+\ntop-right-corner .+$") + +# select-by-element +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-element INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:use$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^clone .+$") + +# select-by-id +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-id INPUT_FILENAME path.svg PARAMETERS --actions=select-by-id:top-right-corner$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^top-right-corner .+$") + +# select-by-selector = svg > path:nth-child(2n) ~ *[fill=red]:nth-of-type(even) +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-by-selector INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:svg\ >\ path:nth-child\(2n\)\ ~\ *\[fill\=red\]:nth-of-type\(even\)$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^arc-big .+\nclone .+$") + +# select-clear +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-clear INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:path$<SEMICOLON>select-clear$<SEMICOLON>select-by-id:cross$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^cross .+$") + +# select-invert +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-invert INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:path:nth-of-type\(2n\)$<SEMICOLON>select-invert:all$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^heart .+\nsquare .+\narc-big .+\ngates .+\nclone .+$") + +# select-list +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-select-list INPUT_FILENAME path.svg PARAMETERS --actions=select-by-selector:*[stroke-width]:nth-child\(3n+3\)$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^gates cloned: false ref: 1 href: 0 total href: 0\n$") + +# system-data-directory: test = system-data-directory +add_cli_test(actions-system-data-directory PARAMETERS --actions=system-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# transform-remove +add_cli_test(actions-transform-remove INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_4$<SEMICOLON>transform-rotate:2$<SEMICOLON>transform-remove + OUTPUT_FILENAME actions-transform-remove.png + REFERENCE_FILENAME actions-transform-remove_expected.png) + +# transform-rotate +add_cli_test(actions-transform-rotate INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:rect_snapped_4$<SEMICOLON>transform-rotate:45 + OUTPUT_FILENAME actions-transform-rotate.png + REFERENCE_FILENAME actions-transform-rotate_expected.png) + +# transform-scale +add_cli_test(actions-transform-grow INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_1$<SEMICOLON>transform-grow:10 + OUTPUT_FILENAME actions-transform-grow.png + REFERENCE_FILENAME actions-transform-grow_expected.png) + +# transform-translate +add_cli_test(actions-transform-translate INPUT_FILENAME pyramids.svg + PARAMETERS --actions=select-by-id:quad_snapped_1$<SEMICOLON>transform-translate:-5,-5 + OUTPUT_FILENAME actions-transform-translate.png + REFERENCE_FILENAME actions-transform-translate_expected.png) + +# unselect: it is deprecated +# unselect-by-id +# Failed because of https://gitlab.com/inkscape/inkscape/-/issues/1565 +# add_cli_test(actions-unselect-by-id INPUT_FILENAME path.svg PARAMETERS --actions=select-by-element:path$<SEMICOLON>unselect-by-id:heart,bottom-left-corner,square,top-right-corner,arc-big,arc-small,gates$<SEMICOLON>select-list +# PASS_FOR_OUTPUT "^cross .+$") + +# user-data-directory: test = user-data-directory +add_cli_test(actions-user-data-directory PARAMETERS --actions=user-data-directory ENVIRONMENT unset PASS_FOR_OUTPUT "inkscape\n$") + +# vacuum-defs +# window-close +# window-open + +# tests x/y values are not swapped in tspans. +add_cli_test(action_test_multiline_anchoring + INPUT_FILENAME multiline-anchoring.svg + PARAMETERS --actions=select-by-id:grouped_text$<SEMICOLON>transform-translate:10,0$<SEMICOLON>transform-translate:-10,0$<SEMICOLON>export-filename:multiline-anchoring_out.svg$<SEMICOLON>export-plain-svg$<SEMICOLON>export-do + EXPECTED_FILES multiline-anchoring_out.svg + TEST_SCRIPT match_regex_fail.sh multiline-anchoring_out.svg "(x=\"[3-9][0-9]{2}\")|(x=\"[12][0-9]{3}\")|(y=\"[0-9]{2}\")|(y=\"1[0-9]{2}\")") + +########################### +### file format support ### +########################### + +# librevenge formats +if(WITH_LIBCDR) + # add_cli_test(import_cdr PARAMETERS --export-type=png # fails to open (regression in libcdr 1.6.0) + # INPUT_FILENAME librevenge_formats/corel_draw.cdr OUTPUT_FILENAME format_corel_draw.png + # REFERENCE_FILENAME librevenge_formats/corel_draw_expected.png) # check png size is correct + add_cli_test(import_cdr2 PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/corel_draw2.cdr OUTPUT_FILENAME format_corel_draw2.png + REFERENCE_FILENAME librevenge_formats/corel_draw2_expected.png) +endif() +if(WITH_LIBVISIO) + add_cli_test(import_vsd PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/visio.vsd OUTPUT_FILENAME format_visio.vsd.png + REFERENCE_FILENAME librevenge_formats/visio.vsd_expected.png) + add_cli_test(import_vsdx PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/visio.vsdx OUTPUT_FILENAME format_visio.vsdx.png + REFERENCE_FILENAME librevenge_formats/visio.vsdx_expected.png) +endif() +if(WITH_LIBWPG) + add_cli_test(import_wpg PARAMETERS --export-type=png + INPUT_FILENAME librevenge_formats/word_perfect.wpg OUTPUT_FILENAME format_word_perfect.png + REFERENCE_FILENAME librevenge_formats/word_perfect_expected.png) +endif() + + + +############################## +### advanced functionality ### +############################## + +# check whether INKSCAPE_DATADIR / INKSCAPE_PROFILE_DIR environment variables work +# TODO: INKSCAPE_PROFILE_DIR does not seem to be sanitized at all (i.e. is used verbatim by Inkscape) +set(fancy_dir "i_certainly_do_not_exist") +file(TO_NATIVE_PATH "${fancy_dir}/inkscape" expected_dir) +string(REPLACE "\\" "\\\\" expected_dir "${expected_dir}") +add_cli_test(inkscape_datadir PARAMETERS --system-data-directory + ENVIRONMENT INKSCAPE_DATADIR=${fancy_dir} + PASS_FOR_OUTPUT "${expected_dir}\n$") +add_cli_test(inkscape_profile_dir PARAMETERS --user-data-directory + ENVIRONMENT INKSCAPE_PROFILE_DIR=${fancy_dir}/inkscape + PASS_FOR_OUTPUT "${fancy_dir}/inkscape\n$") +add_cli_test(inkscape_profile_dir_handle_illegal + ENVIRONMENT INKSCAPE_PROFILE_DIR=invalid:dir + INPUT_FILENAME empty.svg OUTPUT_FILENAME empty.svg) + +# check if "systemLanguage" attribute is properly handled +add_cli_test(systemLanguage_en ENVIRONMENT LANGUAGE=en INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_en.png + REFERENCE_FILENAME systemLanguage_en.png) +add_cli_test(systemLanguage_fr ENVIRONMENT LANGUAGE=fr_FR INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_fr.png + REFERENCE_FILENAME systemLanguage_fr.png) +add_cli_test(systemLanguage_fr2 ENVIRONMENT LANGUAGE=fr_FR.UTF-8 INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_fr2.png + REFERENCE_FILENAME systemLanguage_fr.png) +add_cli_test(systemLanguage_de ENVIRONMENT LANGUAGE=de INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_de.png + REFERENCE_FILENAME systemLanguage_de.png) +add_cli_test(systemLanguage_de-CH ENVIRONMENT LANGUAGE=de_CH INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_de-CH.png + REFERENCE_FILENAME systemLanguage_de.png) +add_cli_test(systemLanguage_pt ENVIRONMENT LANGUAGE=pt INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_pt.png + REFERENCE_FILENAME systemLanguage_pt.png) +add_cli_test(systemLanguage_xy ENVIRONMENT LANGUAGE=xy INPUT_FILENAME systemLanguage.svg + OUTPUT_FILENAME systemLanguage_xy.png + REFERENCE_FILENAME systemLanguage_default.png) +add_cli_test(systemLanguage_fr_RDF ENVIRONMENT LANGUAGE=xy INPUT_FILENAME systemLanguage_RDF.svg + OUTPUT_FILENAME systemLanguage_fr_RDF.png + REFERENCE_FILENAME systemLanguage_fr.png) diff --git a/testfiles/cli_tests/check_output.sh b/testfiles/cli_tests/check_output.sh new file mode 100644 index 0000000..06da1fa --- /dev/null +++ b/testfiles/cli_tests/check_output.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +command -v convert >/dev/null 2>&1 || { echo >&2 "I require ImageMagick's 'convert' but it's not installed. Aborting."; exit 1; } +command -v compare >/dev/null 2>&1 || { echo >&2 "I require ImageMagick's 'compare' but it's not installed. Aborting."; exit 1; } + +OUTPUT_FILENAME=$1 +REFERENCE_FILENAME=$2 +EXPECTED_FILES=$3 +TEST_SCRIPT=$4 + +# check if expected files exist +for file in ${EXPECTED_FILES}; do + test -f "${file}" || { echo "Error: Expected file '${file}' not found."; exit 1; } +done + +# if reference file is given check if input files exist and continue with comparison +if [ -n "${REFERENCE_FILENAME}" ]; then + if [ ! -f "${OUTPUT_FILENAME}" ]; then + echo "Error: Test file '${OUTPUT_FILENAME}' not found." + exit 1 + fi + if [ ! -f "${REFERENCE_FILENAME}" ]; then + echo "Error: Reference file '${REFERENCE_FILENAME}' not found." + exit 1 + fi + + # convert testfile and reference file to PNG format + # - use internal MSVG delegate in SVG conversions for reproducibility reasons (avoid inkscape or rsvg delegates) + [ "${OUTPUT_FILENAME##*.}" = "svg" ] && delegate1=MSVG: + [ "${REFERENCE_FILENAME##*.}" = "svg" ] && delegate2=MSVG: + if ! convert ${delegate1}${OUTPUT_FILENAME} ${OUTPUT_FILENAME}.png; then + echo "Warning: Failed to convert test file '${OUTPUT_FILENAME}' to PNG format. Skipping comparison test." + exit 42 + fi + if ! convert ${delegate2}${REFERENCE_FILENAME} ${OUTPUT_FILENAME}_reference.png; then + echo "Warning: Failed to convert reference file '${REFERENCE_FILENAME}' to PNG format. Skipping comparison test." + exit 42 + fi + + # compare files + if ! compare -metric AE ${OUTPUT_FILENAME}.png ${OUTPUT_FILENAME}_reference.png ${OUTPUT_FILENAME}_compare.png; then + echo && echo "Error: Comparison failed." + exit 1 + fi +fi + +# if additional test file is specified, check existence and execute the command +if [ -n "${TEST_SCRIPT}" ]; then + script=${TEST_SCRIPT%%;*} + arguments=${TEST_SCRIPT#*;} + IFS_OLD=$IFS IFS=';' arguments_array=($arguments) IFS=$IFS_OLD + + if [ ! -f "${script}" ]; then + echo "Error: Additional test script file '${script}' not found." + exit 1 + fi + + case ${script} in + *.py) + interpreter=python3 + ;; + *) + interpreter=sh + ;; + esac + + if ! $interpreter ${script} "${arguments_array[@]}"; then + echo "Error: Additional test script failed." + echo "Full call: $interpreter ${script} $(printf "\"%s\" " "${arguments_array[@]}")" + exit 1 + fi +fi + +# cleanup +for file in ${OUTPUT_FILENAME}{,.png,_reference.png,_compare.png} ${EXPECTED_FILES}; do + rm -f ${file} +done diff --git a/testfiles/cli_tests/compare.sh b/testfiles/cli_tests/compare.sh new file mode 100644 index 0000000..e928da3 --- /dev/null +++ b/testfiles/cli_tests/compare.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +file1=$1 +file2=$2 + +test -f "${file1}" || { echo "compare.sh: First file '${file1}' not found."; exit 1; } +test -f "${file2}" || { echo "compare.sh: Second file '${file2}' not found."; exit 1; } + +if ! cmp "${file1}" "${file2}"; then + echo "compare.sh: Files '${file1}' and '${file2}' are not identical'." + exit 1 +fi diff --git a/testfiles/cli_tests/identify.sh b/testfiles/cli_tests/identify.sh new file mode 100644 index 0000000..57bacb7 --- /dev/null +++ b/testfiles/cli_tests/identify.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +file1=$1 +PATTERN='$2' + +test -f "${file1}" || { echo "identify.sh: File '${file1}' not found."; exit 1; } +if ! $(identify "${file1}" | grep -q -e ${PATTERN} - ); then + echo "expected $2 but got" `identify "${file1}"` + exit 1 +fi diff --git a/testfiles/cli_tests/match_regex.sh b/testfiles/cli_tests/match_regex.sh new file mode 100644 index 0000000..24a6347 --- /dev/null +++ b/testfiles/cli_tests/match_regex.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +testfile=$1 +regex=$2 + +test -f "${testfile}" || { echo "match_regex.sh: testfile '${testfile}' not found."; exit 1; } +test -n "${regex}" || { echo "match_regex.sh: no regex to match spoecified."; exit 1; } + +if ! grep -E "${regex}" "${testfile}"; then + echo "match_regex.sh: regex '${regex}' does not match in testfile '${testfile}'." + exit 1 +fi diff --git a/testfiles/cli_tests/match_regex_fail.sh b/testfiles/cli_tests/match_regex_fail.sh new file mode 100644 index 0000000..b6abca8 --- /dev/null +++ b/testfiles/cli_tests/match_regex_fail.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +testfile=$1 +regex=$2 + +test -f "${testfile}" || { echo "match_regex.sh: testfile '${testfile}' not found."; exit 1; } +test -n "${regex}" || { echo "match_regex.sh: no regex to match spoecified."; exit 1; } + +if grep -E "${regex}" "${testfile}"; then + echo "match_regex.sh: regex '${regex}' matches in testfile '${testfile}'." + exit 1 +fi diff --git a/testfiles/cli_tests/testcases/actions-file-open_expected.png b/testfiles/cli_tests/testcases/actions-file-open_expected.png Binary files differnew file mode 100644 index 0000000..c030bb6 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-file-open_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-align_expected.png b/testfiles/cli_tests/testcases/actions-object-align_expected.png Binary files differnew file mode 100644 index 0000000..e836df8 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-align_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-distribute_expected.png b/testfiles/cli_tests/testcases/actions-object-distribute_expected.png Binary files differnew file mode 100644 index 0000000..c20de15 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-distribute_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png b/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png Binary files differnew file mode 100644 index 0000000..c4ce8d3 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-set-attribute_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png b/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png Binary files differnew file mode 100644 index 0000000..4b0f4e2 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-simplify-path_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png b/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png Binary files differnew file mode 100644 index 0000000..23ebe57 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-stroke-to-path_expected.png diff --git a/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png b/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png Binary files differnew file mode 100644 index 0000000..9ad52b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-object-unlink-clones_expected.png diff --git a/testfiles/cli_tests/testcases/actions-open-page_expected.png b/testfiles/cli_tests/testcases/actions-open-page_expected.png Binary files differnew file mode 100644 index 0000000..301804f --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-open-page_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-grow_expected.png b/testfiles/cli_tests/testcases/actions-transform-grow_expected.png Binary files differnew file mode 100644 index 0000000..4bcf5aa --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-grow_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-remove_expected.png b/testfiles/cli_tests/testcases/actions-transform-remove_expected.png Binary files differnew file mode 100644 index 0000000..f0cbc56 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-remove_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png b/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png Binary files differnew file mode 100644 index 0000000..ce66cc6 --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-rotate_expected.png diff --git a/testfiles/cli_tests/testcases/actions-transform-translate_expected.png b/testfiles/cli_tests/testcases/actions-transform-translate_expected.png Binary files differnew file mode 100644 index 0000000..ef3c5ad --- /dev/null +++ b/testfiles/cli_tests/testcases/actions-transform-translate_expected.png diff --git a/testfiles/cli_tests/testcases/areas.svg b/testfiles/cli_tests/testcases/areas.svg new file mode 100644 index 0000000..b07a5b5 --- /dev/null +++ b/testfiles/cli_tests/testcases/areas.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="120mm" height="105mm" version="1.1" viewBox="0 0 120 105" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg"> + <rect x="15" y="15" width="50" height="30" rx="5" fill="royalblue" /> + <path id="MyStar" d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" fill="red" stroke-width="1.5" stroke="purple" /> + <rect x="29" y="21" width="53" height="53" fill="yellow" fill-opacity="0.7" /> + <path d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z" fill="green" stroke-width="1" stroke="black" /> + <rect id="MyRect" x="24.5" y="18.5" width="70" height="60" fill="none" inkscape:export-ydpi="600" inkscape:export-xdpi="600" inkscape:export-filename="export-use-hints.png" + /> +</svg> diff --git a/testfiles/cli_tests/testcases/empty.svg b/testfiles/cli_tests/testcases/empty.svg new file mode 100644 index 0000000..b1010c3 --- /dev/null +++ b/testfiles/cli_tests/testcases/empty.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px"> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.emf b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf Binary files differnew file mode 100644 index 0000000..5f64188 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.eps b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps new file mode 100644 index 0000000..f225577 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps @@ -0,0 +1,443 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:52:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 248 206 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 248 206 +%%EndPageSetup +q 0 0 248 206 rectclip +1 0 0 -1 0 206 cm q +0.254902 0.411765 0.882353 rg +14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867 + l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039 + 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h +14.172 0 m f +1 0 0 rg +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m S Q +0 0.501961 0 rg +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m S Q +Q q +39 17 151 151 re W n +q +39 17 151 151 re W n +% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 39 168.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(", + UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k' + OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI + JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k! + SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+ + UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_ + D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX? + $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr + 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$ + l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6 + ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^ + m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk + Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU + &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp + @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@ + j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@ + Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N + Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!': + \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5 + (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf + fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe + `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\ + qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h + ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[ + /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m + 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K + nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;- + 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo + Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s + %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY + Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl + _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/- + $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE + +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW + +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t" + n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR. + k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6 + i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k + d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>. + jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT + DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_ + 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q: + VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr + _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK' + q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm + !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g] + l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f + m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"' + f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG + k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V + mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*! + 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4 + FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N + ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T + A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ= + d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG + iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8 + 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU + tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY + #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F) + =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg + c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1 + <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO) + g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd + %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*! + `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX + '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W"; + 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K + >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM + n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs + 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY + Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn + 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ + I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_" + :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X + $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I= + &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9) + \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP + cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[ + IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88 + =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm + ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^ + OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0 + j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk + \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t; + ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ + 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK` + r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh + E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF + Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l + \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@ + 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc + 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$ + DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc + C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK + 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp> + :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/ + <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE> + s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls + q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D + :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn + 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB + jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@: + <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD + i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7 + 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/ + HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o + `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e + L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG + n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R: + 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5 + PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0 + $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om + GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_ + q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg + !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85' + XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6 + l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$ + om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I + :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y + &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\ + :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\ + i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G + Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru + O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83 + !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT + \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp + FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m + 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg + (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7 + 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H + R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U + ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3 + Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0 + dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7 + Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88 + FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^# + l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY + .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB + /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2# + l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=] + XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ + >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC: + -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ + eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ + UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4 + _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR + Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M + /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ + 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f + =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2 + i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/ + J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM + :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga + B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f + _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4 + epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^ + RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%! + bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a + sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ) + :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY + ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V + _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7- + %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM + F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1 + _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe + Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns + #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR- + U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO + 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q* + WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH + @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]? + %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$ + XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C + /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k" + R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_ + Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8 + Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU + 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no + jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL + Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje + QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l + sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N& + fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY + \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t + heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*< + V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@ + X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\ + GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\ + C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ + 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB]. + b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo + _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r= + %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6 + ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+; + BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh + C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,: + `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX + 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j + =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3 + IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z- + nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($ + BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[ + @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY( + fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4 + ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP + Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1 + uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E + A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM + f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck + KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^ + ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g) + L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7 + n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p + S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts- + k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob + :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM + ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0 + 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+ + (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3 + X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/ + !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo + bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7: + hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6 + \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R, + ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R' + G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R + 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB + LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H + OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o + aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T + VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_? + ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G + Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f. + .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e' + $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI + 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/ + 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?. + RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o + .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c + JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I' + G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr' + U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]* + =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82 + d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$ + aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?* + nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=* + ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0 + 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q' + !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI + >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6# + *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o + u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@ + X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi- + "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr& + TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+ + 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]? + 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c + /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH + *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R + q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ + Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#) + LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/ + "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N + a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U + ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o + 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B + 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\ + *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9 + )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE + 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN + B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\ + r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da + 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t + ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5 + YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch + ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk + )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY + DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_ + 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n + .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW + ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4 + DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I + %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc + 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO> + e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[? + kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00: + 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z + hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9 + DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n + `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4 + KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9 + CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+ + h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l + LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur + dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9 + m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P + N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq + e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or + =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr* + YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@ + &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX- + ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16 + ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr* + i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch + ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_ + W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq + :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o* + *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$ + O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL + GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29 + E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0 + 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..17e19ec --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.png b/testfiles/cli_tests/testcases/export-area-drawing_expected.png Binary files differnew file mode 100644 index 0000000..8c8ef62 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.ps b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps new file mode 100644 index 0000000..130815e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps @@ -0,0 +1,480 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:52:48 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 87x72mm 248 206 0 () () +%%BoundingBox: 0 0 248 206 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 87x72mm +%%PageBoundingBox: 0 0 248 206 +248 206 cairo_set_page_size +%%EndPageSetup +q 0 0 248 206 rectclip +1 0 0 -1 0 206 cm q +0.254902 0.411765 0.882353 rg +14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867 + l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039 + 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h +14.172 0 m f +1 0 0 rg +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l +77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84 + 48.395 l 210.449 103.418 l h +243.668 152.23 m S Q +0 0.501961 0 rg +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016 +204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195 + 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h +116.219 153.07 m S Q +Q q +39 17 151 151 re W n +q +39 17 151 151 re W n +% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 39 168.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(", + UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k' + OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI + JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k! + SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+ + UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_ + D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX? + $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr + 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$ + l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6 + ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^ + m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk + Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU + &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp + @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@ + j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@ + Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N + Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!': + \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5 + (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf + fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe + `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\ + qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h + ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[ + /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m + 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K + nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;- + 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo + Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s + %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY + Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl + _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/- + $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE + +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW + +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t" + n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR. + k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6 + i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k + d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>. + jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT + DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_ + 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q: + VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr + _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK' + q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm + !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g] + l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f + m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"' + f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG + k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V + mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*! + 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4 + FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N + ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T + A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ= + d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG + iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8 + 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU + tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY + #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F) + =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg + c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1 + <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO) + g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd + %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*! + `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX + '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W"; + 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K + >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM + n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs + 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY + Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn + 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ + I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_" + :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X + $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I= + &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9) + \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP + cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[ + IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88 + =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm + ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^ + OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0 + j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk + \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t; + ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ + 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK` + r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh + E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF + Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l + \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@ + 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc + 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$ + DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc + C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK + 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp> + :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/ + <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE> + s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls + q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D + :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn + 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB + jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@: + <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD + i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7 + 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/ + HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o + `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e + L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG + n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R: + 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5 + PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0 + $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om + GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_ + q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg + !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85' + XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6 + l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$ + om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I + :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y + &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\ + :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\ + i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G + Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru + O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83 + !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT + \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp + FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m + 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg + (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7 + 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H + R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U + ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3 + Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0 + dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7 + Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88 + FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^# + l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY + .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB + /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2# + l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=] + XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ + >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC: + -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ + eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ + UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4 + _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR + Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M + /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ + 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f + =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2 + i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/ + J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM + :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga + B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f + _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4 + epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^ + RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%! + bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a + sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ) + :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY + ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V + _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7- + %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM + F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1 + _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe + Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns + #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR- + U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO + 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q* + WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH + @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]? + %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$ + XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C + /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k" + R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_ + Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8 + Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU + 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no + jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL + Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje + QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l + sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N& + fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY + \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t + heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*< + V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@ + X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\ + GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\ + C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ + 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB]. + b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo + _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r= + %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6 + ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+; + BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh + C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,: + `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX + 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j + =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3 + IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z- + nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($ + BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[ + @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY( + fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4 + ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP + Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1 + uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E + A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM + f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck + KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^ + ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g) + L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7 + n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p + S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts- + k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob + :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM + ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0 + 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+ + (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3 + X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/ + !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo + bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7: + hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6 + \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R, + ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R' + G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R + 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB + LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H + OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o + aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T + VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_? + ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G + Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f. + .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e' + $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI + 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/ + 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?. + RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o + .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c + JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I' + G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr' + U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]* + =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82 + d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$ + aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?* + nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=* + ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0 + 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q' + !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI + >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6# + *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o + u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@ + X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi- + "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr& + TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+ + 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]? + 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c + /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH + *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R + q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ + Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#) + LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/ + "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N + a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U + ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o + 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B + 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\ + *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9 + )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE + 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN + B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\ + r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da + 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t + ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5 + YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch + ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk + )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY + DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_ + 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n + .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW + ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4 + DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I + %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc + 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO> + e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[? + kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00: + 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z + hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9 + DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n + `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4 + KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9 + CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+ + h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l + LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur + dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9 + m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P + N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq + e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or + =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr* + YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@ + &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX- + ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16 + ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr* + i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch + ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_ + W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq + :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o* + *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$ + O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL + GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29 + E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0 + 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.svg b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg new file mode 100644 index 0000000..4c5abe8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="87.435127mm" + height="72.5mm" + version="1.1" + viewBox="0 0 87.435127 72.5" + id="svg10" + sodipodi:docname="areas.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs14" /> + <sodipodi:namedview + id="namedview12" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:document-units="mm" /> + <rect + x="0" + y="0" + width="50" + height="30" + rx="5" + fill="#4169e1" + id="rect2" /> + <path + id="MyStar" + d="m 85.96,53.703 -20.799,-1.1756 -12.76,16.461 -5.3089,-20.138 -19.604,-7.0445 17.518,-11.27 0.64404,-20.815 16.136,13.172 20.002,-5.8198 -7.5458,19.411 z" + fill="#ff0000" + stroke-width="1.5" + stroke="#800080" /> + <rect + x="14" + y="6" + width="53" + height="53" + fill="#ffff00" + fill-opacity="0.7" + id="rect5" /> + <path + d="M 41,54 A 18,18 0 0 1 23,72 18,18 0 0 1 5,54 18,18 0 0 1 23,36 18,18 0 0 1 41,54 Z" + fill="#008000" + stroke-width="1" + stroke="#000000" + id="path7" /> + <rect + id="MyRect" + x="9.5" + y="3.5" + width="70" + height="60" + fill="none" + inkscape:export-ydpi="600" + inkscape:export-xdpi="600" + inkscape:export-filename="export-use-hints.png" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..07f7e13 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.emf b/testfiles/cli_tests/testcases/export-area-page_expected.emf Binary files differnew file mode 100644 index 0000000..1a8b98c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.eps b/testfiles/cli_tests/testcases/export-area-page_expected.eps new file mode 100644 index 0000000..acb7604 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.eps @@ -0,0 +1,443 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Mon Mar 2 08:39:48 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 340 298 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 340 298 +%%EndPageSetup +q 42 49 249 207 rectclip +1 0 0 -1 0 298 cm q +0.254902 0.411765 0.882353 rg +56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691 + c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691 + 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52 + 48.84 48.84 42.52 56.691 42.52 c h +56.691 42.52 m f +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +0 0.501961 0 rg +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c S Q +Q q +82 59 151 151 re W n +q +82 59 151 151 re W n +% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 82 210.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng + IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0 + Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ + QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i + pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc + @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C + FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY + YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK + A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5 + ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh + B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\ + ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[ + umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4 + PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY + G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD + )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj + i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g + 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb + BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB + Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p + )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/ + 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS + s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s( + r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+ + &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25 + BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N + ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4 + n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB + 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6 + r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm + ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL + P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N + eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S + E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'> + BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o + =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g + OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I + kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2 + U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK + KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O + M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`' + "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ + '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2 + K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR + $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J + TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[ + IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,! + f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F + YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D + V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G + $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne + BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV + =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS + c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA + 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo + @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS + 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9 + _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0 + FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn + 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH, + HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D + jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G + dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j" + 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_ + <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq + 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z + FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb + ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n + )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$ + +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq + Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X + mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT- + WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U + aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t + 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd& + (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B + N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW + )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7 + p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D + JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!! + Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,& + h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C + Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5 + n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl + &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54 + 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g] + "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r + C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z + tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1? + "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj + V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp + _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8 + osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP( + 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il + ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S + Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U + /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l + R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF + H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg + iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU' + Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T + s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc + sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL + :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i< + "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro< + !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\? + r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]? + ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM + @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^' + ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT + 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc + >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC + 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\ + l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY + e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R + 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D + bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW + :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7 + I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W + PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^, + /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15 + P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l + ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW + s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i + :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0* + =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1 + COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z + FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k] + ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h + ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH + K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5 + !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7( + `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n + c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o + =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.; + &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp + .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F + A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl + 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$ + .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J< + (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g + ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!" + "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[ + qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n + 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN + ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l + 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[ + \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn + G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8 + FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n + eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M + (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+ + \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs + ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<& + ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_ + jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh + aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB + XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX + YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B! + OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<) + rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab + 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s + _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&: + cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk + lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i + e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<< + pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C + l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs + mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH + 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7 + 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f + LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV + I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI + :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r + uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+? + IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV* + XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V + nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C + &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP + ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p + [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U + [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F + igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm + Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V + 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn! + ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a + i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V + k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT + =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um + ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5` + C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+ + sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<= + 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL + P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8 + f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp + Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$ + To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ + %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ + Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X + k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq + >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW + uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9 + \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka! + E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K + go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD: + CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl + o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/ + ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU + >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i + E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d + ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=: + ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n + O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS + -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG + jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.Z]tpO:3Ngi4W,?QLiX& + oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y + \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V + 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7 + miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7 + &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e + GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB + N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF + L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7 + S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X + F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX + <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F + RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R + 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B + Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW% + T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm + <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r + `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF + f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\ + 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D + JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB + K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY + N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2 + +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\ + 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d + ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn + cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY + -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb + A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82 + PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ + T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q + !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ + :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB + dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra + V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn + NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J + HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i + @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM + 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U + 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S + ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O + "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL + _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6 + [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d + ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK + "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9 + U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0 + :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<: + L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K + J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm + &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3 + ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W` + MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s + c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S + ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^ + .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O + HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp + f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7 + C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X + =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A + bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E + 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9 + [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS + SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5 + kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc + #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8 + ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7 + qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K + qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN) + 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0 + 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf + <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI + c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4 + c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8 + Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN= + %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]* + 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X + g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V + 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H] + ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K + c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8 + 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM + L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh + g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN' + Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8< + k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z + #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q + umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1 + j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc + NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt' + bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts + s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\ + K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB + ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI + +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U' + Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"& + H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If + `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og + ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig + 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.pdf b/testfiles/cli_tests/testcases/export-area-page_expected.pdf Binary files differnew file mode 100644 index 0000000..4a510aa --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.png b/testfiles/cli_tests/testcases/export-area-page_expected.png Binary files differnew file mode 100644 index 0000000..8bdc9e9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.png diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.ps b/testfiles/cli_tests/testcases/export-area-page_expected.ps new file mode 100644 index 0000000..ce348be --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.ps @@ -0,0 +1,482 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Thu Feb 27 23:59:28 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 120x105mm 340 298 0 () () +%%BoundingBox: 42 49 291 256 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 120x105mm +%%PageBoundingBox: 42 49 291 256 +341 298 cairo_set_page_size +%%EndPageSetup +q 42 49 249 207 rectclip +1 0 0 -1 0 298 cm q +0.254902 0.411765 0.882353 rg +56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691 + c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691 + 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52 + 48.84 48.84 42.52 56.691 42.52 c h +56.691 42.52 m f +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +0 0.501961 0 rg +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h +158.738 195.59 m f +0 g +2.834646 w +q 1 0 0 1 0 0 cm +158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535 + 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715 + 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h +158.738 195.59 m S Q +Q q +82 59 151 151 re W n +q +82 59 151 151 re W n +% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700 +[ 151.2 0 0 -151.2 82 210.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 630 + /Height 630 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 630 0 0 -630 0 630 ] +>> +cairo_image + Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng + IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0 + Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ + QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i + pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc + @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C + FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY + YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK + A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5 + ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh + B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\ + ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[ + umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4 + PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY + G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD + )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj + i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g + 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb + BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB + Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p + )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/ + 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS + s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s( + r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+ + &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25 + BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N + ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4 + n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB + 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6 + r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm + ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL + P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N + eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S + E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'> + BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o + =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g + OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I + kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2 + U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK + KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O + M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`' + "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ + '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2 + K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR + $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J + TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[ + IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,! + f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F + YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D + V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G + $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne + BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV + =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS + c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA + 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo + @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS + 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9 + _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0 + FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn + 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH, + HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D + jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G + dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j" + 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_ + <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq + 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z + FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb + ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n + )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$ + +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq + Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X + mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT- + WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U + aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t + 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd& + (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B + N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW + )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7 + p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D + JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!! + Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,& + h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C + Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5 + n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl + &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54 + 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g] + "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r + C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z + tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1? + "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj + V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp + _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8 + osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP( + 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il + ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S + Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U + /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l + R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF + H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg + iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU' + Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T + s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc + sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL + :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i< + "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro< + !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\? + r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]? + ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM + @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^' + ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT + 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc + >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC + 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\ + l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY + e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R + 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D + bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW + :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7 + I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W + PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^, + /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15 + P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l + ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW + s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i + :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0* + =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1 + COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z + FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k] + ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h + ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH + K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5 + !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7( + `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n + c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o + =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.; + &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp + .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F + A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl + 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$ + .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J< + (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g + ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!" + "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[ + qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n + 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN + ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l + 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[ + \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn + G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8 + FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n + eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M + (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+ + \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs + ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<& + ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_ + jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh + aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB + XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX + YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B! + OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<) + rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab + 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s + _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&: + cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk + lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i + e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<< + pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C + l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs + mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH + 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7 + 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f + LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV + I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI + :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r + uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+? + IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV* + XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V + nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C + &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP + ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p + [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U + [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F + igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm + Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V + 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn! + ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a + i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V + k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT + =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um + ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5` + C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+ + sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<= + 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL + P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8 + f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp + Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$ + To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ + %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ + Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X + k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq + >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW + uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9 + \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka! + E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K + go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD: + CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl + o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/ + ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU + >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i + E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d + ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=: + ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n + O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS + -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG + jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.Z]tpO:3Ngi4W,?QLiX& + oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y + \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V + 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7 + miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7 + &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e + GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB + N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF + L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7 + S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X + F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX + <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F + RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R + 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B + Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW% + T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm + <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r + `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF + f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\ + 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D + JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB + K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY + N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2 + +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\ + 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d + ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn + cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY + -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb + A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82 + PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ + T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q + !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ + :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB + dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra + V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn + NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J + HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i + @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM + 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U + 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S + ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O + "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL + _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6 + [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d + ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK + "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9 + U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0 + :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<: + L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K + J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm + &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3 + ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W` + MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s + c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S + ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^ + .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O + HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp + f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7 + C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X + =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A + bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E + 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9 + [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS + SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5 + kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc + #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8 + ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7 + qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K + qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN) + 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0 + 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf + <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI + c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4 + c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8 + Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN= + %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]* + 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X + g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V + 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H] + ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K + c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8 + 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM + L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh + g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN' + Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8< + k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z + #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q + umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1 + j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc + NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt' + bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts + s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\ + K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB + ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI + +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U' + Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"& + H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If + `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og + ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig + 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.svg b/testfiles/cli_tests/testcases/export-area-page_expected.svg new file mode 100644 index 0000000..ecdc717 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + width="120mm" + height="105mm" + version="1.1" + viewBox="0 0 120 105" + id="svg10"> + <metadata + id="metadata16"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs14" /> + <rect + x="15" + y="15" + width="50" + height="30" + rx="5" + fill="royalblue" + id="rect2" /> + <path + id="MyStar" + d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" + fill="red" + stroke-width="1.5" + stroke="purple" /> + <rect + x="29" + y="21" + width="53" + height="53" + fill="yellow" + fill-opacity="0.7" + id="rect5" /> + <path + d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z" + fill="green" + stroke-width="1" + stroke="black" + id="path7" /> + <rect + id="MyRect" + x="24.5" + y="18.5" + width="70" + height="60" + fill="none" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.wmf b/testfiles/cli_tests/testcases/export-area-page_expected.wmf Binary files differnew file mode 100644 index 0000000..92421b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.pdf b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf new file mode 100644 index 0000000..c567930 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf @@ -0,0 +1,69 @@ +%PDF-1.5 +%µí®û +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xœe=NA…{Ÿâ] ÆöüxÜÒDB¢XZDˆ”%ÅBÁõã4hdëé³ý<VH¾ƒf²pîÅ}8>n´’ÎÒ×ï‚ó7 7ÑèÿÊ—#*[Kø!ÁSÆ'½¾e‡àDÏX±í9mtÖ1 QÙn0sÎH \uà:•´€•Áâ“xg‘–„Ô„kIÔ³ÙÊlʵ‘ÄâoL9Ì°¼&0Í#;T<WMà•KB¤ñNšñvÖÆQ6—Ëÿ??b¡…îšÒ?a +endstream +endobj +5 0 obj + 197 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 340.157471 297.637787 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /Creator <FEFF0049006E006B0073006300610070006500200031002E0031002D0064006500760020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029> + /CreationDate (D:20200404202009+02'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000615 00000 n +0000000383 00000 n +0000000311 00000 n +0000000015 00000 n +0000000289 00000 n +0000000680 00000 n +0000000971 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +1023 +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.png b/testfiles/cli_tests/testcases/export-area-page_export-id.png Binary files differnew file mode 100644 index 0000000..6bf9b04 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.png diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.ps b/testfiles/cli_tests/testcases/export-area-page_export-id.ps new file mode 100644 index 0000000..6de42c9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.ps @@ -0,0 +1,130 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 04 20:20:10 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 120x105mm 340 298 0 () () +%%BoundingBox: 115 55 291 233 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 120x105mm +%%PageBoundingBox: 115 55 291 233 +341 298 cairo_set_page_size +%%EndPageSetup +q 115 55 176 178 rectclip +1 0 0 -1 0 298 cm q +1 0 0 rg +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m f +0.501961 0 0.501961 rg +4.251969 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l +120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359 + 90.914 l 252.969 145.938 l h +286.188 194.75 m S Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.svg b/testfiles/cli_tests/testcases/export-area-page_export-id.svg new file mode 100644 index 0000000..9fb1575 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-page_export-id.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="areas.svg" + id="svg12" + viewBox="0 0 120 105" + version="1.1" + height="105mm" + width="120mm"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <g + id="g10" + transform="scale(2)"> + <path + stroke="purple" + stroke-width="1.5" + fill="red" + d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" + id="MyStar" + transform="scale(0.5)" /> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/export-area-snap_expected.png b/testfiles/cli_tests/testcases/export-area-snap_expected.png Binary files differnew file mode 100644 index 0000000..f35894b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area-snap_expected.png diff --git a/testfiles/cli_tests/testcases/export-area_expected.png b/testfiles/cli_tests/testcases/export-area_expected.png Binary files differnew file mode 100644 index 0000000..c9ded26 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-area_expected.png diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.eps b/testfiles/cli_tests/testcases/export-background-opacity_expected.eps new file mode 100644 index 0000000..4f5eb82 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 20:06:29 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0.5 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf b/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf Binary files differnew file mode 100644 index 0000000..26bdf75 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.png b/testfiles/cli_tests/testcases/export-background-opacity_expected.png Binary files differnew file mode 100644 index 0000000..9c19536 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.png diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.ps b/testfiles/cli_tests/testcases/export-background-opacity_expected.ps new file mode 100644 index 0000000..0afec8e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 20:07:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0.5 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background-opacity_expected.svg b/testfiles/cli_tests/testcases/export-background-opacity_expected.svg new file mode 100644 index 0000000..e478c6f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background-opacity_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda.svg" + id="svg5" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview7" + pagecolor="yellow" + inkscape:pageopacity="0.5" + inkscape:pagecheckerboard="true" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-background_expected.emf b/testfiles/cli_tests/testcases/export-background_expected.emf Binary files differnew file mode 100644 index 0000000..6263304 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.emf diff --git a/testfiles/cli_tests/testcases/export-background_expected.eps b/testfiles/cli_tests/testcases/export-background_expected.eps new file mode 100644 index 0000000..f58830e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:29:54 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background_expected.pdf b/testfiles/cli_tests/testcases/export-background_expected.pdf Binary files differnew file mode 100644 index 0000000..a5887b7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-background_expected.png b/testfiles/cli_tests/testcases/export-background_expected.png Binary files differnew file mode 100644 index 0000000..1a3a34f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.png diff --git a/testfiles/cli_tests/testcases/export-background_expected.ps b/testfiles/cli_tests/testcases/export-background_expected.ps new file mode 100644 index 0000000..5055f6b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:30:09 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 1 0 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-background_expected.svg b/testfiles/cli_tests/testcases/export-background_expected.svg new file mode 100644 index 0000000..7e49fab --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda-background.svg" + id="svg7" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview2" + pagecolor="yellow" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-background_expected.wmf b/testfiles/cli_tests/testcases/export-background_expected.wmf Binary files differnew file mode 100644 index 0000000..3a6d0f4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-background_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.eps b/testfiles/cli_tests/testcases/export-default-background_expected.eps new file mode 100644 index 0000000..6aca4538 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:05:42 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 75 +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 0.814948 0.847259 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.pdf b/testfiles/cli_tests/testcases/export-default-background_expected.pdf new file mode 100644 index 0000000..720134d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.pdf @@ -0,0 +1,70 @@ +%PDF-1.5 +%µí®û +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xœmÌÁ €0Ð{§ÈÖ¤šÆŽá"Ú“ëþ`’¼È‡Oà?B€š´„a¿ÂôŽÂ©Ì~”Œ²@«0nõ ƉRdóí€Ó¼Æu1‰Î_¹R©dêØüQ@6ÿ~Yôð$Í +endstream +endobj +5 0 obj + 102 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 0.74902 /ca 0.74902 >> + /a1 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 112.5 75 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.15.10 (http://cairographics.org)) + /Creator <FEFF0049006E006B0073006300610070006500200031002E00300072006300310020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029> + /CreationDate (D:20200411190529+02'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000547 00000 n +0000000328 00000 n +0000000216 00000 n +0000000015 00000 n +0000000194 00000 n +0000000612 00000 n +0000000899 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +951 +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.png b/testfiles/cli_tests/testcases/export-default-background_expected.png Binary files differnew file mode 100644 index 0000000..bd530a8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.png diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.ps b/testfiles/cli_tests/testcases/export-default-background_expected.ps new file mode 100644 index 0000000..2ea710b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.ps @@ -0,0 +1,123 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 11 19:05:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x26mm 113 75 0 () () +%%BoundingBox: 0 0 113 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x26mm +%%PageBoundingBox: 0 0 113 75 +113 75 cairo_set_page_size +%%EndPageSetup +q 0 0 113 75 rectclip +1 0 0 -1 0 75 cm q +1 0.814948 0.847259 rg +0 0 112.5 75 re f +1 0 0 rg +0 37.5 37.5 37.5 re f +0 0.501961 0 rg +37.5 0 37.5 37.5 re f +0 0 1 rg +75 37.5 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-default-background_expected.svg b/testfiles/cli_tests/testcases/export-default-background_expected.svg new file mode 100644 index 0000000..9f328c2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-default-background_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="lambda-background.svg" + id="svg7" + version="1.1" + height="100" + width="150"> + <metadata + id="metadata11"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs9" /> + <sodipodi:namedview + id="namedview2" + pagecolor="pink" + inkscape:pageopacity="0.75" + inkscape:pagecheckerboard="true" /> + <rect + id="red" + fill="red" + height="50" + width="50" + y="50" + x="0" /> + <rect + id="green" + fill="green" + height="50" + width="50" + y="0" + x="50" /> + <rect + id="blue" + fill="blue" + height="50" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.eps b/testfiles/cli_tests/testcases/export-dpi_expected.eps new file mode 100644 index 0000000..c86b4ed --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.eps @@ -0,0 +1,272 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Thu Mar 5 09:46:17 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 1 173 92 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 1 173 92 +%%EndPageSetup +q 0 1 173 91 rectclip +1 0 0 -1 0 93 cm q +0.9 0.950196 0.9 rg +90 46.5 m 90 71.352 69.852 91.5 45 91.5 c 20.148 91.5 0 71.352 0 46.5 c + 0 21.648 20.148 1.5 45 1.5 c 69.852 1.5 90 21.648 90 46.5 c h +90 46.5 m f +0 0.501961 0 rg +82.5 46.5 m 82.5 67.211 65.711 84 45 84 c 24.289 84 7.5 67.211 7.5 46.5 + c 7.5 25.789 24.289 9 45 9 c 65.711 9 82.5 25.789 82.5 46.5 c h +82.5 46.5 m f +Q q +81 1 92 91 re W n +q +81 1 92 91 re W n +% Fallback Image: x=81 y=1 w=92 h=91 res=300ppi size=437760 +[ 92.16 0 0 -91.2 81 92.2 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 384 + /Height 380 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 384 0 0 -380 0 380 ] +>> +cairo_image + Gb"0WH$n-7S]>_85[9ZQO@)YU%>]^W[&XK"U[)Z!CXq7KgMM)8?pR2Z=ug-('?D1,EY-)"m + Mg0g&-<.`+TV^4mZ9^%0Y*C8*&Ee2mO+"[]"='Jr'%k;hjNB7hiHC,5C]EO4QefMK\p/:MI + @?V@2O`-hl``\UV4")?ZTGXcCe[EeSD3hW[aJgR;&*HA_OG1>regc.qm,pl0_Pb/!s<q=4a + k2nS;iW0m4CnS_WEf]i0rJIdgfI5Ip\83Z;0@)YK)[)Y=Kr54P%_kfO7u$]>p\3-AN#^8Rj + $KNW;CEJ:Qi\ttiu<HD0(Yt<iUk6HJj$^k9!d-67@cZfBX,JfcBFB@6obkHme6^1jT(ci)p + #?/n*&,^uCR&IhCp]H"";1h+&#QA,*#(PPAr4tc1rkKWNK8CNEJNrW/'/fOeJ)ChaC@DK-^ + `Q8"i",a:5FACc+8>qf0N!Hen-Ar#U'?,*&,a73%K=-bpk+DAr..*%#88ui"+T5>->N#Trk + KULeDLl8JNoO#_&rFSIkX`P5O\pW@%mjTi",b%7*TcMd2KCacO*rH72%U(W49*7L)PqB)bZ + T]5FNon9kt1o,,i&S=WW&Ri"'E3laYj"f$VKukbrF%VZR>T\jDgfXAiEHXJE,^DZ*jih7)> + $=0=-Ajh>=fUQ4t[D/3^;o8bKl5'qA`@lp7#S!o>]S6Ck'o^'Z%b0I!/iKRQ;)j1kT1umf) + b[])E3-I:[nA^-@lf6U#^EC3!nJg&L?aDS8l*?[fSEL<Pa*bT`G553P^Z+mPZ[^YUBsZ\S5 + G+u?S@l%M8**5eQR!rE,Vl,n=f&9!UXO1^C9"#[*BO$P?b+lPg-n4ND/6HP@q[gboK"1P;m + W1n:@4To9mVO@K2ZAn-K,V[,A:H<53^nY\,6$i'sT9VcZ^"Sh"YC#+$U,2LtTi-++Fpn$+# + ?E$Wis-m<71--/"!9;j('u:2kShr;!tfV,u:a^$%0=lWW.IISY<O?3L'OB+do11X`^D;?#@ + Q]:2[N"UHnF]oXE7e+QH&^o[])2hP/NXsATYXZX)`b;3MN&"UHXC]Q>dj3u(FR1V`#0!+S6 + nK<EC&O@SN+ULRD(CDfL.rHa^4d\0nVBZZMZ,XU%p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p + ]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p] + H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H$(O/Tl:p]H + $(O/Tl:p]H$(O/Tl:p]H$(O/U1^%hg%b`RrW#O!Z*P.Z7;<f($uEqekgH6_p&l+Qu;AWcP5 + P%?Xt5QTokF])>bE[=mejilK*prj\l9F!?*#o0P)G?]6Xqk9QfeI!jXes.)YD^-=IF8#t8, + $p%-O:dJs7/^:D>9faX_6$;"5k@W)tRsQGOa/@`PjLG68frk5@HkcG)r36!e]'d<Hp+bgJC + f0sO\aI4R3p/?a&U-0o=^c_%!E.KN`egj+m-$M1cmabac9EY9Ns8mCI`iXhNK"-C9l3Um<L + GT;0sLneSERf%+aufQ$U(CV&W>f<R56(,`lu5dP+/k#(1#l:Y@jH`qD>Mb>:5C"(rPekO/L + !DN901^G,"`L(OTS7hWK/ZPC+_%$_$h5K>2fo^`1Lf&tOEQpir]_9?o'<C\tO,[qfp2lW6B + Co^Zeh9,gOg#fJqtF`_e_(.-]riX_Sal4*CqL'CDa2I2au/M&h3noc:V1BhFT[.)f`^]",1 + h_Y/Wp)cHdq`I$b37/I1\r@]g3eA#N@CXMM_9R[g\.%?Y4CjiF0P3[XL5pF!4au_lELu2MO + ^n(cp2bE%H"GSXS6k(Jo%FIe?'8G`+j"Rmgu<V41V5+uY9kp33`g>^eN$(k7JrXR_B77Q5P + 9=?r4,gQ.m,aQl?3l>ZNXuC`if6qaksd]qL)u)"/aiKfhM10b_`Jf:Xr<[UR2WZoW74GH45 + !<c>8lkYVGQUT(_G1Q#S"aB'u$HGPBloGJD::h1]uha_jM.jIDF(km0\'ck2'>P$Dm!DK/# + uc9J07rkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN + "+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN" + +N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N]JrkKWN"+N^5/q98`FS + TGEet;1(BMRX7WcP69rd5:TJc-(*q"(_]np!bZJ*--da7j4pr-GM1M9]EVJ+KRmk>*u50m0 + esds_6:3Wa<L)RX:J[*Y=>k5BL5nmb_=Y5#I>s7V4HJ)Jh)rcu?S"f=M+"[5,9k"kaILPZO + !c?%d"J/NG&bal(U%]eE,em;JERd<XZ(s-X*Zt4$qf'M\gY1r0i8?_@Y3t3t#J&g2ZZrhf] + g047fl+Gp,g>9u2%R28!-#n.hR((F:.S4YQFF*-647=2>Nt\(3VJ`"u7ujjGA!me[4D99*J + ,p.m*!c,je5)D,DX8lHZM[>YT8tup`p\a9:HZ2LaX<W]rS<dSHcc:63_IZL0gfu'gjNc..s + ),=9lf>`&*#f3p/L6*9!tLck\4&K>":79Sa:Kk'4dW18]/<`/,;Pm0f*ng8Ghg65+IEO3^U + Tis0Z2SqA#p;NkG&O[V#h,&*Db\n$,TJamsiJZa#Q@las,L1V-,,L]2\[WTU]Q2q`D\SZeU + FkbLfuhK9XcD2dA^0gU,$c`d#Vl<gD=.rHp#<7k#Ldo'\DrnPuYli+;3/g@&T?2%(-'?_hu + -t,L@L=ZsKrp.J:k4G,f^S-E,^!YcQbFkbf/E[f-:fo&.h%:Y0*=)/)Zu+6Lr\%%:Rj'k=Z + YU^k:CfdIM[l3h2G&p87^laZcM+68Z,i+,Tl^JZk9BC#rkKWN,@TF-:kj.GjGUeqp]H$(O+ + _rE:K;HN0`lj_&,^uCO5:tY^9o$]^`W=RIt[Sa[7L-R*r`qsp]H$@rb-Bl$"$\a5O\pW^`U + 9T<*`-;r..*%#Q>#!LXNZti=Gj;5O_1!5F"s.ApkF!J)Ck8JNn2N6T+-Ji=Gj;5O_1!5A#< + g&cTQfp]H$,or#C3g;JI]r..*%#QDg1O6JkF#(PPAr..)<qd\XCc2iFQ&,^uCZMS.k%qWNu + p]H$(NtVGZnd!S3#QDL\pnNp8e]lY6#QDL\p`m_L?@ORBrkKWN"+QR,Vrqtd_]SXUJ)HB.r + _QdN(B2)kp]H#!pnMQOFPMB8?d0aT5ODbUS1-F-+o]-&oPOA5U]1%.rL'p#7[H=G4F\ub&% + EBOVM.7lp95VG,Cc/Ac*EjhjLY@$q=EaB2`Z#QItfonJNpU*%gO3!cI\*%5GSN%dWGp=WNE + e:Nm9kcg/<6'E3eR%n!#bsS!C87q#>h8qDNb1I3Gq;D0bd@kYEEfrB04`:1'Rjl6#d#j(S2 + 7j#k>$)Xf]cM(MNqF5We_R)<E^2lZN%>o&\VN]k,PnNiWLEM=u]^!klRZMTngpUiP"pDh<R + AEQa;HfDM3q,(RG@@VpjK!1GHUF.K2&i_`dRbBgV`;3Ea;YU4iBf3=7e.pc<]>LVDTd20Jm + %_pg(.Be6Zm9AmrSGs!VNJ#+3K8%u7B_Go2T^#a4Cg&:GO/,g<E>.Y8KiBf2D];!V]TdU&K + S_UE^NT6S`FlLj(M&!$9^re&5G:"::NNQU!<',IqlOnPW"h^kCq4mSc;:"-_*AYqM\a)L:I + _&hC"jh;"R**8#En>,&=1D5,sVF37/K)j@k*J$Co(LHGK0^O1lX')gX"2'W5H/a&:)Y<T?k + lF"R<@5ACZ,=L^Tqk6M3?i/a=Y5F1capQ%T/#QCYNpga.!I/aHTJ)HBVJj3;pcZ^Ia_&rHI + VVmM8pd;Hs\%s0]UU&g=[J84tg&QW\O33&=f&BIo@mt`748aXoC'srBMa*HOTS#Ju7npfA/ + +Q3*e'M;Qp]H"F'E#*ZJ#F,m$iGQ?WX8Z,QTs$FeaNhCW$_:L?2df:/$sUSr..)t#l[qs5F + &fPp]H#q&cAmpIu<NKnn[jU&,]9jnAjhl.BG&Dct'p6pnNH!O#?cTXo'+8JNkUir`Gp[.4$ + Eg20nZrr`FO:a%H;%]9`_Oi/b8NJ#q.le<3eVVdT!!=[MVu9)YHh.^N7VjG#;n>JTlDC%Ti + a6$(uqP*Tq`m'%1RNb9@[J+RT(ebW3OQr;Z"c]*f$P5XXZrskTL(54F$K_#`6A3&hFC"oPJ + 59W&BqsRYXq5=,`XIMni-!=5Na"rdKa?2bZ]5oUm:7QtMM\Fp1h9#R:#QC+>bI_)Pi&TaNL + W9TY%,`thEM-KR3Js&]*]`lh29('g(_>kjF;t&(p6SgN>IFCqE__+Erq!jnql6*bb-g?$kT + ,Q+THc;]ZhL"Th7%%Y7"SuLAfOQ1HmJXr7IQqqjI_Q2Hss\:-)W2@;l4K*c=ob`N3OF6qek + cD]o/CJJ%CI*7l%Bik`I[<D$0kp_KCOmL:Rf$o<nH>k)3fub;an_rlM>/]/2PX!Q(hGTieA + I>-'qY1QGA2Z;+!'DgOfJJod[XMgd>5#M=*lpYFm@]`>kj,V"-8&O+En\IP+q2u1WQ?d\t0 + e)H2&]=urufi6)cVkgT9P0ZAKr_R57cG1N4bJ>9Ore0Hg_]NF4_&n7-8:(^KIunDs56CeGp + (e)9+OpUE`;1.0(BK#Ibm&[9qK"^p2#KWt)uL<6c`rF=n-@W_n40QE<7L:`pk*B=p`nRdd% + !r-K5<@=,M\oTR4$r(ZH_<gE.?+1'H[5reHC@Q_&p!IKnhl`28LA-nAhV+iSb;F:%619r&L + ?o*<%'"%/s@\5?(=*%/`E"(Aoo7T=gUT7K"t>O+?.!;GHZ$7"5\X*)b:YOIQmWK5<.7A"l0 + q,8McoccI_:^BFaiOD9A3-Mm>Hn+2G5A,<Zbi"&^[nAdqHqJ>G\<19V]5EU5Rn-@WGnAfX# + [Noa!qNG'IGpMFk_u)7Z#Jo=/;GEJ>cgL,2/_6P<O1hUXq8^FgN]"O)T)>#93sGU+CQBNc, + @!a[im/Dq?c[3c\Lteq7u@-3O?XDk-KNb=9($lImF9Q`QUDY!,e"$@T'RNn9jk0l]t&>ibd + -bFj+$:a6Vbu(4A3G/o\YB"Q6K2RK4iQn6%^-^Fo>6R"!%V1jo3b68)AR`n=,qS47J]V7>I + UlU:cpW:-$ibFffelqa8bX+1ethkSKO_R^2&'(8jf#&'O^)YQ%W&Sg0tr6n]FiFmKXIrIE? + bT8>p?L;4lV0RE4NmeAcJ!=f3$\W6O*_-aj(i,qdZh>>[ona#GA$KmdBAQNLpjH!B"(XjJ( + 6mm<ToWW_Gph[^R^#sRrfY&P&#(PhB1t6Xrr':CJbFd1"UORRQQZ!jkK@A0?rG4j<L;J8[p + #j5S%i+cXqhd?16+.I)1!?2U[_JW:5Fs<qn-@WAnAd)0qE+Dc??'72J)$4Ci"*,ai/_%?:l + !I0.HcabP)K??J,"Y4,ktlP5O7=\.H_6'GL[6'+<(XdR-W)e:B"!cJ$u1kK0RFHJj8DoA&# + of;1H$OCkY*p7Y3keqX^N3PM&shb5'NP7ptfkW@%CMY!5m%6*,,+\0no++(QV4*sqrA?h7@ + E+4hc>pk*B.p`mVIcXT.?c6'(LO5St-;GHXNJj8]FHWO'oHN"0krZK_oIjFeFHfo36rTX-U + :uMp_:%1Z)5@Zjr.dE(=C/7'J$@e.PJj0nGl0$F^<okppr9=#-5k##X-MSh%+6m[Y=loSGq + ("`"#H9'F,L)iD2tn``:X<AKJj2d`_&mCj3*^Q%cC^^.((U+l<"o1lk0KcX7EYGTo2cL^%o + Q-k8")[2STmpjIp<Uli"*,Ii/]^Eror?*.HaLQ?\'PR5)]CKrZDpYJ#)lrCZd6;rTW8kcuP + \,->o:YIur=@O#2?Xo6Dsp.atK_(RA0d\2Jg'\dRhMbpCKNrNc;&gNI_oK(&r=4[tM,)UIY + ^n#$E&%#-u;D#E&Vp=n)8R*2_E6$)5UT#58Ci2fpuX7"Kpaf<YGPYm]Cdo%Es57[_:T+Prc + bk6aO5aR?]rTF"V>Sk/Xf:8%qh(H<&0X"HZq;Lp8HZK(Qi&(Q7+Q:H%cVWeu"NW+*?f<hOa + ,Cb</$-U[rgWdt<+[QAO&M3?:]?$`+/G(\3rck(k>f5\/'k?)$@f"tV3dJ=B1pYgpk*B+p` + n%UR"?1M"+Lk<p`n%Ud+hIZr7RUM)?(a_#l[Bdk@F9Xp]H!W1\`3>T>ToKi=GiPbi"O=J+h + ^PVjou3QQ4rpZA%4t1k0[Th[+ej%q5`mV"s&#eR(=d*%j7e+(Pbq+)1_9"7QQp+D1+5RQp3 + hmdLJ\+D1+5RQmAmT(!!a+D1+5RQl7&rSS4a6-S8J1k,S1#:er`7JMLO,5<D-T:iP6I/XV* + &2X)+c(@AfLQqB8hg\*R')[mScge*sn-Aq8B(/<Z5J]@rn-Aq8B(/<Z5>h5Rb5$\)rs.4Jn + 4/p3M'\#J#Q>iXn4/'pI3&0]C!m^f-P?>#RgB!an7RR#&@:j\f,sqho>jCQ58*niJbK\Nq6 + T5#)H6QR:?qBK47EKS-2:u55QCTkJ*[:)V;;/no;0],M,(bHHe$aJRf<KEH%"k=BK>L1l8+ + PtEUX2>XKNW<5OH4bs!Y?RD]F/bon0GhRMRf!IJirY"rZiY>2)rUW'<N(s)YOFWA`r=n(2O + YGGP4Kn](k&^\lEur`Qf/^Ukc%4:E;Ln,ElIORV1h1k4YCbu`14f-FGmK5;_+,L)i<(Y1"t + O'An/r'@b&r/p,;^c);:q;\(5%Y'Ql"Fm6C':'H3S3J']4l?jVL#A"KJ%hoW7QGt,VJLrNa + ;0@l')WX82V_Pbbjre9eJnK1>6t4!n7Pq?1e%ArQF[P)+Bo-N8FYeDLOZ/!5CQ]4i"*,Ii/ + \"j(.KiSe=Rerr!\(:RY!a:r,GMU=3dG0^O-<:OICbc')[m]iOe@Ro_df<pk.'1r%Zfq!KI + 91/(9dTVro`5^`TALi/bGJf_O5m^rLPHHN*IGr'>')rg<#tgIL.%e=W>Iqu_G1RY!cdqQp+ + dE^frs^$5uTOGsBmbk3@QHD%#3o_dZ0r'>')rg<"I@WA,_rq-'G(]6R6$N?FScU@5YddT!= + T3ab[Jj2e#_&p#]q3McpU8U;iIeX(rOICbcB)1J3d8<bjHN)#bpk)N]r%ZBeaP2i7qU>%3T + $$BF`,-1H%h]iZ1#3pt[UrNN.HaLQ\%VRN5Ig_';Fg5s<.?h"H#<RsGO+]iY,J$B]e]OOg4 + =lj#9VUGoV59mUO"N[DVXB4S#?$VRD+)1V\oLk`d3U2]<O$h#*a3AiK%M[NR8t`\EiVrXs6 + EG8T1QN:cgnR5KE\IC%P:uM]rr(]Y:_X\[#1=b,MnE=DQ:+IfB0>r7?W3Kp!s(/C(?>4Hb0 + S=QZjn(7H0\HRH8R&df:W&m_C29dN%abmp7,c=:+o:&Wu\&f!S-7_4Ri2U$<r'`TW*A!_[j + p.J/Q7=>qn1T7=aW_?X:M$VNIFL(cWR30QC-_iHWE;JOg)+PcN6sdgbK!W.V:m=4`f(f6gg + +a!7+L0&PcW@AYI<"BW:.q=Im('CA1Ar*X5+:=q.I,6IJhum$fi7I]7"=&TrZ2<:?MumUES + M7Ui"&^anAdqHr3#lFlHe_]e*mUq>4BR#Ir=,TWMi&?H/\5tfimmc7":(4MA5_2qK=^n6+. + R,YloQ:AK3K<+8CK<'`>3=InjRGJj7<\K0P[[:KVKOr'<4Xr36BS9`N!Ppk.'1r"8ACM9HX + 1iradmRY!c@r<^RPJNq46K0R6OM9Lm25KGa85@XROQ?hgj^.CQ_"b2X1Jj3`C1$b$Ipk)N] + r"87U=eE@E+/H4#O'$nUqW&[r+I*+["T!0pl_M)d^`TALi/^-Q6?>KP&$k<TO$J2(nmgSgZ + K:#*.">!(8pU"3Iup+N5GJ(<nB';VrHZfb7JMM:4aQm_E#ldhB<pE*H2P3e/,i(doC]4MQZ + 2piC'`uE'E'@q/7V`;=FRaIDIQIP;K:-MZ7C2XH."1D00GeRqLd]:(5+9tZm]D2bI_+&i]O + %&mVe'J!AMl?@%WFgO/d%cY<)h+#I%OF*;^9#4D<IBC%aXT3DK1=qW?`q:M-5HfUZSIm,5! + u8L6q[`YP[_bKSUIr2ZnD4d]5_.uNVM;G'hb92dVs1F:pK[C!1q+tqqOiIC\\nl&<,U6j+4 + RQ&H%fI44+S4:,MIXLbIIGg0Gea3kp]##+bSsU6PCNeY&ffQ#h4^e+J8)K05*>+GJ_Wb%nW + N5,^okjOP6PHf7N]%:;Vm*=cr1W[soC(2bOV[a+Sek-,R)P2G3A$4s3]C`T%0!cS+'VDkIq + Ao1,_A"<5AqWhS":>13Ph4\A=]AP-EY9g-9aK(cBA.:;/nrY54Ae[8FXYlrQ2%aJNrYEg4M + W@kg,OB.i`rp&$h;TO#?cTleX5g"+O8]r38_@nuD<>&,]9jnAjhlTaGNBi",`_61Dq[r2FV + 6LHk8u*Pii`njfJ(d!lu3JNrE*r`GLO3eIqA^`V)0J#p^5HLo\7f`?T\O(s82<od%DCW$,J + pYcY\;,-Q#MYs/T&,^uCC'srBMa+Vo[@NkZn-Ark.JRC)roi,/n-Ark/GN]ir_tgVGQ)IK# + QCYNpgY'<Zl!$*&,]:3nAk+uWROpkrqG=]r)$D^a7B3)mdL=.i/c$458NZ_<Duo\pBH-*O. + (Yb(@D_3LVP#,UXn@a-2[:`%R1`pcVWeun-;P+Er;?6I2`%Jq=#W@59GZ1N:RPmR-")ffD4 + T?p.:28kFV+5l.*5l54Ba:SK0bd:1mtbdajRgRie.@*0qP`.4.:AlaX-J[eFF<+*a@*0+Rt + jUA)UBc@^n`$t\"</(K*<qCrZ_gf,]9n5P_n%KlM)d//SOpqH71ch!<hj>6%sm4YT!>I?M0 + p$2.s>7nKa/&eQn^5u[V3SgjK?.ma#JMfSdR=5+dV2sK*LY_p5o6r(OdG!I"aj=oRDCCMsL + cp7^4K$-W`(^Q-hDk#E>DM+qoZkj.k^c-J%!N`;N1Lr8I+7GB/GN%`n/1@KO<4KYeUQkBr\ + $l]ZL?il4(cilE:]pNS2M^1%/_HV6<d=@:s,c5TqnifY3UAUSj7ej>O*ASO`#Z9)*/0p%7O + q#c^_UgNmktAM]:Y7ciN:\LO[S52b/>ggpZD(O0/46C"jmgA;]7Yak?LDO[#Xsj!@3NM[kp + )OK]nd>!TX,S,hM90C/8UL$5aIIl'lgp<IjV"+T5>r-@r6BFWZ:/cpO\&,^uC$Mi0DLKF43 + i=Gj;5Odj`qa3@8HkH,UJ)Ck8;8SroQC;,5!e9,=r..()q"(`9gu/eAJNrWo;1EoebT6\u+ + 8>qfPk.D?dr]\T^`W=RJ)JYJpSZV-G(r6N#QDL\-2a`Vmer3;i=Gj;5O_0dIsV+&1]2egn- + Aq@k>.;HafLE9+8>qfi/]Gg<&[mJqeq$Mn-As.+'JLrjU4<B#QDL\p`mC84o_$$r..*%#Q? + .4O+_^`n-As.+8EbJ8(48rr0P%4+8>qfi"*l#An/1.MngG0"+T6iKQZ<Rf365*#lK6<n-Aq + `QmmNu=Kd?An-As.*sj0Ao^-te79&X"&Eb5+a!q@hs2gSeO*uOAq8:%(=s(Lcp&6f5)u1;$ + 5O\pW^`NlHl[hM9Z`a2([^B-o=&q1[EMEK`WF`&!dZ9p>4Mg9(f'-aCbMGDYm_9h?=&/3)I + rD@ee7Z6R43;+J-b@/cpQ6]U7aO@[Ob\R[#P01.q0-GH7_+Ksk:pkE-`aKnA#BK(qhJJWn< + 7-BiUl0$5@,DCI,i2*o\>egg'_]*,]:/4mm``mN>#S@Y9qTBDU>lW=gdR,^Mg*Jm65l=&S$ + U$6/Opt1/:Q`VMrZVW4XN>8o]a#'=U#?ocHs-iPXRaREZ#-6*H,Dr23*SDm-0N4N<?R(sQc + RkEo-7UL\@SR*.2_acLhkj/H\"54a^LWsP@2B()8ge%Iu:(Gnp6Hb6"nMe@pFqdjun\QsCM + \a"7Jp3&`-!N5k,r6iU5p5\k?:0*%/M1:YSohI,hl<ES2+AOtmm[!!96uGEbm:]8""gP+;= + 8i$<J,eI!#Ftc<pcn+hf\?5T:%k(#M69*i0`@\Uo>ai8IgE;3J%V@uHL'%M->]5,.rZ7A1, + il!1HN=5+g/qiP&j3<n\4"R>E_^1O@#,RX3IEK:?2od_@6FZ+8>qfi/^3W5O\pW^`QF+5O\ + pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\p + W^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW + ^`QF+5O\pW^`QF+5O\pW^`QF+5O\pW^`QF[3.LM[nE6;Mr_V&GVSD'd!n/7&!["$eIlo:-+ + !s2Oj3M&75HjL#Q1'cTOu*#]`08.^6bC0Tr&L6r[bIGK:VAEln,$VXCF?[]r1VRIe";cj,N + ZLZQONl'b2^fmcg`dnB9GI^#W#W]nOiHuIlR5=T1;+DM#Kn!lb)-.A8%uWY$kA_;O=OX:G, + 5Q>]Q628nlGNlaqOBI=/6n9$Zm_T6H1edcdN#U6]cp/Gc\K,!R5MIt-bXbhbS_r^S+RrA") + .S3@A\n;EYe2T0Olh!_HDQ@Je[p4_X`#3Q+FbGr^r;g4">hlb]2]CgAPgKO:;H=lf0i3+oL + \7;C0QN,LTG%7k`\_4cU*^B;^P?jGJ04_/aF&-A<3gb*[E;F#-h)`4Kk5NnNX1s\lRa^QnX + -^jZs&7RB(5=L'6s!J1\Thi<;J&QGQ`Rs+hCHRgo<K_kpLO$f]^Wl!`/DSNR?_L0Wg]q;Rj + pEu2cmJ4[WgNqi.c<rUR`t8d/,en?:Un9:.3Ib]"=A1RIl*Pm!-P?rFu->U`GQP_-70=hV: + cm#?RL$a_=c1WkY)&bC\(E+,>9gCf0sOdY$64LrF/UYO)OIPA?=s85;]B;8S%($d@g'8#+P + ge(s%P"OXiQG2@X?]*/lHN3o_'+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qf + i/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi + /ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ahQ+8>qfi/ + ahQ+8>qfi/ah9eXq7KpG)UQ\e.@0XGC/u,Y/]#kR%^8(TQ&Y-MV)GZS[.e.PiWl+0*MV3#V + Yio$!F._A3\*be!cK1u_G/jNj:dCHRbCi",`_bt+PRqjksp,32jAHY[C92gR;9+4!o?Xs1> + 52lA!X=a!M_RO4$O/^:C+9a:F;.:&./=-H_8:fLP(aGF4PC0G?joo4q8DT6j0HO&.3\jH-a + +ofLqZe:I-1>G4aIKuF@F9WaAX[0"%f%b&P8,qX<=")Ubngi1TQ#"R2Pr4j>c?673[4Sf1> + 2!/=*Cb@s@"r;WAg-L(m,/tZ.FP!WV3tD;^7ee5cB$bRo*.F*T2O*6_N0_#e]lXgWg]rVN( + o$:"94\-h+(iO6pGoNWuq7j5O\mk2>@9'i"%/Ln-As.+&(2B&,^uCR&IhCp]H"";1h+&#QA + ,*#(PPAr4tc1rkKWNK8CNEJNrW/'/fOeJ)ChaC@DK-^`Q8"i",a:5FACc+8>qf0N!Hen-Ar + #U'?,*&,a73%K=-bpk+DAr..*%#88ui"+T5>->N#TrkKULeDLl8JNoO#_&oNP.BY=Y58a+0 + WRDq0r..'LB(fb\?Dr"@Ird:P__;M:0Wb$I(CafkR/~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.pdf b/testfiles/cli_tests/testcases/export-dpi_expected.pdf Binary files differnew file mode 100644 index 0000000..82c6045 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.png b/testfiles/cli_tests/testcases/export-dpi_expected.png Binary files differnew file mode 100644 index 0000000..cf1781e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.png diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.ps b/testfiles/cli_tests/testcases/export-dpi_expected.ps new file mode 100644 index 0000000..a92caa7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-dpi_expected.ps @@ -0,0 +1,319 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Thu Mar 5 09:46:34 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 61x32mm 173 90 0 () () +%%BoundingBox: 0 0 173 90 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 61x32mm +%%PageBoundingBox: 0 0 173 90 +173 90 cairo_set_page_size +%%EndPageSetup +q 0 0 173 90 rectclip +1 0 0 -1 0 90 cm q +0.9 0.950196 0.9 rg +90 45 m 90 69.852 69.852 90 45 90 c 20.148 90 0 69.852 0 45 c 0 20.148 +20.148 0 45 0 c 69.852 0 90 20.148 90 45 c h +90 45 m f +0 0.501961 0 rg +82.5 45 m 82.5 65.711 65.711 82.5 45 82.5 c 24.289 82.5 7.5 65.711 7.5 +45 c 7.5 24.289 24.289 7.5 45 7.5 c 65.711 7.5 82.5 24.289 82.5 45 c h +82.5 45 m f +Q q +81 0 92 90 re W n +q +81 0 92 90 re W n +% Fallback Image: x=81 y=0 w=92 h=90 res=300ppi size=432000 +[ 92.16 0 0 -90 81 90 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 384 + /Height 375 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 384 0 0 -375 0 375 ] +>> +cairo_image + Gb"0WGB=Pn\c6Z%%44*ud^u(.KMYC`,R3VR5&gnFp9BgFm_na4)sko\Vu^)(,`76nLgk[36 + P9Z$5sk2j#t_(uHIo<C='AUOT=',4?f,*"dQFl8m`p9Qo03*25K7:uo:#,]GP1ps)pAtn\Y + Zj9V2:hY?EZ0L37ZO1d%<c'U*9]K6@GOsVr<u?bKJN!1X"80Po*+Cl7/0df9R?pNV1QhVBu + s4qOcUga+up)0fD8Iit%tDBo*=K"o<gUD(\&4<^V0edo:+?ou3^3ZSH$YTu"Ob#QA,4B9_X + VN>;7Valj8d58Y[Ur..*%#:"!A&,^uC(f:Bbi",b%L`6$jJ)Ci,eA*1$"+N#!#6)C[pk'/9 + n-As.+,m.L5O\pW?pkJ%JNrW/,AQ-Ir..'L;$2=+&,a8")YaDai"&<,^`W=RIk[T$rkKWNK + +U!1#QDL\N2V:ln-Ar#6k0'F5O\n&C>]X#JNjuK"+T5>r5"1-p]H$(%n>'U4DH$&RNFCCUJ + %AZ^8AogM?k[i'UuSi@73U.K$8?#o!iE*$?QHqo!S9>L6B]jb)4m[<co/>rHF^qM'-E9hue + JqHlgBaNQmIF;jpcTF$ir5(&.P[<g4QHZ`CF=[CiNGZ`:@[.an*g=/8'^GfYr3;R.k=BRND + S&bX?dRi9Q;hW?.[F9Kum!(P-#d@c-=<H"fp0WT&hc)Ju[/ko(i:#Y`;m(nOC'49YqqV_=) + d^s^Bhjo120<SS$[<g)O24R^;?SO3EhYbarbSHaToP+)uba+c)Z6=P3en\JQ&j84R'@jq`_ + /YpRR+rNjRVGQR^4`'b-!+&E6q<o>(I))PMnUD&CZP%VDpgH?1"I;M.^SQ0ga@]@*DJT+pW + d(H6ur1nmLQrN89Fe,r4i8[:3q#8AWb/"$2S15cn&56Zf["d>o:/7g&-s-KIZ5[8l0N]'#3 + OMl=n],;U-T1?-L#Rj]:QQ)Bu^Y>p9$md*r&FCi6>sTBrTEUs^Mkr7Q;GCl%/d^A%;l4*t# + "?V,ce=rF_gH/ruIA9RHYB!d@t'XihNK$X\e0!01jFEb@V`lU*Soh='WVE_1s[$otmQ9VM; + +8B?("+T5>r..),#6)C[p]H"6%K(cAn-ArK)YaDai",_t2=LkM^`W=rC>]X#JNrWoeA*1$" + +T6iW.@2&#QDL\;$2=+&,^uCU'CV4+8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN,AQ-Ir. + .*%8(><rp]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNrW/reMKf"+T5>r"1flpd> + )Ic%%Vf3LTX!WA<qWo:YFNZfB0JacHW!%WL-KBCG*nWsK>8891c*<deuUM`Dr%jok8_R57' + Lro10$bSGpcr9D^3*`kMS=4Ea>#qB*OhhfX8cI:pDpYVr!QCbh#e54l!#M5S[q")B4l-](# + Kc(o,Y-G.@[TZn5j]#`i8M*TK;/kPrd4JCQ[g4(j)h%gs!i1#r^ur9>/R:Q$pmfg=aCS#i0 + )>:d`ugr9Flq^[Jj,SA4EkZKX4]eF=%'1CFEs'kS22P5=N;Z.7j9`6__]/tAQ38TW\q?;\X + Wp[;klp=bq#8%6sl1e1%MDMRN&X,>$Zc@PG-BC^[utWH<<R)"K/3"W3mGnrr(@(s)mI2SEN + #)*&)ZFcfg^D?C'@`h_B5+JaNUFW!@:9,P5(3n*S\q?QZa@IGO`TUOs!K*'@cd&8"/_p<tG + k;r61(`c(SM7WQ9#o4uK'`mNh(LH7^Q3O].#*S5J1Q)>4*S=O*;/(4$2H*d_65K>4%5?:qb + +n2PuX,.roqF:G>P.SPE_*ej4aGe1Tk?%TGpn.P/l>P*4Bl:$@fO8+(L3jGtT%@pBK)(!uo + jQEUe[t^EmehC@p?:bpPFJRbJ+rpqGePla@kafH*ePg7:7/J:g=4qW3PE#ieb,9[X5[,`/o + Qm-k0'5W'0T:;;[F"1F9Gc>_4UF[>jJ"sP77HG/%la^(39--=\e-8c`K=Eo$8]_9M6L?j*\ + n0+X=WiE2"TL;tlJea[(%<,<C.MH8-XrBKc(Keea/c::,hGkVmMXmcd+N1\-;:0WsrKP1pV + aAa@mKUrUBqLE(fl.ag.W%K'qd^`W=RJ)HBdJNrW/rkKUQ"+T5>r..),#6)C[p]H"6%K(cA + n-ArK)YaDai",_t2=LkM^`W=rC>]X#JNrWoeA*1$"+T6iW.@2&#QDL\;$2=+&,^uCU'CV4+ + 8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN,AQ-Ir..*%8(><rp]H$(O/RUon-As.+&N,ii" + ,a:5GAA]^`W=RImf9$rb,lsIj['92#LcAVt6>>=%07fbK7Nsj7GR3GKS]c^[]4T=T4973Kf + Dq4Fa:1mK7"iB9N:jf)f<K*]RGGXo<-qfr.YBX5[-B,D*@0h1klPI`Q53%hW>e10)h(<159 + sO^L,+DOsBZE@1>e-X&efO'M[>@t1-t&@4)T@tsCg3m;@V-TZj)"!'=<k5BL/X_%MQ3XDEO + H49?]`+bnA^i;Qu?JY;>YBKl%dk:fP\ba0XQT,eZ==;3N`]B8LF;$M"^0N)!q^(tm.l0a-r + ]Z';]8s;'dE"OCbG1BW``d!H.VWuCHKr&&I=Y=e-B?B&h];XN#=gu9o\n1.l)LX#FC0/tAm + Lt>53qk-Z]<g%3He;2SXhh5UDLJ19/h=,cD:?Vb<''sgut<(-O3>BPAjIU-C7gNaZ7@#qVU + oue/.8tjDi>mk#U&6df!I;709*>mn^4&\?VlmGn>9!Bs+?M.O$\.I+ER<d5fSnU,W!ns)2N + iSAAq%Tp\."r\I_-nF,qo3Bc!9Ti5UEcHMl"GXdh;Jf)2B6kH7K:0f8OB9)U*3PoQbj@CtN + ineWg!s.Bmm3&t4Qe)&hn0u^#d!_<\N]*f0[_ceX.6!PWqM',p3W7(Xq@f&3ZS?dd>@5/<q + a8-]o\SR$I_PdDoROaW&I2S[I!h1DO'IUA0$[airj4S*qp82%7hJ%M)rWqh]^L)+$-ge*0o + hElgSc\&jQ^cffcNh!dW#`uJ)Ck8JNjdEeK;r`A<M<Op]H$(&,_PDht^2c.$a]W*W1IQn-A + r3r1U.UWo+EcJNrWoLd.-/6-@sPn-As.+8EbJVo2CUiM0$7#QDL\pqui]WiW=U5O\pW^`Oa + !:o"-iJNrW/rWr%l6snB9pVPi!r..*%7kT9>X[rnMi",a:5=5;4cmKIb&,^uCn4-f7b)Bm7 + $iGQ?n-AsjnGZ6Aoel4DrkKWN,K(\(4Wao\5O\pW^`Q5Ee"/4(^`W=RJ)HA6r1QXcp]H$(& + ,[%!:RRoXm=-eeJNrW/r`I76Vg^96rkKWN"+Mlb:Plf]NVDGk&,^uCnAfSK'Y!m">2^"iJN + rYEUAhOi?G)6ommLbW7V,)0MUfX+`&PDXi9cqfB6&=unG>Rs%#$q>k0G](r*kmLf:N@u'Bg + ]`NcjLN,IZRZ#2^B6o'F+iBE"_C[dHq6?1jEZ0f0`+NCH[?-<!rF<_,8qhrL`;W-&p.]t*U + VG7VF2Bu[t,1@DmZIk9stJ,c(Bhep7tMdH!mf3Z?@2p?'i=J)j60<AH/Bg&@O(Y7r_[Y&J? + g""cG1931RN97U2Rb8pt5D?\c%TVCgs*mTs24Ec;^.JPd"^qqZk(V#`*4D6`BAoJr^A%<WW + o!^)rAb=++4/9/>:2FS`tNo]U\6(Q3m+;bO#R%4Q%2r5"AG5h96q9M-[p=46b4M7:-HkdGf + oPl"kVr^2:NS42)]OM$=s!3Brq6IrmWgTOg.:cVgMd!E*Db4TNUkRk&X^HG0.,,Bg&osi,= + lUkL)/H1>JOV?W3p%d5m-jiq/c4F*-T>8$GSaP:$-#PT29LhE1YlRFF#?+.VD62#6@cJua! + U1@`b]oYUP]07fSW+6-.n%/ph2jNiG)"e8cpTr/qY55j"0Sp,JZ)*&`LKO7ZVrQ3uYdrRb- + oHRPQO?]8Tq2Th%aSS8;61F(7<>[7E&,]:>nAi]MU$,VlrkKUE#(N`3TC4Fai",`_;Xha'r + V?F*#l_U],mAd7_Op;R#_PA27nLN=S+)2JBPN&^n4-p'+'\95]!`OV^`S76Ir*)rU7.gRjs + Kj*J!:ZFYn_be)H.+CJNla6rn*;s`APX,#R5e:O(*]*2WPB[CbW^JpnO57O)=\kAgi9rn4, + 4L+5?@aW2<*eVh75'7iB,bS+EOG?NP`8O"u;O2WmkRFmd/)L[YQJ-m8:pF8k6"jWp*:_&rH + IJDcJ?qK'@.3rFOn$4-X`U-FK[M<U;in-AsFHLSsErOH-[(]M2l>7^_cW'=ATY&\t!4o@Us + &H&e1J#JU;'UCst+gZf50+;(+Bkd@jl$K;Ni/\iTZ,^DHa)BtuJB;&G%\*DWQ$S>:Z/fDPf + mi2Tr`&&+BG.K/?+F*[1SZ]m=rOMt?L!$3ro`(p\XXFi/t<h>[>/OY5,pf:qR5h,"+TYg=o + @OHdVZYcGZk/Cn=(Q20g9)Z*hGq2Qt%Sc3$#S[kXti>]#Hd7^i6;.eMK*?aQnmVVod?KE2" + R&QR*_F3c[(A.!706h"f1c&rOqn<Q2"FhYAp>b9ZA<J6)r%%.<K7R<]QFSK'm"OqO=7IFYF + \2q:ROCXgX,?UfLT4E<H[-"iPIh@;(oPSVa_E6?Yll0J"q`Zt2)k>/6=Qg[^JBbD:V"Ap?, + +[hEFU3!%fa))m^20,553)2lg5kfhO!mke?)>leKU=6<TWcoPo5+H9q5JhccZA<(aT)Fle4 + V@%l[>Xt)fB%(J-PT_c=h-aE;bfsV-RLcabN1=N]LUAdPnX']_P>S@M%A-8eW]p)"jCW<T5 + cX`F&N9mnoQdorh1Ml,N00=kMVCdJ##5Z_&oJ?i/^-Q:*cH^5KKFK56CeGp':kPOCEf+@f; + GY#R5d?@Y-gRrAjQ/'`:7?)uL<6:[85ti=E6?i/^uiW3[#\_B3<\_&qY8"Jl==+(V"[+6!3 + h8End=nF-Z3-MSh@T8pVn%tB[MJj7iE:M>&&r'>KCr36HU3qP$er'?2Hr`Fe;a-)M"+(U/C + +)CA$MTCU(5KM]55OJ(j[63!6rj;\q5k#"--MZ%bJ+haTCJfRV5<'+%OM(gIg?HquK)T=YI + uYluLHil:Jj8Ypk9jJ`@SqX/s!])cK+o!sBr=2A3'J"H)f8H%_U??[&$i7o:](*1N-/\-P? + aE$39fprr+Y=1_.%HC%oPr=q@g^<B2R<Uh7%Q3XZnV&biGsW%c0E@9;'=K/Ep8)7`86;P]L + P;gnp4j,KKV?j#"Sr!rP>nqelESqGVDt>^HnR)ZG$#k=a,RjYT24I_a3Y&q*?C2NO%Jp>;R + qWh6k0C3ci?d`^)Qo+O('D-"WV*h-AcS)6rTV\XM=E,!8=6(W^`lkmV(V&_5^;"Yr4Z#;'( + 'qIJ54$VWIV&Q<b:0m^sqp.5Yj5#@VEdD6q)\+S4\_>iGMDS)-'rb2U<O/fXW/EYPV>F2"p + 4nqdo^qdO]WZ\Zh!f$i?+4u/5.c'4kJ3^-s!aihgP9lpm1+W-^fp\F7fN%$lhA\UGMYOQ2Q + ,1$^:kb:"$NY<rHV6=^dA%!'@]^*2IG=rL-Ic&m<GWq]5R/(`?212ORQfQLDDR;It#*"f,J + 3Xk#>Qg5CYcf2iIO=p$,TQKBsu\dij31G`T)-59>Y&n-@WBn>AYQFEZqs^$rVpr,GAKK0RG + +Jj1:HLY?rrTB6!EG$a&4Iup3(Ilcl@g.Q35lAsOS0DL1d,l#hcJ,X]jNu%D$qpk*'#MD]< + Vka6Mo,hUBIlnB-i=E5Xi(llAl/pDGV(BT+r]Kj*0_g87'E%*n5?)0*UuhMO-`Gu7ZBO4-" + Fmjeh/56&<:MI5KBslY,Jg"KiCbcccVr_QLHe<a_&j!_]Qa-6Mu(or[nu#o;G?RMJj0qI-X + ,#l[_IM'Iun,k58*mVp5=ITn'AGCgY`UJLZ"3rJ*9>5>B8>9rj;V9+S^R''E"!N%i(ZJDE3 + 4#rWj)56&H!J8FpKGm9Q%LVsTNF_&oJ?i/]^E2F_VlS3Llj((U+l'GLD,k0MhE\X)ibm>iC + ,+/G:^O#2@cE;U64o>``F(&f>&#l[BdkKWsD>0`bK56=RY/.#YbIuj_`5LTIln.EV-p>=OC + \,!"K?1T7l*h.HTST&lJhgn!_CbkkYc@L2rqYDd=<k\Nne,T"%V<oo^QR-i(,3X((j`Qp@X + cHfge6EYleVWS3[dDeWfcd^!H1W&gFYK^0[_D6<Y5\ZTOP'?_mrim@gs`[o[(pBS"/g167E + *EJQ!)X?.HN"KP0/q;C+Ck#:G91`')[U8`3$__[QXV+No02H`U0pI]t/>ea=R+=P`]5M9\h + l)e_RELRc$-@<r@6oq:YYApFYRSVTYI_ng>:R+GD*$qT"'_Tb?o//Efklr'>K<r/p,;6tQT + "JNnr.r/p-fRFF$Yo>fsu$iE<a&H%[Qc\VlSi",`Obi"O=Ih!bFJj8`00nV^=r7Q:4TB5uj + NcTq>a<#ptdejE]'``aA%q5`mV"q@g`_O_QitUYZIulerJ#)m-%_s1]K:'IsC&Y%EeaNhC+ + D1+5RQmC#T(!!a+D1+5RQpTC&,\`ki/]^Er,;C8d%=G8KBsfW,L)joGPC+qGPHfX_&mCj*5 + $dJErP"gccAk55LTHirnod6JNnr.r/p+P^Ae[m&3oq7c(FLLE6J'0huA>q,krV/TD6'Dp]H + !W1\`32T?b`Qn!2b9TKi5MccA;%58*nYWTr.[HogO'p:ik9P$J"=ec$@P[L\MY&,-#ikWb5 + MrM/HP^]*s<IjXqd_#C8$#;POtrD+a8o>\L'Yl?f_6-Nm3a0,,cs6/**QLi-ShXsJ8[/.-( + X:4D:pk+5)J#)lr-Y/8!r)(G6i"*,Ki/]^EejlpQS3LltDX[na6h!U75CPQi/E`'T5n/=*4 + Tp81q%K2<C,pe!YIMIlA.QKuC&Zm;\n*mO4;0m:&$guKNs't/Wr$rRT+:\'mHQV)KBscV,J + g!lIcE!Ec]2d&i"*,Ki/\"jAfR7J;1H6^Hc$q9&&B=or[\I^BMj8&hK\%8TA^;Y;Xd2.5Ft + q=/a#pa+$P?B84gW>$3#T@%'uHgDXhRlp^mEI,mAcZl;(LEY">H]QLi-Ad0'@j3skn.e=Y, + PUF"jIIXg)Nn.5F_8dbQ>e=Ve^GPIZr*V-,q&-'EeUnlpE8,ZR*[E>6CG[9om5KHTO599DE + n4oWFrFt:NO22p6Yi&<4r1TH-YoqG7rj;Wn2rG3E=R`4UrX@U;<#RsfoV_(p^;D%gYi&<4r + ;"fu5?ZL.X]N!K+(RUPT+:\'-%:b@rRlXB48_D<'E%*V5NafJ1&]c>[n6-L:KoXD^E\Lu6a + dNimb/]\+G%YucT;Bg@JXKaqsQL8r3\chj%oK[l^t]3Wd*'(F%^KD]BT(>!cJ;rNEA6_EtA + Ah$0rZY]N0Nn\THk"rq':dT5eNK/V,mpZ2Y8g(l)@5DL,kTVppT'9<<X,^Q<8rS49DJ.SVs + Ks59UJLE>3TUgjuS&Pqdlc6YenPkV-H^>h4JoURtgI:-^.cMS,"4#qg6,UGMMHE2AdEU,uA + 9!3qbNtL4nQChC\=i=sC(5=ErI=$1;Tep,CcRDYVVm"^qma"t^?SVLN/k\BuFSJDTOiJ6%) + FVnq:G!nP`q?Y'B^a=^Hm`m%j>Ue7q]PZd"@f:2iPVapWoqHo,JQA8jg)s=S<eg]TneO]@p + ))l!N5jaHqX6U0'aL,rBon@-i"FE*njA=[TqYjIuj_pe"?5:IhnY^Cpj8hUC%6up@o;h)$t + eS>m5`3l-E^4rmdbB*)AcT*dllV;H!"^Sc8EAoXCb`V]VF`5KM]55OJ(jW?fT[re.)&^`R* + *_4PoIPH2s9W'B5O_r2-3\)<<)piA:VBKPa85=eA^+)CB/e:U]h#MEPT`u=kirssV;%oQ<p + `u=l4aG>@2a:<he_Yn3K-\(%b;HWEY\3FV(cbLW5T>;W.re.,'_&m3[_&or]*)/I4RF/1@I + DI#$]\niQIld5I48_AO$iYtTVaKpc_]P\Yi/^ui3qU]Zr':YtrWr/Z7.Q1piWF[lP(Gn"r< + Z4,L-NbNK0KG9OmqiDIuohF5GJ(<p@&68OHP2[UAU/In3oe/7$Bj1]LInT):+0;)5tRS4%N + o>mD$Q<FoS!cc@,5.`93Z7rnNXP+%tt86[J8#8M3YRrQJ^9`t$F.SsN8iDQG<o2.l"g!ef$ + eJ16+6#1En*`OQ@4pk,A2VdEeRhnF!0HDu4Mg,Woeq%^7>iq-s'VgIn#-%?9pKq.^VnumNM + FbS%sC5R&3EtU;9=7WNL.(k[>R3=/A<YL]5oL[CWo0VSZ=qnDYC>`(&GP"c*iC#%Y=6Ha43 + +*h.qhit<bhEmRTpn\6o2_7X'.<QLOPC\F0f'?b4Ipfp`.J_nBPiiuT30]IV`3jCea"0C)S + V>VjRK,t-S[9:8hNi`WlgJ?ko-!33[]0tU9fb;OnR8u9^h6"PBloekLT*IQfjul5B`>Drqp + HYO!a]tS/a5.P5cfLNUn1b_3#6pdR2<US`+Z7ji$i/l_[.8U#*SdZ+87srOJAHQ'O-EJ*<` + #*B\[WfKr>+_jAO+NuJ#MA$Ypj5EURoX$?%pI\/5"=or\)SoXa4_6pk/3[R%t"L;WhmM+Q@ + N">hP<YG>8;1I"DdbkZ6Z1[%9/c'N?ru)+apk,Xnpg]6]gb62KJ)H@hJj6^-:O7:Ir..'># + l`JH5K,M!R?a30#Q?+opg\CEBPY$F#Q?+rpg[P-PT!0YY6KL7O"u;O[cJ%uLVY)-UR9u#%J + `qu.r'@Z!e9-h@Y-g&jH$H=pZU!Lp]H!['E#*YIi=dpi=Gi`;Xh_-r2H]uC2%C55O_07_&l + nOVnTDWrkKV0"b1@*T*f'sbI7S'i/a%Q5;qI2rH7$/r)$eia85``1R,<Fs+*E(7nLN=lhBS + S`=Mlt57.et=LgZXL@UZ!%K(cA8dbQ"\Ncr\'E!DG8e(c%ZTm?\mId+N<6=:KK$X[kaId0t + ds>ip_=XXDli&u+nAi8+_&m=]r]:ek-BKAar?b-SXRFg9O1ZR)((>\a[.nA.L]/FtP$OX'W + M$+2ls\QEd.p>[0&a/gEnTc*?LP#]h-]!1dfB+CF;Bu[SXhet'7NZLp=Iik/)>DO\TIf?VB + <PcnB-uG.8tC]O&f(!*rV0QMP.=!:8^uch'fpESbqjil\jM)<F+-b&(:$I`R&!H2B"TDRS9 + MRBR4@e_f/?eZ7^NIl)Qc;^%q*4G<*o-39+Z+J(EG`4$C_@UK_JGa3OU9?^m@;^V"BB?=^2 + Xc<\%AFntk,T9&I_1#-QSjG%ph)s];'h8OLUU,R$pHZ?1>26T,Z?;>VQVsLGMEaq,3':RVG + rN/_BG^l<\+8Jji=Nde[WEu@MSBF$=+o;>=3),o1[):W'hO]";-7=-3*kGip&(_l9<5"[8T + -(ijHLTnj6iCK701L5J)X0C_El8bWHo]2-]#;-=a#Qe1A+W7*Rsmd`7JXNB:7>olV6Q3IBO + QreJ$^QiP7Adt5L&l3g>'c.aJc0g:9h@7oKVcGYM]3TU#0p;n*k[G.tg.\k0MEA6V$NSq*R + dto#DonJIHOUFctP"R#Sg=Hja]sBaM_7DX3Rq[d?kITqo5q)?.Dnp]H"pG^oAYqDJfbJ)Ck + 8JNjq@Vp&9:kaT$[^$l:+^`W>]+b/bqle4N.r..*%#Q@iB+8RX?l9X>=r..*%`tJA.[QOL% + 8+6c_^`W=r]0G#\-beaRJ)Ck8JNoIlVpnO8YeV@U"+T7T&+@hCJ*[Sni",a:5F1f:4[4+E5 + O\pW^`V8.0n7pQd1\b3%"I1Gr..(uo>fKkm*J&V&,^uCn4+7D.V^IpH4]iRJ)Ck8Oi8CK^L + @KJ^`W=RJ,'#MrB4*S"+T5>r3;>J&tZbo&,^uCn;$I.M8#dbV$[.:+8>qfIX$?5!6GIs5O\ + pW^`Nm3MGJA#2<Q+O#QDL\p`j3NJ%\rG^ZY9cJNrW/rkKT^6iJo!2_YadVa$SSIq!G-aIhA + Xs6Ybt1H<WA1fMEmG<.a+Jj1"sLqisb(T/n8clGKqO:beD,Y.impDZmU+W98Vj!_GId2QWd + -au.gCAj:gLAQIZN;N(6cTH\3q]_r]R`j!]cG)I9]+9pL_!.V(*t@f[7]VlilFs@6h+.-@V + e;WEj<iJV_:k&\ETko??K>uVh>!!!*\l5ilkl?LOrM)UoOS!DF:rK*]QmH2-HQj,!Oi.*qs + P(^<kJBl>U.F!c.$:(W3*#"X5p'6Bl=dD4IL4F-oHfZBNjU9O^J%VfH:-6i\/O>S><bHBuZ + !i@+NPmQb%)WFeA)+](;[E;uXq$%an_?rrp^b#($d@1rt(V/NK[4:45"h<DL<_rMqdlf5/% + 2M6h,e;k0%UJm2,U;G((a9"FSW8s?Q\Z5T2Ol.4'PnlskW16:'T#GEM2dR.*>j()gWgb62[ + Q6$h30S35&B%6+EeUKaXf8i^W/A5!EkgH+]3Sdd`2fe*&iSMKLHh?dihN&Nd6ruOdSuSC[T + 8ZVLg^!aflVCjZI$)kc*\U1sR/Hg;f3d;0RcL@7R8,c\3k/O:-U8rT8l0B>[QV;J4gQUoUG + >2W%kAaal11:3Rtr2!D/>f?N02;UlFL^SLm,P=J$7oSX^7Cl37F)LWq39)p%"/Bs569PRJl + Yfq.&7n=Gd%(&kF'n4C=K:5O#R=s3D6O)ko9iYGfPSagib.DS*>/XWf?lb%umpdOWd(=q1C + DcbLXt"+T6iW.@2&#QDL\;$2=+&,^uCU'CV4+8>qf6k0'F5O\pWL`6$jJ)Ck8&N0%_rkKWN + ,AQ-Ir..*%8(><rp]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNrW/reMKf"+T5>r + "1gU#QDL\p`jP3&,^uCn42!D+8>qfi/agf5O\pW^`QDUJ)Ck8JNok5rkKWN"+N^u/H4-Xe] + [&M86X*foWt(5AXltMIc[2_s7u+2s3?H,)Ws%sR+F"n7!`1Wkm4D;0XIeXG6kJQlM`Gc]7C + -`_&e4VqG/A"VX9ekBklSU%5AgW'&6aP>pZs+I`p<C>KIrs54GI;,M2c^bMI_=?a!6T9d2h + H1EnhbaL\VDi]>NJP;AhMRM@YpEkpb`5,2KYH!,/tI)jSG#'g[skV8/4*FXK=JDP1Wq=San + e(:]T1HGfhn^=k4Qjq_,jHmK-q<%Z8hq7s`jF4H(2j@7BP@pVfq\==sdIPEF\ek(tZ+2$3> + 1f<$dR!.:la1e<Ai6HS[.:SnKf<odhe#l1qs1k$qqpo#F_d?9DXR)/meau60:#$Zj0\a>nt + k;<l&kJ-BE$#3>b)ZdO4g&]3OHl_*4OTIeqK;dN7628UQLt,i>LUuke_8o1S%IY/tWpNF?a + >+FGRXZm;(cc7l<.@l4(`;,H'7Mg0AK48m+c$Gq--6.49qEKD,jrg372eRYtr^?!+Ka8p[N + kXT%eGQZGOVc4/nN13Z%JJgFhuQn8YN[/SL"cRYUT$1=>=in]48K&\\-0tB$/U3!&cN`&5Y + M7uB(L6=<%=]7slo:opoP7uM!5OcbR&)DR(-9VsZa]NK*Y0'Kl9/c75bNi9YZ2Jn@'1%dCE + ::U!4*q9qPu0%l&RVo$RN45S(*:]^LWj*F[[>abd"Ph4r6"&WLH7`G8JSEiPBqr`\Wh/l)6 + I5dOCEVm-PDB(/kgXr"VZ;Qg=O+^p]H$(O/RUon-As.+&N,ii",a:5GAA]^`W=RImabDJNr + W/reMKf"+T5>r"1gU#QDL\p`jP3&,^uCn42!D+8>qfi/agf5O\pW^`QDUJ)Ck8JNok5rkKW + N"+N]Jr..*%#QBMtp]H$(&,["sn-As.+8@'qi",a:5O_1m^`W=RJ)HBdJNrW/rkKUQ"+T5> + r..),#6)C[p]H"6NOASG<15(b5KUt>h:]:;c@3kI6$mM<+[&joX]TRLH:6-NaQ9a[Ae@>1J + nNC;RC=Sd&[MWa$eATgkC1C_JH[FQbH>L+\GfaW^.=[j0sLR)W[WNa2EGmS_o.>1D5b^Yc6 + 5=lPWdrh>+U$qjlD!)#<84A*4g?M'O#]ph3n^e33Bm(Q3a4]bC\(EbSHgVr)rf-ba+i+\hS + Nk[]A.FYBY).:N2Y3ruERbRqLT-a&!tjf(BOq+8B?X_fq&oDIKj;,$.cG<Dcst@:WAU/C1K + EcIVQdcH`H88ukMCQX5gRYi6h@h!3\3RR1Ti\cT!*CMYgG)@XiYR[[J%[5>?LF.sn8^&fuH + 5BI[KhLh3C=^=s5;e':51[0c+`C9VI:3;.UI3Ca_jQZ6FC%LPgB9oaG0@?+celFPG-Jj^k7 + _2aP2ficj6C0p2:L9")&)G<;=[hZBoqVgK]"\n!r!I0GEj`IUb_U!)psIOt/a\pj)9N51d_ + jRF@R`9spk,i+JNrW/ra8,'r..*%#:"!A&,^uC(f:Bbi",b%L`6$jJ)Ci,eA*1$"+N#!#6) + C[pk'/9n-As.+,m.L5O\pW?pkJ%JNrW/,AQ-Ir..'L;$2=+&,a8")YaDai"&<,^`W=RIk[T + $rkKWNK+U!1#QDL\N2V:ln-Ar#6k0'F5O\n&C>]X#JNjuK"+T5>r5"1-Abr12,(DH")B&M4 + iracbehbn;:JJNJruL\P3X0IiO@H/,Q`&$MfB"e5JkGY]k0;:u&OFE+,M#(;2ua=Q<)sJ~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-height_expected.png b/testfiles/cli_tests/testcases/export-height_expected.png Binary files differnew file mode 100644 index 0000000..e6ab7ed --- /dev/null +++ b/testfiles/cli_tests/testcases/export-height_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_expected.emf b/testfiles/cli_tests/testcases/export-id_expected.emf Binary files differnew file mode 100644 index 0000000..3c8ff73 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_expected.eps b/testfiles/cli_tests/testcases/export-id_expected.eps new file mode 100644 index 0000000..0dd5840 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Tue Mar 31 01:06:36 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 75 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 rectfill +1 g +18.75 18.75 37.5 37.5 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_expected.pdf b/testfiles/cli_tests/testcases/export-id_expected.pdf Binary files differnew file mode 100644 index 0000000..ba9a322 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_expected.png b/testfiles/cli_tests/testcases/export-id_expected.png Binary files differnew file mode 100644 index 0000000..5ebc531 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_expected.ps b/testfiles/cli_tests/testcases/export-id_expected.ps new file mode 100644 index 0000000..c7cb7a2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Tue Mar 31 01:07:13 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 26x26mm 75 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 26x26mm +%%PageBoundingBox: 0 0 75 75 +75 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 rectfill +1 g +18.75 18.75 37.5 37.5 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_expected.svg b/testfiles/cli_tests/testcases/export-id_expected.svg new file mode 100644 index 0000000..6dfe9e7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="100" + width="100"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="red" + fill="#ff0000" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="green" + fill="#008000" + height="100" + width="100" + y="0" + x="200" /> + <rect + id="blue" + fill="#0000ff" + height="100" + width="100" + y="100" + x="100" /> + <rect + id="yellow" + fill="#ffff00" + height="100" + width="100" + y="200" + x="0" /> + <rect + id="purple" + fill="#800080" + height="100" + width="100" + y="200" + x="200" /> + <rect + id="red-cover" + fill="#ffffff" + height="50" + width="50" + y="25" + x="25" /> + <rect + id="green-cover" + fill="#ffffff" + height="50" + width="50" + y="25" + x="225" /> + <rect + id="blue-cover" + fill="#ffffff" + height="50" + width="50" + y="125" + x="125" /> + <rect + id="yellow-cover" + fill="#ffffff" + height="50" + width="50" + y="225" + x="25" /> + <rect + id="purple-cover" + fill="#ffffff" + height="50" + width="50" + y="225" + x="225" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_expected.wmf b/testfiles/cli_tests/testcases/export-id_expected.wmf Binary files differnew file mode 100644 index 0000000..fba7d63 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf Binary files differnew file mode 100644 index 0000000..d34b0d4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps new file mode 100644 index 0000000..1f84f07 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Wed Apr 1 00:39:29 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 75 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +0 0 1 rg +0 0 75 75 rectfill +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf Binary files differnew file mode 100644 index 0000000..2febd2a --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png Binary files differnew file mode 100644 index 0000000..3e0ef96 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps new file mode 100644 index 0000000..0947232 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Wed Apr 1 00:39:28 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 26x26mm 75 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 26x26mm +%%PageBoundingBox: 0 0 75 75 +75 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +0 0 1 rg +0 0 75 75 rectfill +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg new file mode 100644 index 0000000..138e29c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="100" + width="100"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="blue" + fill="#0000ff" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf Binary files differnew file mode 100644 index 0000000..25ff1b5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf Binary files differnew file mode 100644 index 0000000..e571242 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps new file mode 100644 index 0000000..ba306eb --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 4 19:16:30 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 225 225 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 225 225 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 225 cm q +1 1 0 rg +0 150 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..36dd312 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png Binary files differnew file mode 100644 index 0000000..d27c855 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps new file mode 100644 index 0000000..fc92a46 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Apr 4 19:16:22 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 79x79mm 225 225 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 79x79mm +%%PageBoundingBox: 0 0 75 75 +225 225 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 225 cm q +1 1 0 rg +0 150 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg new file mode 100644 index 0000000..d0cd190 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="300" + width="300"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="yellow" + fill="#ffff00" + height="100" + width="100" + y="200" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..9d55069 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf Binary files differnew file mode 100644 index 0000000..c27c0c6 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps new file mode 100644 index 0000000..8a8bf40 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 4 18:19:47 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 300 300 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 300 300 +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 300 cm q +1 1 0 rg +37.5 187.5 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf Binary files differnew file mode 100644 index 0000000..b3220d8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png Binary files differnew file mode 100644 index 0000000..906dc81 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.png diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps new file mode 100644 index 0000000..b2ab92e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Sat Apr 4 18:19:46 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 106x106mm 300 300 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 106x106mm +%%PageBoundingBox: 37 37 113 113 +300 300 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 300 cm q +1 1 0 rg +37.5 187.5 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg new file mode 100644 index 0000000..ed5eb1c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="theta.svg" + id="svg12" + version="1.1" + height="400" + width="400"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <sodipodi:namedview + id="namedview14" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="yellow" + fill="yellow" + height="100" + width="100" + y="250" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf Binary files differnew file mode 100644 index 0000000..7b55707 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-id_export-id-only_export-area-page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf Binary files differnew file mode 100644 index 0000000..44df006 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.emf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps b/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps new file mode 100644 index 0000000..c73abd7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:45 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 75 +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +0 0 1 rg +0 0 75 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf Binary files differnew file mode 100644 index 0000000..5638e26 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.png b/testfiles/cli_tests/testcases/export-ignore-filters_expected.png Binary files differnew file mode 100644 index 0000000..944611f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.png diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps b/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps new file mode 100644 index 0000000..22eb9dc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:45 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x26mm 150 75 0 () () +%%BoundingBox: 0 0 75 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x26mm +%%PageBoundingBox: 0 0 75 75 +150 75 cairo_set_page_size +%%EndPageSetup +q 0 0 75 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +0 0 1 rg +0 0 75 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg b/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg new file mode 100644 index 0000000..a409973 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="offset2.svg" + id="svg6" + version="1.1" + height="100" + width="200"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + id="namedview8" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="rect2" + fill="red" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="rect4" + fill="blue" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf b/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf Binary files differnew file mode 100644 index 0000000..3d64bdf --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ignore-filters_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf Binary files differnew file mode 100644 index 0000000..9e23657 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps new file mode 100644 index 0000000..3029a52 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:06 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 150 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 150 +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +37.5 37.5 37.5 75 re f +1 0 0 rg +75 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..0535214 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png Binary files differnew file mode 100644 index 0000000..de4aeba --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps new file mode 100644 index 0000000..025c45c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:05 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +37.5 37.5 37.5 75 re f +1 0 0 rg +75 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg new file mode 100644 index 0000000..e22c4ef --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="200"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="50" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..d37195f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_export-area_expected.png b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png Binary files differnew file mode 100644 index 0000000..2e53613 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf Binary files differnew file mode 100644 index 0000000..3802d6d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps new file mode 100644 index 0000000..6f5f368 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Fri Mar 20 20:03:34 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 150 +%%EndPageSetup +q 0 37 75 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +0 37.5 37.5 75 re f +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf Binary files differnew file mode 100644 index 0000000..3f2adf7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png Binary files differnew file mode 100644 index 0000000..d044884 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps new file mode 100644 index 0000000..47be99f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Fri Mar 20 20:03:12 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x53mm 113 150 0 () () +%%BoundingBox: 0 37 75 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x53mm +%%PageBoundingBox: 0 37 75 113 +113 150 cairo_set_page_size +%%EndPageSetup +q 0 37 75 76 rectclip +1 0 0 -1 0 150 cm q +0 0 1 rg +0 37.5 37.5 75 re f +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg new file mode 100644 index 0000000..76e4eb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="150"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="0" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf Binary files differnew file mode 100644 index 0000000..407efb7 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf Binary files differnew file mode 100644 index 0000000..5dbda47 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps new file mode 100644 index 0000000..b9ac1df --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps @@ -0,0 +1,80 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:02 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 113 150 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 113 150 +%%EndPageSetup +q 37 37 38 76 rectclip +1 0 0 -1 0 150 cm q +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf Binary files differnew file mode 100644 index 0000000..736e623 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png Binary files differnew file mode 100644 index 0000000..a63f9c4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps new file mode 100644 index 0000000..1512864 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps @@ -0,0 +1,117 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:25:01 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 40x53mm 113 150 0 () () +%%BoundingBox: 37 37 75 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 40x53mm +%%PageBoundingBox: 37 37 75 113 +113 150 cairo_set_page_size +%%EndPageSetup +q 37 37 38 76 rectclip +1 0 0 -1 0 150 cm q +1 0 0 rg +37.5 37.5 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg new file mode 100644 index 0000000..0d1c2ac --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="200" + width="150"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="50" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf Binary files differnew file mode 100644 index 0000000..169b86d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf Binary files differnew file mode 100644 index 0000000..78c3182 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps new file mode 100644 index 0000000..fba673e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:54 2020 +%%Pages: 1 +%%BoundingBox: 0 0 851 851 +%%HiResBoundingBox: 0 0 851 851 +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 851 851 +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf Binary files differnew file mode 100644 index 0000000..f4c472c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_expected.png Binary files differnew file mode 100644 index 0000000..9c22341 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps new file mode 100644 index 0000000..abb8818 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 300x300mm 850 850 0 () () +%%BoundingBox: 283 284 567 568 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 300x300mm +%%PageBoundingBox: 283 284 567 568 +851 851 cairo_set_page_size +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg new file mode 100644 index 0000000..424e8f8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm.svg" + id="svg4" + version="1.1" + height="300mm" + width="300mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100mm" + width="50mm" + y="377.95276" + x="377.95276" /> + <rect + id="square-red" + fill="#ff0000" + height="100mm" + width="50mm" + y="377.95276" + x="566.92914" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf Binary files differnew file mode 100644 index 0000000..0131399 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf Binary files differnew file mode 100644 index 0000000..e0130bf --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps new file mode 100644 index 0000000..7975c1d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:14:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 567 567 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 567 567 +%%EndPageSetup +q 141 141 285 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +141.73 141.73 141.734 283.465 re f +1 0 0 rg +283.465 141.73 141.73 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf Binary files differnew file mode 100644 index 0000000..a463c55 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png Binary files differnew file mode 100644 index 0000000..84fd7bc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps new file mode 100644 index 0000000..d43e2b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:14:19 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 200x200mm 567 567 0 () () +%%BoundingBox: 141 141 426 426 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 200x200mm +%%PageBoundingBox: 141 141 426 426 +567 567 cairo_set_page_size +%%EndPageSetup +q 141 141 285 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +141.73 141.73 141.734 283.465 re f +1 0 0 rg +283.465 141.73 141.73 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg new file mode 100644 index 0000000..e7773cd --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm_viewbox.svg" + id="svg4" + version="1.1" + viewBox="0 0 200 200" + height="200mm" + width="200mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="50" + x="50" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="50" + x="100" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf Binary files differnew file mode 100644 index 0000000..f8c842d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf Binary files differnew file mode 100644 index 0000000..6315da5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps new file mode 100644 index 0000000..3d0d510 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:11:11 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 426 567 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 426 567 +%%EndPageSetup +q 0 141 284 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +0 141.73 141.73 283.465 re f +1 0 0 rg +141.73 141.73 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf Binary files differnew file mode 100644 index 0000000..f9914b4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png Binary files differnew file mode 100644 index 0000000..51a98e1 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps new file mode 100644 index 0000000..08192c1 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Mar 21 23:11:23 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 150x200mm 425 567 0 () () +%%BoundingBox: 0 141 284 426 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 150x200mm +%%PageBoundingBox: 0 141 284 426 +426 567 cairo_set_page_size +%%EndPageSetup +q 0 141 284 285 rectclip +1 0 0 -1 0 567 cm q +0 0 1 rg +0 141.73 141.73 283.465 re f +1 0 0 rg +141.73 141.73 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg new file mode 100644 index 0000000..6e39aa8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="150mm" + height="200mm" + viewBox="0 0 150 200" + version="1.1" + id="svg4" + sodipodi:docname="square_mm_viewbox.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:document-units="mm" + fit-margin-top="50" + fit-margin-left="50" + fit-margin-right="50" + fit-margin-bottom="50" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + x="0" + y="50" + width="50" + height="100" + fill="#0000ff" + id="square-blue" /> + <rect + x="50" + y="50" + width="50" + height="100" + fill="#ff0000" + id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf Binary files differnew file mode 100644 index 0000000..18179f4 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf Binary files differnew file mode 100644 index 0000000..78c3182 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps new file mode 100644 index 0000000..fba673e --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:54 2020 +%%Pages: 1 +%%BoundingBox: 0 0 851 851 +%%HiResBoundingBox: 0 0 851 851 +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 851 851 +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf Binary files differnew file mode 100644 index 0000000..f4c472c --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png Binary files differnew file mode 100644 index 0000000..9c22341 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps new file mode 100644 index 0000000..abb8818 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 300x300mm 850 850 0 () () +%%BoundingBox: 283 284 567 568 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 300x300mm +%%PageBoundingBox: 283 284 567 568 +851 851 cairo_set_page_size +%%EndPageSetup +q 283 284 284 284 rectclip +1 0 0 -1 0 851 cm q +0 0 1 rg +283.465 283.465 141.73 283.465 re f +1 0 0 rg +425.195 283.465 141.734 283.465 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg new file mode 100644 index 0000000..8274392 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_mm_viewbox.svg" + id="svg4" + version="1.1" + viewBox="0 0 300 300" + height="300mm" + width="300mm"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="100" + x="100" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="100" + x="150" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf Binary files differnew file mode 100644 index 0000000..0131399 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.emf b/testfiles/cli_tests/testcases/export-margin_px_expected.emf Binary files differnew file mode 100644 index 0000000..0d52e4d --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.emf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.eps b/testfiles/cli_tests/testcases/export-margin_px_expected.eps new file mode 100644 index 0000000..dcc1bc0 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.eps @@ -0,0 +1,82 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:50 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 225 225 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 225 225 +%%EndPageSetup +q 75 75 75 75 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +75 75 37.5 75 re f +1 0 0 rg +112.5 75 37.5 75 re f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.pdf b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf Binary files differnew file mode 100644 index 0000000..a467503 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.png b/testfiles/cli_tests/testcases/export-margin_px_expected.png Binary files differnew file mode 100644 index 0000000..a9ce6f9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.png diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.ps b/testfiles/cli_tests/testcases/export-margin_px_expected.ps new file mode 100644 index 0000000..c2fa5e8 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.ps @@ -0,0 +1,119 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Mar 20 19:24:49 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 79x79mm 225 225 0 () () +%%BoundingBox: 75 75 150 150 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 79x79mm +%%PageBoundingBox: 75 75 150 150 +225 225 cairo_set_page_size +%%EndPageSetup +q 75 75 75 75 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +75 75 37.5 75 re f +1 0 0 rg +112.5 75 37.5 75 re f +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.svg b/testfiles/cli_tests/testcases/export-margin_px_expected.svg new file mode 100644 index 0000000..b4ec04f --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="square_px.svg" + id="svg4" + version="1.1" + height="300" + width="300"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + fit-margin-bottom="50" + fit-margin-right="50" + fit-margin-left="50" + fit-margin-top="50" + id="namedview6" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <rect + id="square-blue" + fill="#0000ff" + height="100" + width="50" + y="100" + x="100" /> + <rect + id="square-red" + fill="#ff0000" + height="100" + width="50" + y="100" + x="150" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.wmf b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf Binary files differnew file mode 100644 index 0000000..57bd577 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png Binary files differnew file mode 100644 index 0000000..3ee1468 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-gray-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png Binary files differnew file mode 100644 index 0000000..0677fba --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-rgb-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png b/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png Binary files differnew file mode 100644 index 0000000..4798382 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-png-color-mode-rgba-8_expected.png diff --git a/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps b/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps new file mode 100644 index 0000000..2d73ecc --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ps-level-2_expected.ps @@ -0,0 +1,2366 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Tue Apr 7 23:58:52 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +Q q +37 37 76 76 re W n +q +37 37 76 76 re W n +% Fallback Image: x=37 y=37 w=76 h=76 res=300ppi size=301467 +[ 76.08 0 0 -76.08 37 113.08 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 1 + /Width 317 + /Height 317 + /Interpolate false + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /LZWDecode filter + /ImageMatrix [ 317 0 0 -317 0 317 ] +>> +cairo_image + J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=A + lC^cenm@9:1mM9jRso`J%pXIp[&Fc7\i9+F>q_Zo0[n)-uXDNg4o:$d,(%f)pX3/TtG&W$Q + T]66[)]^DV?&8gI$,1h,H=-%FK?m\aM@62%@_rEaU;53ZEs2iM!b934Jd6L>JW5BPkta%C\ + ]A:tn"3j8H5MCXCeb2Qi3te=j85D(T$&UTU;t-uA`!3eko6d+OXA?LiinTsAo"2FS(96Xrs + F]W)naRmUW2fMja>;MMu\YNTce)Y^l$J$189\f0nX6X8!i'K*Q5D=70`f!I<2%;/%2IOJtM + )T%51^Zl\B!@VMoL/o^6>)$$CC)KpCPn8P%;lF7a.\W*,)+^HcC)KGN-tNfRTp,m%58,GUn + qKo<AE&><W+=Cf)5$!4L.j"+]Q0^/ar)\&P):,)+\7Ca,b^AN)'GW8nm[>D-tI(I7S7D5(F + pnE;MIT<A3u#<bN]rRTocT)L-d;!*7COB8f7](O9uj)3@JD0lCj9=)#6<CA(lZ#-tCDS4=F + ^Q$U^QHZA(E=A#1*;NbTElToLT>iCd)Spth^(ar&j+NKjR"25k"_L,@EF(su>3@lf?#-t=` + ]10/-,`hA>k_M0brC)Fa[Ms;.lTo5of\RR$sh3+Ii8f4mI-t:&J/#Zp_L+9-2V6b$2igPTN + -t81QTo'0oStV"`(n5YRL\R71M/!llTnt_&L*S0V3eekdGNo)NW+$s*+fJi_L*5F>(kA<8p + gSt"@Hn\UTneLBG+j[`(itZb@E(@%L?]UmOXOY<L)MIKRYD\.@?+QYTAbBV(T:bcC8$?](g + *JcC)BsCBF"<1TnNgj:8*?p6A?,O@3UF<l2$89&L_&sLb>CD)>jI_Rc4(F++"4%I;=V`\9r + (I^=05+g>VA#*h)'NXr^fE\9R=pL:DHnLN`Qt*P14_XrViIeZKoT7_!PULH`4hCPOPfXrNn + ha0$CciPVf<*9ObLl\>,CDX3&?9<K4[iO,g-3oR?H)Z>E#CMS[-\8#f6T6%.R>2c6Z)B.S, + iG40k\7Y&]B"2F<L0'kI)*6`=Xr.#oNU(A70">A+L*!j5CPEA;Xr&)9J$'UAiHt65L$#mNl + \3p">jI*al`M$"iGG_5]&@?&Rc(MfK#t/'(:Yn<4'WNfE*"p5>1Wpf>SV3LXpV&9.U(c/CP + &,e[D>Pg"Y3glNGqb&_*n[!i1Xq<JZ]=Q\0mts>SF5Y:,TjGf*'Q-'/8[R$&5r9g>J94JlX + &&_'mn<Rp6S#E(Ipe\0N!NO)'>-XpEUg,9ja)&T)JU28KpW"@QX5JfV!"B"0!fi.Plt%Q1Z + 1"P3ba>S%?`5K?7'+.D,9COu#Y#I_,`U\e:,/T<g0_!]eV["rLKeZK-H\/a5\Ebg6G8[Z@l + f)pA)%F&iMai:h0)W5CHJZ5dVR7c'56X1&eE&0Aeb1?_@Y\SfLXp-5_(g>j*QS!/0[D9H,! + pa)!NGpJn7^s5&i)siH@BKcZRb%VI>RITP.Q,#=f)h2hCOnpW"U;IMg>G_r/T<&E^mN^T>? + hJ5WNHAi\.T_<7r*YnXoqnmf)d1%#]4N(28Fi/Rc$GHJGlVQk-tq*i&m\bE#l@%FOpQ:>R( + s7XoijW%@Z34COjg8"$/Kp!L$am/T;Oa^gB[%i%Aeq[B9SN\-hJI>Qmi@'Xb_Qf)[s<"Ou\ + =!`lf;)W2iUJ;U&.^d?WR"'brqE"=hA4&_U+*,C(AXoYE0#&:bT!tB2W[D4?F!39?+Q&2XE + 2RimYi"9aT6FF5:*nLC5>QLsG"uX14?(0[YCOd_6!/@ualhaoec#<`l^^/Nl*JeK]$*F7Gl + 4I4A6#2,GY;RShf\7ohD.EOP&,+^AgN`a9,Q506p?QF^]6S=3r-u37rnp<DK-0LqJ%0Ltib + c;cENVIHO7snago16nj8I2_pGP7kmDsA:L!dJOroo48W?:Q0J%F)km"bJC+7@L*]4(^,#Q) + *F0(Ig]#DbV$)#niurT"L`PX"#4s*<5<kWL;lp':KH+7Elm]ts^BL\p!Omu%4\8'LfO@/kX + fL%i=uk5E?tp)ibaJ%r>O!!iE$+7KPc^d7u$L\qFr0Id8lkTL*7r"C1A=F\/<rs"8V*6'[Y + &4.d:$4$JV+7Q4Y_SQ6[L\rjI0Zk;$BQ4OpX?D@/"sT-'Ld0lYs+r0C-P-!@5N74nMF7@m& + ,<4jil5Aa;0"<Z+o`BLr+$o>R"*,,ru-[jCsFcH3(GC`5NA^BNs#AE&,>oaj7*)1)@Ac$8I + Zl.9T,%=5"Ndms!7pJQW$ds:Cm7^5NMnFPXGFJ&,AqtV*q>KP.Fd,q-lSMT`:=qr`g!0FfV + A"^6fQ@@h8Bm5NY62R7$sc&,Dd"VM*BdP?Mf6q6E6Ii;]:arbrDD`NuHfk+*0iJ'P>!4,<b + '+7mR'cUIjsa8G`ToB^tQdJlH*4TV3t(5'u=s$DM>%3P4)J'el.7/+A0U@`&WdII6,L]&A< + oSo6dJcA<^r@/o]Y^b*[s%GD#18^;iS5[9(:<3;s+8#V`e0_(j8,Yq"od#%:Z2[`mrD2N47 + ]FpAZ9RWis/TZ/Y)iFn5O/UTXF0<=ep>eL8,[6Got5e+&cZ+VrH04ThkeqnpKq_Bs0)V)_2 + nI#5O:B0Yruj@f\7KY>2*=)m=*7P<ldM[0`Pu*Em<;76YPj=VmPjLJ%)-Nh^r]H[MI$>>AJ + 4r*+8ed_u7Y\l[*Sg*Q>P_-KM`=rof.7Uq-4\l!6r`lgE$M]9dj5?7Wt_8,L%CmfrDjHe3U + _IIY$qc015_VE`q>q7da:s'Q6=JM8>1+7G_L^75pi?Z?$o"9&$+pZ[?ML(qMNpC-#>3JXjD + ,/d;/J&'J3"3:<O`AjV.@dIN^Z'6=Pn:Z;.1&hQ"c8`k3q]KE#Kac$"2';>CJ&@e?rSd8GL + ]dW"AF,c-/>e8?XNIWMbA=c5m)$sp[NF_E+6^G_m**^JfZhXuc:m;YiVni\rf1gacKt8NXT + $Qu#1.&g+6a+Skml)p<0;b2Ohq$[!WJ6V*mr4XP9KphD(O,;1=L)$e*T>a+o[a8rfs2VQ0h + 8pX]!\d>1N"HQ_FDFiVo2frg7P=eu`uED0jh$I[VGZRUQ2aV7P<]NnH"Mfr^k!l,m;VVV8/ + NgC:OENP(k-^>(10T8EX)+o\-#rh+iATY^W$%GopcjPGm_h[T(L_>^21rhDdYUQ,91c33'_ + 9&T+GiD(6Kc62*RAnXpf+6mn+mO[Bn39//;j6f75$C%NIT]KV]W^6WaJc;[p@--fgk,rUb/ + p?DmbTH,s+6qA>/qE/GN9Lh:l&M.762n'=riaVCl7T+%m]u.r[]tD_Z,Q^J!ZGiI-F0esCa + &fEmaCK<3jZ!ED?f0>b>9;KkjHac[EDhDB*`Is'Xo7bn1P"8X+%PH&9A(5F3Be&X-iH.S@T + 4\Fba56$afM<DKfm9+7DJe:Ir/Lde)^cH"W__Jc>>G?M5oA^JANiVnROp$6S_YpQ'^<C_le + !LA7s4_Fu6N8,0t12#6>BJLj84n#6*/Ykq*n`D='t-p#@VrqoR5r6Na19Q^5H>)"S_+7J.e + :[%f!G5hu:s,<Dgn,S;=Wljf<MJ0#J/ArY"(BL`]bm_u$8C!2Cg<O.,!t[<lN:P:K5*'CRO + =^_[n4NoR;NWY6d;WF>Y\,XDC=82b0X,_bBhm.Yrs00i#`t"pm8"$;DO53J+7Pg.&>]_nDV + "<[R;&8F!WNOh]aP4MfZf<_M8#KsTHE[OSDjI<0\J?<gn#tWg^rQ%9uu,7d+o9+&!6`$%H- + (T#,2GQh]`"3&JYn?*8h;-&h6H1c4L]3>,Enr+7V7dU&LqZ4Q=X@'M<u<&PD+Z8EA&mj\Ae + jd:!ec@cfC[X3/5ZNd)Z9G8IN5kY?gK9'!.4nEHYH)%i,ONi))]T!6BPl[f'SOfShnYT].9 + lqYYAdCgM-2!pMV*32LJn^?i@<:9'T*TmSI.r-2E!4QkP\$>RGdJ16!r:.&onk5Z!LK,J?Y + 4FJa+\TQnO$:4[7_J:=Gk*>u&h`j8m.LhW,KI8=$j.bNEkq-i_(np)YDC$`O\0Y%_XEsdnn + >r3D#.s?qWpuSFMT?k?RRSE`imP)n'audPfN?^rToF@Cl\McVZ/=Cs/_hC#a$W6#>]BObEB + Uk0GM`m*6cjVN3^mVo%*s0lN:tl/kGRdN<(ZY8C5^[d1Z6YOBi&%AC:o10Q:pXXY2Bq3AE4 + :e51nLOH3Bt,h8)-$*@bG/SPR"AM^H61[qj*:qkSG9ilC4fooDF%AbrLW7o^4gN.-?F)MPj + b7=,gh/N5HYle/cL>K7p&FK3(D>Oq<[5lM?&s^-k:)c6V1u`S^iitdSo=X+i^o5XWjKV]"P + Kr9p@cd46X-;?%'B'a&I2C1[53h)k/sAM>Np6)"l8/XJPR0V&VX)X4lk-\mCFqk'1@7^n*/ + <8hb=N]g2"%DFml!<M$YLMXksTFm[uUu/nb0JTq]GH4n`uY7G$uMoX!%%K+X_%KEZ7M%6G1 + W;B<ir!dOc[XK_<OVp/[.tli/4c7nIWB_%2$0nl3HON5?36Io9cKnn*DmCF8\`qQ*Bf/5[e + 90.7He9WuIUcd'QDP(dqC.C@n0/<'S0O\Tqt:=&r9/?)Ec\;E&SbL44'0Gr$<+`MJKc*GkO + PnaBPm/sg8/o:J=ZL:\19[N9/;Y'cb9c[030eeS?<%10h',=KNK%+ase?^?bZR7N9>m]n2$ + >jQ7M3BaE6!!KdfPn`0E5nBR;`/]K%98*?22IgpB\Tk0T,!VM;"$?FfamK+3(b2NPDrbn'& + Sfihp\$i;kI:CU8;q/3jm!AQ-273cTA.V47Q$-2;:6U='dUfjj@^ho@i?Uh``pj(QNt^(\' + ^"O$?S=?u_@p&Y";-#3us2@<&=5nZoH"*F^NQm1^ofB%^Yc04Qgo[5L$4Q9@UY@mgh**c^R + XdIM=B;.W^,AW)mddKO4s@(LGjo*_s<bI_Bt4M6u(7s95LX4^#3<?gukBX0[G1ll?-PA+hB + Bsa@DoUbhYV'W=/C=K?&<jKWO[e`ZhCXg%6'Z"TZ>ATA9`g4qEp<u_of#P5QrQL+9']Eq/j + N13iacHC[o!<6cYA\6bDm0g)'$"rhb`$ZRE7GP?%-_b3)0(o]c]oXV;XH+r.5.#>"g&XH2_ + pQJ2cK;UF3QRa&:Dtd7o]4U<B!\'=&TEb@s+&FFk(&H%<Zhj[+I<Q=#Y$LpN"qgG7<l6GLK + sRf7Ma9LCPoP2\>?e'q5_XQT,Q\H1e._/bOF4Z$NgcHL;#b/eNGJ(ONDBi`ErX;*O"VaQ%K + h'XuHMEDkllf&`7Q??b:5Y%_54EBY'!Ie2p.ec1,B"+RJEJ+a8#2@f$'',jWXJG'q50#Fo[ + +WIp1*&]=!.m[YTiuJ``A$Og.'L-+b6Y'tTA@,!?oM2nq;Xnc)n]r@IcRD=AB1@,PG'7dnp + 2btO+\.<G8(N5^(50E1M+Eql8B^m%%rW^k952gNIC,[oQDf9MSGAPFJ2Xf.<k4*nF\D:OK! + r]nG0>flMbOhGKf7UYQJIMjTh[A@DOB0.f\]I5V,(4UM>$a@f)8DRa)Em@E-2N4FUnPZf.G + Sj/h$0cpE*9l,1*eH;R\.'=WK0k+YYi3dWm9_WBYIs7s$aK0ssk6$"nAq=`mk;1DOCUBodE + pCNau+1j*r,$+G+YI<V)p2;)mW[tRr9M-1XRgj+B.D:P"RT6Z]sH-PMu&Ik-aP?Ti1U_g:? + \Y>oZ\Qh),Ra\O2'=asLb?\2q?(&N7fu788aZVNFX&\P9<UkNuH[aN@IhhnF[K.5OpHR:25 + V!"H(^XVRqa!%S+`nZr<$&?p-"<)f@bMKIH5@S_)hT%M[JD*9Zpg^ommPesUKC*_OoM3-?U + a-TUe`We)GPrI;20*37oCQ'g0F;-K;MO*8@X5Jpk>V$8#LTmVlUbm<242MVeW:`CANh*HB. + hWD'q6V-]bg;n%U8+M/<lcrE?B&ZC*08j!m`b:70j4k`'Kl"g"f1XRHa=qU[9`$'1P6O4r\ + IRd#o[m*Al*">qL/P4_`-!E1cT;jer9cuH<"0sOQ%0f'\hP91)M,meWA1A>!/:p%'#ZSV2A + G10*k%?\"obr&F(%=)o`]2K1UM[l4^=a>S,1OWF?Jt\Tl&@79T(TBE7+h-th\1SH)EA9M<Y + 7nIQ'K_WqN^5d1_`Y2*4Vup;H``i#Z(5srS\)M)mY@AgM-sKP5P>Q!q=VE]q*=Wk5uo"WH3 + kPa-QGn9Jkk97==kPX4/*QNU0'JuQp7>?6F[k%nPiSCqEH*M)hj_NL!MWPmlM\U+(p`_V7: + TCpidr"H`!0Z^NbA(e<Piq9hF&e`>X<HHA0>JT)%/O96ulC[_o)s\#L:W.!3]^f%$eQaf?9 + '.Fd6)2Wp'alRMgrXE`h,S=NIF'?W<-!]^&YPnT67hbguROP9;g'(:rdrK3VjOnCX;R4$65 + Fj61CZ+T%;gEVq%-^7O]<V&"hq_OL!2jJGO<te.6>=4]\8!]?A=?B;:>n^?0j]O_cGnBLk> + A'=gV:)cP[p:e9gO5LeJJ,X^>[*3;S!)ep:L.s9\bFXc;-R@*eJ=XX(A7:2F6R&BiOg&i]M + nX=RI@f6WP&n=5dV,S'H)I+iIRPbJ_TF@$U*1m0^`5AU!E>Gp-eBI"b[BsgU:/QS\`-g6en + 1RB"T>ZP]<O*fu"if_cgOp1l!<:BAW?HpDrq)O+F5$V'Xt"q/U&FfVPPaW@&Cl-[l]IHuVi + KV8o/Oa*`A2]!]V.1*?FRX;m>E*0i%#c&TB_Nq1)K3no^3e)^66!o?q[YW^1=+U!2/O_k\/ + *c7&l,NgpMYrOEZ&+`Turb6sMTB:qQSd8q[).81iN"F#40gQ4%6Nh-0?\0)eL"IPh#[<J.$ + W'16&?u?gbFjQ&+]\kJJe[-s.Ei?u"=QPBn3V7)#Yfma+G@6J.[L8`_$LZ>4:mJT,1W?>80 + JHK6@oban3R6hIfpiZ#I$MUWX(\<%\SHA+QDPe)o2a*6*(W3"<$*iK.%k^#V^i<nF/_c&6f + 8Q5m;N>+K>\rJdNWPGT`J7";8NRO?jit7APM@@"JY,IL%!H#BfN$j:F6Q%7((XL`g.4(P2g + `JQO$nLBIq"!`2.@&0]8L"5n^n+>sK6Jcbf<5ZA:."9_!jrWjVb#R,e\+Fl[M&-W1:eVLF/ + Qd=pg&3o(!8*gi`"F\&++nU@.-mA)3*q22rHQ\*D#^RVKRL"1*80QuE*XEqGJfW4l#^2kr@ + L.+LLJeD"`5j+KJfNttb^ph>H3eO6LDgG<+GU:0E(<GB^4I<F+hE7EOr=UCTSCl#CnQO"#] + %Q'+fp86W$/*k)KNCpBcr.f#\Y?8I)(=Oa<@"()2KH%Jf.Kj#\9T_63q(oL,A+G(oSU6Jf& + /EKRt$sq?UIOL&)'^+GK1oJes4dG(LN$+``/N'Uf;3TS9ZW>+gSG3._oZ+_60?-m<"sTS7[ + t=!333#Z`(%?!r7!80Ll_'aPsY>bHd+#Z@=L+p_&=Kb]Dq'IY+iJeR>k4_C@?l3L--K\?]+ + +GA"DJeJD5/qO_W+Y.N)KVA`DTS/I68DQf[+G(3h+WQ(GW$*%)TS-JS73I7U#Xi%@+V')8a + <:nB&;VJ7KV3u2#XG&9!XM$M80Ih^&#^WGJe)N;oo>\tap:*PK=V=MAB5nYJe!SZk(4(6+Q + Ji^K7X@fTS%7j2WmURfRaQG+pNXlkTU^jTniIaJ"d2E-)RDmZ7q:\kh5rr+6`h*OWWg2rf_ + ->6<'6t#PqbVVFUJrJ#:9_E.=ciH?c&1$6fDBTB\01U`\l!rhaVVEhKB]MS]:mTBai'Xrls + !rigCc'$.C2$Xs%BTBgLr\0(%!rjm0oZLGO\MuipmTBm0h_B8,!rkrs';]*P18,FK[ZA8<. + J$TCW1k2j&q`N4^9elXqTC"rDeK=0ermr7ZLS3<YNO*_V[jV&tJ%*JqJ:G(!qhagPc9miZ+ + 7<kBkTB5TrotTnZ2X*=:=H`A4@f:cJ%UR6b^Z48rd(4DloiD)qS717IF$"75@aWjO7WAS&. + /M)W$HkcJc:8Aq@+P14Fa%:re05;'gh+q%Zg6A5LB3*6mMXBO7Z%/d6'0Q.'48[&cR^oqD0 + 5We:465rf0MF4,@SC+/BU.5LL\S8E9XoO7\`&dV/YPnPL^21ocj3qH+j(Ck&;/rg1\%@>no + [18]0ARn*<k+6gFfV\/oua80q=C#(nL[/-FcqLB[Q%"G3Qrh7C/M3)I(7]>u(V+:BH+6m*\ + WKI1Wa82?iC4/pY2,6Bd0`P,trDepO>!LP^s&Ln;=fYP?Y/gCM+6rKJX7?1n8,C+FlP<[*F + cs&]GlLparFh8bVE`Y1s'"I]Cs6J![oW@c+7"`4Y#52/a85$Bl`P!*e_[r?ReIoifRL)erk + ?GLr?(A)Ej-;`_,rc,+7(D*YgNHfa86GjlqVl3<\DBogE.O(G^m"2rlE.W,p2KFK!L\Cb?9 + 0J+7.'uZVg_Ha87k=m-]b;epbtL,=<V"/;B8W-I^$2'd)LAJ!$%qeCqN;CMe3t[IR3[a]SQ + hXd-1ML=FrsF)Z""oRE(pr_Qh*F`/l!^:3h8;oe]2+6?1GPueCQ>YBupY!'gk1&b<Gq.Cf2 + V9:l#1?RBXT6',LJ!Z;s?H;kiFO$0$]!kl/h0Fo#jtqRTpM0(9_n(&Pq;=@;5!R9ts"nX3i + k1VDo3QdkH7$jcRo00%hRh?c:N>he#K6Ct3<(u`r8kYJcMHF6msZq7q44eiG=VJdIkTd[5N + i+JTFpQ5kInbT(_Hf,;>NM5!XTD0"@(6Us$4q;$UL^O#GD8EKLf3pTn32tTgU8^E4-S#(hX + 9);#`t:r>.hgE=X5b5_r8M+sZ(GO9bVKM,>TH`;$)AiiH-P6iAJFoW8nge6\(GMD@Xha?S- + -s%NUo2+G++)l&(,Nfh^O&+oKYe):7%dI'.fklDp&,_T$IrC7Ck+@"A?Migmu84b6Z,o$F[ + <($U^8Z=KnAGi-cEgBV(62n!AqRDf2W`Mh"AM#48[TN_2AInI%0.#DgQno4]b^#5X#Q!:!l + [i`mae:PgUt2!X\::[_rk+$_oUE1-E)%k(3N"Y7+7'PgY[ROJ-Z&.@'?YVsC$`foq\UFABR + d;/q`cJ4!hbbrK/0/"b6Rns+7-k!d)mM"W219(bkQ[p!X2'76Ukc!.AeraSOk7f-u,kbQ') + bL8_X7FVDQSe[V!cZ$)oj2D8^qQl@Dd$]6C3M,c8'Ps&,k.:9"dE_ppNR=BpCVWtfBP<Tc! + rlNqP`Y(2#QC=-4cA#FGA]Y^&&?pEtRG-;D/gK1^6Ak_O,+8,oTfN4+'lp7[0VT%d1q]02u + PLt3t<8X2ZMYP6jS$TPOoY-e_FO$l=IY7XL>,td)T@L,-kH4iHqe9o!/\&8;f_esp*H.U1_ + 74\)$pff5K91[!KOb#E>mmJ9@859?8<FTR62u,rmGE[qlL?*0E/u1ks1K5Kp-cEWHdYec8e + G0ThcoPu@cUe/M0UgF;?)/c*X0@LZ8Q*djIN'Es2"J#$/o"^+#(Qd;,S*XiS6YRE?'q"R$g + Ytkpepf?7j.eDGB.;=K@^OVB>Tn*Fm2o.l$n9=A'Q:O8Oounk?``\M7hNA[O8ur_gn,>%^O + qZFUi_f,sg80P2lX2l?:]?]5&-O8R\#Z\ELke%7ZG"t;^Urd)nYq`msArLhgg.%oW#6ti\? + USr;FdOa@K;/uW4[)53R)K(TmRR'KP$W3_e:K%l(:tIR)0Pj_9Z>1(cXP7X#Vle7;[p=5Up + %H2#/deJc8u)B/6]B\u?-+SLat!;i2OViKWj80.[%/DL^ft^t@rNrdfdjVe2`Ssh8`$p[^` + FE2*\2LF96qY#HRrmr/;`[Okh`fEn$i_L+"GSY4+n*%Kcbr%/NN\[=o:7Ho!k`YXdT<n]8h + rPh4S66Xo"6RU>d<%PRq>i+T%HWC(d\,'=jMB3N<oV]'UZHmifT@&Yl!C$_]47,Hk8r\k+/ + .=t)LIqBEfS,1EP)j/Y5Y!$aQ,,>//,X0<h,YqU2[Y`_,QZp-WU5eCeA,WcP_9+jWS]-N<I + 0iCZLE_O+@<BLUc4<#696QN"%`>/!a-(Dq1,$_E??+d.N4M"uab:'5d.]-_&(GjH%,;,k:0 + W*S[`LGF+)qQlLFL-:9Z^b>b\p;!44K$@dVqXJV/)_lqi\W]LZs&0jHtPWXM8"=/W67l5j6 + IUEO.'76^=na=P*Eu`;ju07[9N2NOg1mmF>]2g[A-qjC7guiTuW'tS)[kjWhl4(Vjo8IMVD + [M>Q61paf=UJ[ZIu,UME+UZ^i#BSL\T:)fN1o#V2n-X3?G[6/B"KG!O3d*[8KmlZo(3HFLO + !/:$N^S<Go%m^N@M6!DPU1=/U>KV*=>\83'88c,W+S2d5B\?m;/WWPQ`"M"@Q3=I)SRc,Bh + j%;t/T^.lRCaUi]'/#fS3MI<MZ^a@nmNK129&#u3qk1M?0J?$D05RpT;CFS9VaF)R,0KjWC + T=-;X2Bhr,=;PX;m2C;Ye(l<0S2D@U-1S869A\d6lQX^6P1SB\s1+E]?E`!@SAM0a?0N#4; + 5S"WuRs/*mDgHV2N@+HquLQ>r#C,4L/BX_p(V3.Ag<"c!/PlS'f3%0;d2QVW63ne(23[>Vg + ,;1Q$?=Z%kK[h*qc8Vpdl.j5?==iP$jS1eNHYC5+o\Rm(oW7[m&Le8#sQla6;$RY5Rmlu0W + 6X?R&Y2,dPr4'2fIoZ(2/a(`(SHhYR=pm]b.W^4G@]DKXlr5[L08*[,pN.=.rJNsp$*7TTk + +je;("NXgOaD'0qHFY&TM*R;_5bZuKZG/>&G=^b=NB@_C";"-:l,b1`8Mh)%g_;<WJ@Hkk3 + &p*;KUG,jRNJW#6+!.J_>_:!fcVQ461gf\PTZW6#G@#"augok9I-:d-*CI<3IId9OUjdKWk + tj<Trb?4bcSb9*l@45\eCg])l+*'1<Vd9b=X;.>W']@2PU+.YPL%JS2nco3m5)nbKC*b[(\ + og^I.Y/,Q,A3g-\Ob6HhPZbXtCL>83m?a$b$j7"S3&P8_(Q_b@tdQ/kY5jA&D>>YP>t9b^G + O"B%"%be3#e4Sa"dACj7jCe]jjc(%q]Wc64p2((fJ7F^0_jPM>Di%r5t:)m]f/7QmcJBgeT + -q*2eAEQF(kU;DS1noq(XD5JNlpenZ7apa"j&*P[NkY^:588,W%!+WiF?`'u^J^W1X'A/I? + &C0.8#,oVX'rc\@g^G/5NI;io4L;rBT$\Y^at,b4)D]2D@?r/5]hfYK5s5EahY!9^q>Vt'T + Ko`Nkjo@5l/I/Z[BkFILY'Ga\3Dj=n5.#(<Lq?T4Ae@.u$$2S%+RM_9AIdh&SK(N_0Hs_As + dl1QoU@"[Z1c6=cu;,cF%_WBua`6DEg,]:DRCSro6i9(Xc0![C>P0hWcI,'5UoPGYpE[Q9g + .6Zfh*Kf6Nt3]cdi9>iqceN5iL5.aBP9FO21*C%/p6T^u79N4GSAOJW@8!QJ5ba_8KW`.-S + 9?bURV0l"C'?<4od(H&c73'ap/CUIieAY,3`EHroCG&U[e&@O$(W>&s[+nZFfgXZLQt5*nr + 8?,[hSpeu)$K"i7-.Goj@3qHRAB&dN9So/l*SuS[-R(d"`$U!;V'(]f%ff'>k6JLo:%l7WR + LQ:CL"W.F\e9G:SV=4ZXQGTGu*7B:[;UWqe*tjI8D5=:bun&6Z#A*JP^38:j[1IMfPlKKe) + Ku=EA]%jUPC`%p5lZfY%mLam@[6bJ@2>\1AFnD3@bEP;mED;5KO"h3KXNM`AqQdI!@E-(:t + >,<7O>g!\tKD4`hA.+3O;dZ(!3`M:khUnQV@Y9YdTH_WqK0Nt;->-k,1`A?5r0&#=b3kMLe + UTUgqZ7odn4"S+X6OVXY%6J@89Ja5a/\3Z(]K=oh]Cij:D8&tr_GlN1e='FfX!#@J9Y?Tdg + g*]\D,<@F;-]Aa-@JfJgX3\kff_ta>jF5[F4ealg,#SRZb,#+jPi?"6!\7m^*D[`CZRC,g9 + d@4^6IqaJr\EHm8g6L^>i*?<Ga1#n^d;55<SR>*;*A`>?<r]f1EVV>,/M&@7S4EWg.k0X(= + 2*J@:'6=5'pfX)(=*D6%f1X,CpU*/V-^K[?iTd(=Htc%o3LjA>-\5n+C7e.UEa'3O?13#*0 + 2%2L$c(G-mMd?BAP]p7!YQI3m760jNXm2nq8+?:1+8jefqbp6HJ,rofh=p68s<@BK4.oN.5 + _UYJ\c)+CnU!i>,deY:h$M_M-1:iE&>2;&>m5@#L3BH65>9,`Y/NUKh4hEhkgKd!ID*L+06 + 9CFM>Fe+8X[B_M7_@t'gY3W7V8'Z*9N7k*<40V+IDf+@`?k2s13?H"K?hG9;V\BQgq2"RK@ + EVlc;f;=<K#KubLt/-dT+98<R]dD'AlPBelE73<ZC'g>NF(Xg/_5.<b(@5UZs8^:.EE&W=) + R0#"r8D9NLI[5:]g7^#d:DSmHP].OJ(aX`n>Vll8Jq^[6AZNURq->!OrpA]=9^7U<fXK4Y# + VAek,DCNdMBGUu$i8IEILD2^$C!(g)4i#NQ7%W'7Udq7^+X`arkjd4nrR:esW/b>-<Ae!pP + %b^076@5*&VL-Ikm,uop0+J`>qX\-<0/%L$91&I<9rtPT*D;BqiV&,'DBQjAZf3TsU[BBq' + t<17OeckB`*L"7SsA<DQJ;#J`3[B:p+K,*+la$MZ<j*H1FQu1;6n2"c$dfGNhe$$3^pa/A& + bGpIQb[Se78KZ-iQD$:"Wu7YUFrg`g,=iDR<0`hWncG<l(hI]Q'p"9i![ZAG,(\@p?]h?#/ + QdANO:29`*pUrG3L#hX(:!r;g74Z#!G2cpdQQ?1b1PaBrcihgC==N/T:cqG>bf?cH[)"+3B + RII.5Pi!k`,*#:LldpP@V;2^2qX,-.TE+"<Vi0>?kVV,@cg0i0q+O1HhC?Aq&-LLL=kJ\m\ + bUbd:ib.s#>'$E*$`!,j)/)/g3d`eGQKW""*P063ds`CV[d2[+N)RHM;q?s_cL5HN5\Us!k + p$l1-BqJ)Pt[4(9VWP@I7\@#RH"0=4G6MCT))qLSm6We`C%sietHSpdURu2j-3_d%F=<V=m + CE>C5Y/m7]P#$X4@3NZmQ)nm:,AZA8;QEE2KqlG-e.0[+:hVW>;qfp#,?-\8_B:CSjj5<t] + ;fF)aY4AM4eap$0l2ld*iBWi!XQV0gPuI-a;lAZKTX]`dH@#&J^>neHf(Sm\V^,LFHS?aaM + 9B$OMf-t[o-nt+6+:Fk?UCi\+V=[+QOp'5XKf4Q*Ek:Ug`XW[40,%/osF)@LiIbi]VhTDGI + d[&h_[4:ddY&5hgmQWnhLHis7jjP:5oHc;81q.@^Y@rVKBU(R@UBU)+8D?QqgK*`UmNfDf- + .EDO`(':O[nkbt7H1?cod*.IAshTH<:>OYoklMKf2ut!;"^]Y@qT$7k+^C,UXa7XZUY%>"j + kf%dI9&nA)lBToj6\^@rQ;:p3#$=4k]=jZ"-esA7]EC^.<4hDK+D"h@c,u(#sKaE9-;SpI8 + !R<;9dWUN^nuGE$k6(%#RRA`\UGAX!5^9n)WgJ'_2Gluhu4j)F,Q$"a4mnhl/B7a'G5bfKM + &d/M>]I1^LYPO/g>m2mi]#:rH$e'Wp"o'I=cr1*.kQ['=5B//Lh5Ei5Kg<qTso4Hd!FX?G; + &EgM_mKKA,^4'Kl4`3,0F7pGa00k<n!WL`&2;k\cZjEc7C-\5,kS$Pkd=F+s9_c7,SH<E=R + ?/b#$'c]c113e3'-7:rQ,&ck-6rnQ!b"?]1M@F'"M]L@TM*u9$$cSX^m@kDbR&8]JM#eQBG + /l![&Lj,E$^_T@ffb6+A2DA\cf-d.j.Hr4:,!h<5=b1,sB*JVL^1(8k9ST"JWTFPV=Bd#sS + Je@3A.o&on,EJL7$]S9tVt!_^=lcm5c'"I+H_i(5=07md>K5`tO]F9rlf7Va,;\.U7oM1Hj + /YTu=;%0Al3OH:_0!X++++CI_G&c\$r5<t:6,NK.)!^1ZK8!jnJ"F#D;]<EN]#jDCN^lD59 + O.lbrJK*N:kRk;a!]E<'E$J<fe,"V6+@A0m1E]%7">W6@&B9808.`Xh$kRF^0;(Z&">6?6i + WLjN-kNb:$RcRjJI:o["=kT]WWXdo6CJ$+7ApclJI2YoSq.3qZ32MI6=L'DTL)V,JI*_9OF + []$&<)/GZ;LfL+@6tL+Ws)[VL]!Y&:T08a:NZK#EnW\*M>^H"<=(#`6No<kR_Q]#,i)HJHg + 1Y";r=JM?Fb=6%&BW"iq6YJH^i@=$e#q;?R],5sb\fTKtFVJHVn_8:^nW&4K885md`++@,c + +%j4.)7Y(Yt&2o(A8.[RX+@*dH$_Tbj":CeeV/ChcBFlG?![nU'?m%^\":$&7C'4_`5[B\, + !D!b7JH6#f%r*4P1'@ZO5U$=3gSbYdJH.H%MLXF54je?S#Pn:K+/feHJKK*!"FVC_aom)78 + %nVI*lnrYJKBUZk(+RU1'Dip7tLkfTLX/HJK:[$fRY&V&_)@P377qO+@eHqF!*t*7Y)P8&] + TAA8.i^i*#Wc"DkKSj"E'l%k&,_hBG%V&)^l=)J"YL.&;;9`Jc:Fsk`Pk%+6^!/N+sch30, + <k+o[UrkqW1%+6cZ%Q>A!j@$r?u_>]prl-]L%+6i=pTPc4lLncC+@K**ql>cg%+6o!fWc0G + nYcTFrqRV0X#PuAgXG?YrJ#s]Re@$sPOoDk_l_4<i+7$cB]cZS'7_^Vc'+BApVu%$TYt+[. + J$I&k+ke\FUFaY3m)f7P+7/Oscl_WkL=.p'6WDYZm:lRP+753ig)o^kVVF+)j*]f-mKrmP+ + 7:l_j<*ek`o];,K;@fTm]$3P+7@PUmN:lkk3tK/,L#g&mn*NP+6U.`T)nq=TGdAca5Hq-oC + bDpnGb`Ur;dH$#X?Zm'L<!R"sF$HK?*g$+6ZONTjdqT#Po?lW,W=l"@tc))#m"Ar=fe7<'S + c<s$b;f(aC;>NX,D>+6_p<UVZqjL\a8lW<jaoA<;u[qF_pp3.Ib*rfi37</RYX/1%+%Qj<I + p+6eT2VEt3LL\b\CWMqd&jPZR6qK!bCfRKfMrgnoAI#b3%5U[oe5L_+];$6bc&+pc(e8YFc + &fF7i74b<kqO&GjE.=kGrhp(uU*&Z`9<)Q"Wg.Q'<MTLp&+sHteY)qC_u3h4KljL5o"lL7" + FmL=riq7Ta<0^rJ#pb4Z^-3k>/U;RO7f_Af$OG$KDf^^Ktt3b,3bN=STV*_rk$5InK7)BCT + gb+^/sOu?\A<,O7iW>fGOWrU]#hjL(_AUCCqZT5_$$nrl%D)(E`!SJ$HQTa&r3^A>B*d&,& + a_fgu-SA,V^Sp0U.SM_etHjF=Lerm&R]4Wj%gJWP&25KHCq+_1G)[$Hg&)KS_i9h:8)niB" + Vq#;TkAZRc/]\"/:@O:(4R#gfM5KTs?D%3bZ2[8?uMAZ@AU\pmJnrhj6_gHCJ!Pp`>Y!:(M + s!qt1_mm/oj4oQVEb2>%QI5\9grl(+Nd8u4-V3J0q#<#mr5#tB;X7V8Z$($8g6j\pAOlQ_G + Ac[&49pQ0*[.@%k+$piOoB+P>KV6;60UO&W,>-$]-$2-J"-2@p7Cm6Hr#mq*7=b,a8++)k= + tW`Vqh1lPOs<ZKR]RJrcq$0kC7F7s$-hn!?`QY+6VF/T9p>p?u-@*0MVtk<"_FB=T:[kD@J + nq5mX/0-A9H^J"cE3LgagEL%*)"_cUgdd>7flA,R=`fQe#P'L[c))'P(5MEfNKs%+q'-:J3 + :'dC"c9&ok$O7]kFdd17tOb,;W8Bi$9=T;*jrATf0iu;K=E/mfD4%Ei\5L]u=:iZ%ha8#f[ + j=H(Jl:c],;?!EQClFMi8kMZh0d[Vps&C<B<QXJe-tOBpPk(\NX0MZ-8,Buco"%ss8Sp(+e + @JfCrFh8bV_BFp_jIbOAB^=U5M$lL>dHV,9blHr(So_+le$]jJc<B\o\H#nNcNEjdlLT-s' + ^QYLJI[$4K#"KT+gL<1#`,Q#Q#^<'E3R0=q<r5>mk73rL+8jD+&&k'Va)cTX6V47qhiEBh^ + (?&Q1C6a8IH`FLIODVR9*S8M+agrgVB*G>DFAC8_:-TXQZU;//6cWGUn5<8sWP>T!L@F]PQ + QQP3DX).bBP:k.%'`E=20R]PW+]U.5B5O30)XtHj,f0^<`9T->$p$07mkBQGH$(j%m'S"bN + &RqhOb^#L:fpd2c5O>54ZPI9C4j,m+c<KBPp57:%CJamMAZIn*IJT$%@;N'B[XXA/gn+-#! + D!+&\/,JU^q5JS:`9Rj_uAcQgRe]njjHJo>n+Yjs)p$FgkDu@n"Q%IMrDJO]XOL)_ruMq&a + DZ<j8Si246q=SFABSB74Q8rs*sMJ"2M0f049IURU\>W_72]8iAfX4Yd/OMZ.sif]K:o/m!Z + fE/Ol]W&3o\S.`IQ37q2-TW)YC:+8FG,j-`+Zn`$lUWod:lr.U7g1pE8`-"F$ARkDb\:Wb[ + m@*BUl[atB!+8Kh-KNu9Z(K0VDF&t-AN7"*#AD`mP]n%k,&NY^HFjBgFGY\bC`L+O_T4@me + BMAq$BF]l19X0s]_>g;&Ng$2:91q)'JO[$$7\gJ<:_>iZW@:27V2\fKIN;PBolW0/[-=pGn + ("PpI^uD:etb6NRJcalJ(U#X_UW90ZHEa&EXeV@k:E]I0\XD/gBU("9%\7Ni,pWg0eLCg:! + 0XeE3H0]h1IcEc/>h(Nj0spZ*6FL#GU*K-@4u1HRh#Y%L.;5$FD2+[&;?[0Oj"]io1>PId: + Tq.rPYf14Uu8\#9eH-kbT.roAk\jNEd?$_2iE>!d+5KPk81kYf$+<p'T\k=B:LMo^ZHd"dX + 97rF4JlemUMk_X*F%*kH%DPFneZG9#>^sLs(8B0tS(l^'hNGL$S%a'fLcGN3D_oVQ=`=hSF + #jtA]O\Af<Nq-,Op6)TT`ecUo#s.R0@dqK5nI1#7N/EnH*a#TiQL?0Baa2*$Ie-"6o8c#W8 + XR]I86mdbRV^'hcW$BMesijL?k6_:cXtIZfZslZpI6S*M=1,_!hZS%TC7YK&!!=oP0qDldR + kYY#'fu:18AcfUW/=i;6n[uT%%\iV+.P_`j"!&:=ZIQr5rtpb'7b4CaX(=f2(8%`pBZonCS + qVfPQNG$E.pdYoesmEQt$-&-Ap\0!)>cg?1ZS/[kaQgiWtc+jIrK%ER>O-Eh'&YOX=%Vh3a + o2R)A+Z"K<Xj'pmtpB6C(HODTU:'<PZ#iO'5ZtIamkLAIcZJk3r#0UJ*$Yk/d0KlQqj,e`! + kRb7EL?*"jjK;8b$^cPsTdc",KJ$Zp:nkQM<4fH9k9sm(DL2aab_Kua/'`s,DN,&tjG?OrM + 2n)tm\&iAf"_Qu^kfMd,f].f]+0c>ND(UWNlXu`bj>u<_hds''*@Rc"R[o*&Bn%7Cg/VhoT + F+en'N2raZ.=>-Le!*nF%#(%#1%KO#)h>QEMS)O[@1sI*.XFo4a0TYu8c%Rh^dQo[."<&Rq + 5'd[Q3M2U>d$O(@sHG0\4`cVo;eC$PGrIi+.LT?Rm,%ud1-OSMbBdL%&DPG7n'0)BRfBX+` + :nZr$=RephpC6?7-n\Y2Y`bVj%VP_HU&()CneK'D!*Qj+SOlH?pk5KAcDmA`1-OCkjocK7i + EKC$uXe+6E#hl$9!7DG[&eoH9)$,m@!QSII$LZ]Od3?id1N5&n:c*FF3s2cQ"7ed(nj]oTX + X)7f,nNp"8&$@.5^_!e"nH.-11kt*C:2+L-P18F:j".@s!Q!7JC9&U15?-K*=/^-jN^[QDH + K4ZRjmj!.O\.DE2P1iWeM(f]M<_7o"+$QEsqQV$n.5hONB'#bq03r/PGqu'&*l$h[T/9N&' + P3B[JHZm4T%@01b+VN&$G,rt"]'&1IVkCeF+jlS1$];fNU.Yo>F^2)6m213"Y*;(BWT&Fjg + "n\p7sZTf,p6C3m+'QZn]WJM>UZC,c8'm!P`d9N,sXIBf52N_]3d;5=ME6_6kp="E`-7'KB + Kc!aET9G6OdubLT#oQGSq(J-s&"[E2V)ja;do3EuYHT3([2Y1;47,f@%9+UXaS_1F4Uks#/ + SZXfgAS;64tV*[9n4[tm/GE&5>@7>@_VlIrr;NjEj>oMEXMlF3rnQqgJ,:'XhZX[+!NB`,% + kg<YU^pe/pHe?Y`q'&E'3!p?R/H:,a:jWcq`LDLF$n@-+$k70OWjlY9o?F-IckkOE0@@f-d + eL-hMlJn:X$1M($`1.0qRU:mEJkR"Omu\uoN)P,RO(9+'+P$PKh%1:[dU]aMo6$k(rd%[@I + *RRsg6%5QO0/uoH,YY6h6%T;Od:;IG.`_Ni6%s%PCDV#F'%hMYG&<dNb1D(34'bO"^&WC8h + Y5pCS#$(1B1=7[0$!/o[2)C@SQ>o%/O!aGH8Fn.2'[ono'h\*O7l@\S():%3DcmjPr>,!G( + Gg6*F*e_0Ii%A4(bG[\c\"4GLh+ns3H:BGWZ*tgT/n^$U9UTE.Q#V:Yg`9C4-cj.bt@lX;& + iTF4LMd`m9okZB,u-84k7_>%<h^[I3+[*55!Yp/WB]]P,gJ&X,m?gmABrK%:>>3?d6&f'H: + FM=^[-S!`flg0J,Wb)acM)hCpqGP!NQA6XnP7hiLIfnl'%_<FaN\i:("1;IsC'B4TM,i_XO + PZ?KlEH"GKQj04'p$]/JRNsPGuj\V:8G'cfhIca[`8lg\#er%*oZY;%C$adHYe@fT,OUQ,o + /G?,<euqdXV[\Zg/f)&np:j?T]ah3_0/h!L(=,cOdgsaV`&?>fOUH%Zm1D2dDUfD=%fL<G* + H-d#Dp3VBpB:#K2cCM';caV&QPWTp)OOSIb7?Z+'3S<O/N,OAbjf<<XPIs!itkc`p@3Q4=% + ub_;"s]a=>s?T='X-mR<DAq)AST^op^.T2g9>LGG^^1MG2N:9cOU?VDYl\NEk$hdaj;*>`+ + 3d/U8C3I]9a-WXXd:nb1X9jZiG&5V8ZpFn7kr2aHZW!AkSHcl6A7+^hZ&gsdc]<%N7#0X,E + NhGQJmWuYZM,2Z,l,jkZ=Q9)A?$K2V*iG2G(X'4Km-RUMt[h`/VDDpP'K]G%(8="$^c;."I + F\,+c8W0PT'VOTmWG%NsB[j3J['OIg[YOLd^!;T$1<Sj>o4lJDl7T%fcE=tV]YR@QlgjK19 + Ijr'0^S5X0FliSPlYaP"R^C=DKQAMoao+t*Dqk"&m"m-2ZHZn'2l:G;X%[i/=.%c3qDf4ER + dKu'hIrd<:j0f<ARu^Dc:^5CA$1=<d-]-YA%&37oq/"=)@gPFaj*_O*.jeFnL^h<KVHiPbN + ;fdgrE](O2a$1E3a*PIHEbGsM;8^Qb(RD0\nTe^'M)Wc*/frq507=1ad-^L#0[!)9Dnfm=k + lf9d<TY'8VE9(@?E.^0eY,Bb6!(\E!`VZ_/tReR#4\[;U,6(?L@IC[6"[S`R),_*AP#M*=S + Qo1H03G.\V#qf8i3U\F*Xe/XI]@^+6/'!@N[(Ubp/68O>=Diul)\#iSU,[U[qC)nt_kS'/N + VYREQIDW(T;5SaD@YnBmdA'J<AD^1V7-*<GeZ$#JW*S[aVo4W%%F/](s9AE2)chA="C6d0$ + LM#WL3@Xq"]"BCDW%Nc[)cSD#p\=<m_d"3K4u?[?AtLbrW8(UQ;M*g=LQE1t7pR4?5P%>3/ + u?Ps%'o4dV\;3qIYrja*-VHHMk`pU*50\KA;o+:>f01^UEGbEp]mgQ33*q]D2lh-fWr!fba + 9\*9<_iL0="RP7%6Q7ma[97SirJ87<TGRm6q'1Oqs[@:*GoP]=<Fb4CO[J2CG(c*S-2^n!U + K@H*o3(9GRT&t!fk1bBXfN2bsI1'qF\@?%AmZ4%u`M%7s\X'LUPgtQ=gP?7O\p0',G`>JNO + M^n$M3RgmdfkUB$H1Sp:qOc*qH$O3rt5hG]fKY^(BX,(1@`!6N7rDQO"1o?0tt5MNUK#j2, + B6ZpPul_Nu'^E)##s_kE"/5_"e/7'n#cgMYMQ<X4\;40:*R&S\fXsXRiR2o<H1f[B5^rGZ2 + G'PK.pjB<HVR>SG^o>46b4:tJiM5'^90Rf-OIAR6&IQAW/koEDJna-W<AZ$$)f)23L/LU&` + aaS4eaI$M#3mmEH56hg;[)`u2c1IUpqZoAA]D@N)B?^pOr[2)Q^2H*+(=1,OeSLupnFG$-_ + )9nIac.d)J4)l^]F\1>5cEs@lnu]D;O18HjBjCTeqi+8DBhUL'9UKe6H^iD@[7ust\i>>:Y + .LG#l(]s(],&fBp=2sm6H":4:j^*;\l7*?bATO:V>.aS)qRuY=cAehebeBH?"^(fgXb-JW- + (h5\rD`8=kD22O#(_,=$P?-$$9D]3#iN3]G9+BJ_@An_:N,4*Mmq-WB+95=k@f6'r@*62m' + d.>8+t[>2sl'6Ikm%4]tDUHLY7q='ZL(?!@,Oq-M^a@m?AnEEm?e]Q(1+nZ`]9YuDCAS:<h + pK-C+8@,!!Kee?.<0s]:diKb]UegIeJq3m<;Rab'$&6#r:5Kd(p7M\M$p_fSs,Fk!<SBuJf + emHZ;@n9bX\D5h0qeq-*mESp[BH6E3QrD<mK1d3]L#N+4-@d3!a<</A8qb"e0LA/=Ns$[n# + dHoD&dUjV&>4[nlk"^N+2J3/60o/.."VreK;]pT#WS3f#4Opc&8MCe5mDDO+NasEJd`cRqC + E1`";\fWO?m/5#V(E5@"O1WSd6[E_$$u.,S3HK&Qk]X(a+D9++a`jJ_OuP3<Tf-"&M8-g'A + OI"lOrF+BAa^^qg(k5a2g)":/J0JG:6J#Ru@f+Fq,+&/><N_#Y*45'dJ=JcT8080AF="9Cd + g0g[Dj@BnL%KFdhL&c2][5p(Hp,O,R1Jj(<<IOl)u"F@m*O@PfQjj8TA@#kR<^'O/n_&]aM + A.dDrF[7$380ai7kCP^eNaHT7aTQV"*)K-6&]+6o2rK\Z+hE7EO9u81TSCl#CnQO"#]%84+ + fp86W$/*k)K;\^Bcr.f#\Y?8Houuua<@"()2KH%Jf.EX#\9T_63q(oL,<Fm(oSU6Jf&/EKR + t$ql3Lc?L&)'^+GK0@Jes4dG(LN$+``/N&rHs!TS9ZW>+gSF["9',+_60?-m<"RTS7[t=!3 + 33#Z`(%>hjoG80Ll_'aPsY4.q9_#Z@=L+p_&=KbX`B'IY+iJeR>k4[l#sl3L--K\?]++G@u + jJeJD5/qO_W+Y-?]KVA`DTS/I68C[th+G(3h+WQ(GW$*$]TS-JS73I7U#XhaM+V')8a<:nB + &;VJ7A"\Jf#XG&9!XM$E#U'%s&#^WGJe)N;okg@Sap:*PK=V=M>_jNfJe!SZk(4(6+QI[=K + 7X@fTS%7j2W"c_fRaQG+OkuP3!opJ+G2]\1E_<"#VohE+NB!A80Gd$$lGuM0;*pf#VMd%iW + q-s#U$L+$Rd.%JdV<G#V.$LWX('sJslroAr%S(JdMc+Sq7:%l3Ms6W&b]DTh"qtJ"c'%,(H + >"qCAJ<kfPfETBPhEOItbTrfWo<3W>90$!LN!VJ#a9J#9.?DL\Q3qK@@d]8D'1W+n?lUEAb + mrhZ7PC&Y%"$At^\Wp8::XWQimri_s[$3%4#$S'H/X_W4][iapmrjeZeWW'O%$d/1WYO!/+ + _&r"mrkkAp8cH^&$u6p*Z>@)Nb9-)mrlq)%l2K$(%1>YR[3tiJJ$iqd>GnmrT:X[nXh"GdT + C(>2hYRcZK&O6&qi$$8-i93Z\Yo=rJ%@j;VWtb\g&C@\mcj`>TC3*cnXo8'o^faL=mmHq\: + :+_rd;c^ocNAPJ"N)DIa@9Y5\'`n&+g2ncoD%k,Q.e,oG\#HH4`JW>^rGUre<r>)^"9cJ"c + X<Lf#':7-L_%U7qRE8,=k\keqtG3-L9Y\iE8or-tL#rfBYH6QbP,J#%=TP#>IX8a/ouV'5i + '8,?:/l"#:?\@.`%qI*'mrA"oUc9KcKs%R#%2NRLf)\\*M:9!<(Vh+i=a813+l26%0&cSH` + l@i(",t<sg(dHMps&(*?8WWNo5Ld?+;^uWZWY,6/#Pt2;lBHduEW2tKlDmpb]i_=4riHG%[ + ianrJ#fjRY@VI`==XhiXHELf#PuUclSO*mnc#n,lI/q;?#6XjrjN./h]M0;J$(O*\RoU>>q + <%#Y7^cH#Q"$6ldUEfEW3[alMFqhrIL%'"@(Nes'XmcKTGgB5M0f?@I-F>Z#Tc^L\hr2lth + 0VdJh2,q]VTuNKUSj<^586s(.u(Q]LiL5M;G(B!ajnZ^,d\a88%C6kFt]nds2P,=lNC0rHl + 5TLK1^)B\$[X#3q`f%TFsCb:=+&+Wsiab+5Bc)J-0k2>$aO[(#M#_/(.nD2jRI;eNW^m-)B + <<r>#+6?qL3-Q.u>^MTR-('1JJc8i.q.t*^?-Tq353Q8YH6;8<J!]-n?l_V4F`+V=],+pdL + \[#Rk"'ui7r[kOgV%h""lPgmrb2W5VKhPIjZL>9o:CN>H:HiK)s=Rmc2dl(6i>q,pUp9n,N + aCbWV%8trcO"lfR=@Eq7g#!ra4FW4TkWT&+eHS?j$U_clrWYa;BC3q>MK"!XV.0.g=kT)hY + A;#S6PQ5L?2NKM\*O6E"#p&J4t1KDcGooMH%UPW":.l5i=2Cd6=_s$oHT*^huA&Y_ZcM30M + =&+l5RdW#4Y&PacDBX&>IjBP?qr@ecS`>G?YAW6/V29+;&S;6r_+6hK>a!g<r,Lh+%dJ6-? + oaj@;<.p?R*^n)[)^FEiRNLg6J#VZ_,p^EtPEL5f.`)+bL\e4slH3#I8Ppt6A?M3@!.V'nr + il_)`g3pY>YD&A0;\6h+7!$YXb$J[VC]ZR'.RTfl(#<iqW]0gY^`h?X#26Bg7+:PD_Js+^P + D[dS<JtScC*9GB70/W"9"&ep*i.;V"gQ\npaIC!6GKC-6MTKK2>_b6Ki7sU,5</&,(*0g#X + $Ebm'0Ter8"U!>$GC=f@DX9hHj5=).B7OqM5'fSBD]VR50d2MuTO$.1qSA,`-#.Yuqcbss4 + :6,=*.R8^,>;K4<9Wg3_-jG3\;X-J"83L;O(bFs0&6iOGnWnCUI9<#'@+N?Jds';\EHEW@j + gt2-WBH@`bYa-3G4GT&.c#o(mp-n7L4"Br?]pZ3FJach&Que:OlQ>h`doqOdr,#Tp4@bh=& + ,TjQmApA><oEfrA+]porP#cX$44O1MLlC;%YM[ujkSU_#pCVC6\p=0O8H,(DVa-'OOEVC"D + JB:rT1]dVY.kuM0kC08;X,@q;5EFIU]*P^PQAO7FD-cE#o1AEK:5LUtD1^E<!c,6O?7Rl%N + (,J5DC+J)S%%LZC"?`(ETn.>]03nO>"IP$1Lfoh;B]q#A@$gDj_&9e!@4\l[=mJ)i/;Og7B + `QJ!j&/Lc-5nqL&bR9F)oCpLR;1s[9>HSB%_aYfs(B3rdHDiahLS$Re0S@Qmt0W#jQ#QB"p + H1lS\D#hTno-0hPs$LIZ'g_%INFiU@Ro(@/V"CgVUD.341cdemFSe_\3f]B23`=LN8Ku]%H + WJTBa\A6_ZmOM[\*Jp#h.dmQfB"MjloLHk.XQoMJ*1CQm@.-]U9:#lYeUof*:mts3RTE\dj + oeL[gCYF)S2K6]Uc@B^nZ&no62`'i[d+M2lP:d]6k'\gFSKQ/>I\9ilrP9JW<Z\T0%\-)>: + 0mpUG223.^ueP1UlIg)pKVO->Qr99-.>#HeC>\KM&81(?61jWO]g+VU3(e!R\7lQLTA+c>_ + TZ^mf5T!'=[Y<jA8A1tML,e?><,'s,1MZ#n0W1qJ7YQ?J^+u$UU1cjVR3qEQNK*\69ZBO=T + UYE/[dQk&-6+_\=4-E&pUD'Ge'r7V<Pp=#Tq\c4<)l4Jo`1t5H>K!fS=L'DZZ:n$+P$P_q- + `.8#VAh&)1X;k%ca)hLZO1EQ/6BMOD7rk*V[GG])q^N6fr&?6ZbguDid*cHNBQi]^&p^#)a + pVTj-auLW,q(-P);*%Ma!;`5,1l/@#$T?VR7*)WB$t->]7#IXu0]j59cO8.\'!r>+9;3[EJ + 9D$+hZ<Gd[Xf2A>qeBu6m,_mWCF2IgAanu\F^YFN4>Mj%qbbQFn;d]7*2[fF<)'66?i]:Gt + 8S\'$'drr3J%'1o;XA"Y`Z0&k*&>#<TT"44(1<^g)c:Lrd+"Mt'6l2sSpFT(,\9[s2Mi#9e + fcU(F8`PdQ4,u;m+KbJG/f^Ur.L\=!Pep>\+U[F*F-n+DR6m)'+bK,*PFW;,SiQEpY;.4R; + B\(M+Z_]\_]nq$K)?gVW"QG93i"[<&hl!r\@UBN3pWueZNm7`$-Uf(,KmGU<'RVH5qrMY]8 + B$=S%?O*'Vq36b[\@4gV6./)Pn)eV'Ekm_o+Z:9X5R>1-/T$M.Sl>b/G#BV@tGV,L.)-cTM + D2ZMJ8k)JVDqH9FpO`M5>h'0+7SfdB_P4g\P%dWr1ki4\E(^&-a-1IJ)c7F"im-tD@&A7r9 + DMR:=d^7('#,>UeHlpfIk)O,-Rlu0W6XZm/[2/?;a4'@E8oZ(2/a(`+THhYR=pm^=>W_pUQ + ]DKXlr5[L18*[/qS:Ej-JNsp$*9;`&1""'9"NXgOaD'3rHFb,eM*R;_5bs;YjGYW%iQ0d`a + QsD.>S"p`Xhb[!_'=E#glt)mPsJ:;_.(d$4,$7iL5t=58[KF._>_R+*D,<5+=nTdgQ&fIU, + a(m68YK)7&;%(VF"gk6?3aVK'K%OW^<M^6F<g;]WEh*+%klPb5<p9$7!_4pnDl:6Su/;7(" + 5O[P.J197/\AN&[Rh3Nu_k3t/d6+[&3J^;K<PU]eKO%)Kk#6prO<];*!^>J1ac7a-6MV$+n + .PfcCib9]j+1'1QOgeH#Z:<`Q>bmPmG"O]^admZ+C-;;rFib2&&<m?"nc&->^Rl)PrgI8L) + 7Da.8dlT^ngeIt-R)EE.,[sM(JPJUD:/kdQ<+[t>jh>j$5)Gq%V!C4Gll&Q6W>e\l/8mC2O + ?Wkf588,W*-4>$F?`(!^J^Z2_d1<8?OB0r8#,oVZXZ5;A;]Gs5NI;iqe3bQC(#]H^at,b6Z + ,.fDi>rs5]hfYMfZ\'FUZ3H^q>WQds44:eNibg;%4+/)h(@9'=\/ZN^OW(C_k-<p.:2[ada + 6@U`-@VM)_T-\A7l*m%;,lTV-D#_Ao;e.LSR(j>fSmb%m=T`$`]d.+4$C6E?W=A?<YlXjY[ + k_XjK7"L1<.Z;V^>6T_3/Up\*F[aS`e_gsU2Pe'5X]-D^96c?Z*dQ>A,$p.+j9G=n"F@&YX + 6VKg;bZ%#)A4@ig7kp8u]G*rM.9fKY9?bXR4D[bTJRqOY:e_[#]Ym^\fl'SY<6\]J4WINd0 + mQKX=\Y_p]l[JG,[AUL?-VYZc2:qo$t-!W@C.!34riXt0pY:6k/M6#W1<(kN9S?MTiQh^)E + dAc'Q).];a0kk:DIbC,?IYuE6ghWcVg?!AG7tApfC_rf51;l,PsA]I92s<=02E[HiLO=J_/ + ]ZfBi[Ke-%\rL0,H$==je;/-r^QMV)2BfPM&+KFKl/`E8SKfWC&t*0RCuJ&t?7=R?l+r>.F + ^(g/.&+-d`rC`Cd>Ma?0c;=0`Jqi=VaRaN)];C^_D9dI8[-JA>F=q)l?Ua`jeX4f]eg.a-/ + r%:#EYZcH/>)b6t<&2%$[+`2Mg<DLdX>`2X"5<VU6`mW*'Kjj`Zr>M_4&r^frO4%0\1o6rg + S;DL>t!Gl7GHS47#Sn*Xh[o,_,RJS`7)b#ou'hk`DlHP72sIq4igVTa]1FL`FI=jL!3P>bu + KDI7B>%HQ-_=g?<nf2`W]])9jc^\i8&6Z?$_00Matd0g:hrK<d!4TifDpem&;;hf#!_Rg6] + PpDmbMpcV8FU?#qmJFAIU5)qB*]949_0Ho=<k=/)b(CM66HBr_tt.k>Eogk@ZW\6'rc[i9B + ZRrk_(L+E^V2iNbUV28%IMGXb08L+r$ecDl>O"CJN=VHM*Po87<)VIc?fj,V$C'!"6h*M:5 + \I9Z[-(IjjSN0E9;I,n</YF_kR5q@K\\dgh6Ld)%TM"gLYAL3kK;:P5Zat2Ug;<kNS#]27X + P3>,gBBUKrAr[b4/8o?Ye32!laF_H\'u/&e0DQS27lgS9@QlW]CWh^S&-oA^p3dT]O];MHR + 2oi-G6+sbq%$o`Q5@>cb1%E4Y&<nb;?n2f$1hZ>l@l4%9u'(?!T<o-bWkD'OoW,i^QYp<^# + ,:9BK8\gX^+ujL"6m]kPdBC:,'tcM_RJ`_XVnR,o%RWQjSG@\6t\FK.6#8$.!sQ0fPl>/0H + Ojj!<8em:U!J*$q-*EHUaI=pZFq&S$t5fJN@Fo>p3r`H=<=N1?W4+QJ="(pAN\4d`!@b"k. + S#q,Ffj`_!9V=!"G#At4@-j\l:(URnki]m`=rr-$;B"`r/QuJ3iK>DK1bm^UKjiCZk\N.\h + MC/,MIIm:3s7XW)[^9>^G*rogM7A[Pf'aa.b$NrBjA_`k*P*(;sBN?>UGqM3a:jm:u#ZSj* + G5#"BA^(U1:cMl9&5)k,%,;Vdp7a]t@]8dm*-)ij:&6h/c%rI-3>H8QK=pep^9+[S5!'9sl + 562*OfB/l5U?=2-7gCT^TBFS<,kpGMBPhPOA_*a$b.=hiP(=1.MD"n9kZnZ+"Th`V,"9a4s + .\SQ]gd$=CQXnf%&b29lAhoq-gg;cbpc;?0PXL?I-iUH!ZQRrtjd>l^h%L:CnMF#FDm</j" + <LGiE+ZU=lB8-pp6^9uBQL369B?Q_+h'qOR/+*kC@=9`dNA"_/p[1Kidj?'`4rpipk@+<Ii + XEA,*4i@d,?)&;@TJN<j0cf-[r1o%igmWlZp_OOnm]n148tRGI[EO+p"UTD<5(.fehf-oq. + !u4@s(Z/K.V#]3`Sp:<G"?L7fQu[=_%*Zj94<q^-U<,"Cs]sedLG+46#aQY2k;j5&=mrLC. + fKB^7^@jOJ$bjl,NT&*o2FnK(S7B+o'oF7E8pAT&@MmH`*3m*F5LWj]b6[<tdcI;D(;Aa=0 + or<6dA#&JF7E[?B8V1i`VqIWrUk%tT?H0"OErpl?T/?T"N:',IUd;mbRm5An@D_LKXQ#duQ + k=7=FKckG;G@9SlmBrMVNY,p=3c4!mdZtTqXqe,MiH+C`;XLB"2B$6jV!(N.kZft4D67ncY + #Be+YYRegVX%\\NV'C@>@1(g%Ogu3n5M&;@_S+M*qNk&7q2-^ir^BAB3&7h9\_i,@nrRWY+ + AW'T1(s@gn.kWX]=/jraX6L4^OsbSu*ko@bhi1n1E)X4Q16R?uTIc<Zc!M?O,DZ#kkCTG.d + *ZY-VF%ZsEUtE89o$lu6`oDX3W$<sK@.::j;6]Q$X>nQ^?Tj`bp&GYcS0C^ofDZY*jg!9M] + 2lpZDDm=8#=JS]2sAg;>.2$rD5$LFUEEa=JtmV".a-p\)pk-lhf7aO_6/D17[m4FIf4IU+] + )f8q:;9q!hmap-Pf^hh+F'PJWXX!5J3)Wg<8q,UM(ReMR.U"ag@:k$Mn:35Y&,%7XLBCsMf + J'6C!X?DjYFo[`S.0`G?,5&g29ZML*eCHOCM4X;#.0T0eo3L2%:]KB9H\*F)S--TJZBo.\_ + IWo"'!(d&2cT`#,ZsN?tr4NNWu5U^sk%q":[Qt:KATPfG\c7Rt7H0Bq$(O0`t(ada0hQZ3H + PEUu5r8)Fj#p83kSl1is0G"%HZ@BXes1#)Ro*0ebFH%1ND+^sJ0"*`<2oJY6Ca#T<Y("$]& + sYVY>KpB*Qn+D7&ZiWaUXS[L4.X:4=q3P`p:1QM#1E.OM:B':,AMZYk&c#>I<%+ELQRNQ3e + )4Cb@JXJSR1E6hB"#.O7*[hnT#$ukI?tICsDqb@G5g(i:`!ijCJX)m>=;b!@.A1.7!eH4W( + ncG:kSTio+C]'i-6Qc$"slTL(m9H,#T/SQLr^Ek%j5=*"sKXK&dBJskSSi$LZfS&JVU0@Go + 7`5g'/Q?@EJco7q``WJVM5_C4V+q(hY'9@?Lg3TOEEV(WkkX>_.U-(g)?CEl&"q+CRkH'Hg + gF"qs[D(eT@4L_rU4KMu=a&>3G5"qRA7ncfTLkSQ:1K4l)YJV,c\"q2V^\crNb@&aD<;.pd + nJV$E0,(Y=[U':jq?ucGUTO;45"k2ZP'S1f`(_D7Kog/ib+CHZ'![(kk@Y'&#(]t9SVu:aD + f9P8ZJ"Oe"qLP8p)>@V`B@7!3TP)+GHeIU#m"(b,)<cXCBGooK+D6Q9GT^XF#'X<c);9Y4L + `+cpSOaXIG9CNb#'6GM1'VdUkS_HmS7ieYJXe,+_1<_@q?Cj\B'KS<@;$OeJX]1JZ@SJN)6 + \r@B!MVUTOso&C#eCpUk+s_)5)PKq*G9u+D,?mAft\h#%_C[)3TQ=#T8YRR+^I'JKTb(&;D + :j=oO0uk^i_i+6]SjM^&MU3056Gq>QKukop%i+6c8+PpM9-A:LI(qIkAUa80b)VapT/[jT< + "KVKXS.K6+bl;@PX+6mkFW,LsaW2hF=qQbUOL\eZ5X9\U?J#o/lbd8rpEW3D=l[f&G+7#X" + ]6!;ToY*!&&cTS<lllAG+7);m`HCNW*69m/Z2Vn<m(r\G+7.tccZeaY7+*p:;?#(;m:$"G+ + 74XYfm2t[CtpsDnc%C;mK*=G+7:<Oj*U2]Pib"3qjr;K8,K67]#X]PJ%K'?\F2Nj+o_#(mk + Oh6+7E)+HO'B7J1&/.+%,N^caa!>6i?oooDCi"!<5;\8HL#F&;(5a$QnRlJ"ZoBKSTC<KIB + t3+f%)R#PoMak_O__62l^rqC%(HW>6]=@#YEf1EYi5J"qSoNedHnLa`'A,UA2/#Ppq4kpV% + W_>]XRqG<%u8Lc#sZp3![s%A"C0+[]j5LU2D9Tb/f-A9m<L\bj0l+heH+o\#;qK<tFi]3p4 + pn*c^s%js=64`_t5L_su;+(:O84=Mo'U"b(l;W84Jc;O%qOAYmG^l_".]AUVVH$"^<0-]S5 + Lj`Q<Wi;'8k!EqQ,:5"9'oue&cT#TqSaQB*a,S0QEsVJs&oO'Bohqe5M!@E>9j)`bXK+Pf* + ^U]l]?V!EW3O>qWf6h["#7SWk;E%oj8sBHk5oD5M,-!?fV*8O7if=Qn&DM/2Vj\_>_?mq[j + q:9Rj<Erl+'4).RK*OH9*#5M6nRA>B*eO7lL<R9M7Sm)>ESp1Q\D\Gp1drLK#CHUX@u"!FB + :K9,R9d97bcBh^=[1u^,PaN4B+A,M@p<iFRfdp-\5Ga4?\>!L,UA8H+R['mEsgY7!<+6<WT + PW%g_)oHu?NVU@L!iA3)W;e@8)8`nM(?8YHO`Db<J!Q5r>26`UF&$`$3X7oV8,7KRjn+%hp + J0tD;lk,e_:TUPraX"EOWW^[gUh*?miD#8GQrhNRPFeU8,9'-mht4La.2cCJ[HT^gjbfUrb + gT)epC24mlgulE_#rK+6PNQ5$-2/heV\00?!:>o=dH8$ho+rl2Ep2!<Ac)nK6r<J"KgT!T7 + 2lJac,8_))K`coD%k0P1_Za?9eP'I#m(r="bZ2F#RT.>8>=(IJI>%$=Zl7AKetO7Zol@Dk9 + `d/kIZ,^qu+#ldG*r?B1IOV8p\:l8+A.?F,$5LR2HMXbR:`V@=fiu2PPl(ig+\C2?@A8[D> + auW$\p-7$is%i1M4NH+S+ClIGOK(EmW=f-*jBRS)dR$Ms8M)6R)#mR1rDUh[2^d\qUQi'L> + *&>p$<><NPu>"u/4G[Q8,C@MlS*gil#eUim(\oD%V!X^]Kb!Js'/JTAPD?^1o@)"R`id%Y< + i0$VW?L$o7h81=jK+\0`PP`rIn#"ffUXHoUaOkHnh>o`s;J_T@<LacoMP#kW:=;m'qPO!WL + <AFUb'%:5[GF0$l$&*M`!>UJ`9[79Xs9V"COLdakMMWIZ?A/UW&s>&R/?.qPW3gmjSZi'6K + A7&\A`]2XrZ;bDt!+8%greMduslEO\I-'cR_qRK\.".4-EN4G:!69jd)C9<c3e2iKH@E_r\ + +8+@#=/u&`*Q<LaAprTuq[$]47>c@$,0$)CB(SUlP-UBWbWU`dB$M:7HmAX;=t</>h`[kuV + d/W(+oc=pIBe84in>H;epH<ls0l&"ha!PBE)5`u5]BPLgj>6*i7&[Ua@-HQ1&l@`Xk10=WY + JgX8r@&Es1C:No%nV6%^/bj8$NJPhYZ>\n#T-<=5bL&(oBOdmJjsVAh;k.^6hhMA0:Rs#%6 + ZF)R,*?:9!A:O8LYcE85f$G^2ZTPoCm%rZoG7U..\t<i4C3Tp"I9(um_o-Y2X)<U.k.&,^d + 8_Ce-q9)2k*=_!TUVFnsu3aKqAU:$<(gmH"Z/*3;11F?^?>t_GI9l^3$1H&p9ZZe:1joE4F + 5l]+icT9A9h4>II'Oqg;J*62"TVq_fd&`Y#:kAY@Zt>?H'L%<:2K[9D_#Mjm$BI#<3^`Q=T + qoq&Pr1U.p[q0`eTB3CdtYoEM6=4&RbFFD.Z3%>kt0LopL)M6#?73Ga=FkOa)&o,Ef.SOc) + **FWnQa`FDBBKWo!ho^3-QpY,>m8-Yfih.,@C>h2;J^CCYTi(B^f)H*-M?-`42IWj=BQi!6 + jO90R`=7XV?O3c5^]c5O*GkdC`_ie,P9a8Y*,Ee(3:JF5TcDF/pb7_$Mj\O\F96ltHM>e3H + u]#[XY:o*6p?KV^3L9&CMld6)XJqrcK]uZ)F8<1F2aQ\MPl-&jZX8n.GW_9LtN"3/0.*TN+ + d-Lnplq$.&N%C"U1lj9?:p/N6:>Wp'&B*fIm_psM#q#+7@$<-TPA^M&Y6OKtGa/\fnR[$fM + -e9IORai<af0=O`MiA7K_%m=R1-Hj:I8=t7[e6fb\=B,l*g8=q";bMp'flM9^&%.DIO,sT! + *=`WV4[fqY3NNplCB].MU:1(t(./q8t,^%5+DOW7,KJqZ`A9&%8;=UnrgEeH/4j9j%=NChu + ^d*:7?T9kr8Jg8JWGW:Aft`qJ$oK`9,eE/LV:/Wt+5QJ&J@X/@GK1'H<d3nhpjXX?ZAVbGj + _$JZ*0!Xe@=MY;5<dPEK+h68Z=VhhT*N8B1jhTbQn9."tC/pbeA3%b9jE)s=naL&6XiCDPZ + NZA=^>^i_b-LN@5XtJ`gHFIPr\+5(1#TVo#8I3M$K'SgR/lmVm>7&KOKZgTR%VeCLDW`^V] + LZkOaDg>GDWjiP$k)!LbNOcmQ:Yt_l1!-9aK30Tf]pPjlOL<49GWTR+"j_5NUFgQYkGs?nA + CFem>1i1cJ]=n8s(Z'0^e@l0(SIN)TG?*`mZ("8OW'1.`]Y0'+%e2Yr;.B3gS!UQOKKC0.r + V&1@oK\b6a?TP>q0GU@aL@((A?T9[bn<>+AApp+^U58_229GkVO,pJ6&O9`CZD#<8oATT>! + K9bsF>*hfd+B+LU10rAV63,!%m3pf'L0=5I+\GNPDqshI;0uTr$_&TZ'*:M6k&(INECtCDu + f7K%^;<Ik?l>TVgrt4i%7hku\ZIt50+>'B@n-L5A%!5AZ!AYAjEYrq>*3P'.+tt;eE%*!/G + 9Z>UGZ$C$E]F6-4F(s4Z3R3OE(M=Z9dJo2,qD**;HX1/>m9EA"tN[3Xs#.;-9SMR-W#"7L^ + >HUIjbk[JWPVrN^i*XOQ@`,$$)F?W(AH-Tdham.VN$9X1j=OYmW=p$Z`b4ZFmlLM(C@"/9& + ]^W1,@(p55$`%<C,2W4<B(%dPaX/rmY?nF&"Ao.NZ%09H&ad/K*R!lQ_JmSaP^V(WE:'bPL + (P7nrKo-"_q5n\!WPk-I>o.X6C1mSGYQB=<dnNeud7$l:lb)\CNZVpE!bnZFH("6KY'4VeV + B,6??(<kS-%qdh>Cgk_>2t;GY.J5Z?M)_c!TM^fu$55F>R5qOC3U.nO/M*YQW7+PD+gJ8IN + Bl!5]%"l0*NF3<&%c6dJY*Db9-L>s<#h]<<fD_L7PNIofFnCZa/s)Ii6Z2AW_!<=kY!, + "4jWm*fR[/j"50QJ*5dN:dBb5uP-1@d!unhEK@i<,)%20(na&jo&=pB7Vr2tBfL10$b<%0a + YE"qkDM;J(AuCBi4*#7'u.95`c"2^e#U5;7d>E/?!A.k'nL.57!=YaE!YQKBlqk(H)OOK0k + \W998LkN$D/Ye;RZ]'/Y'ksU^dd*F9Xbj&$W95r]=nDPuJb:[bu0!O]%YjfMiaR&Kom6q6k + '*AeE#*AEa&CV.%#p0aQ>jkGb1%,*BE@!A[.8gZfnP_/?YrP_r4S!JY>#@dHO\7OQO#7MJ2 + ,RDBnQO-i9(`j.ok!e3ZY^KLE1Je-(NXj<WT+f]p@iKR30/Z%;3*^LP?;ae)6]E>e"I[9V- + /d63mBZg#*Sj5908,(qoqk]26`rP<n5UAeht-(<P^hXD`uXo4pLI>8s]I_m+AN5?1[es1]# + e2s'F1VF#4*&XfU84'&/<&?n1<o/]f22cEGe3YV"M`ni#>t).G*;hX0t]NV]t^1:++di3HP + F(-b7]6Ui[K7WqKqVt3CDD$Q;Kj,eh('S0jqK]JASB(V%7FHF'D>36Hjk%hG>9>'EtG:P:n + ]f)+gNeZcG`9Af@C.n3`cD)t/WG<4"CK0$R<8VK`if/'B_Jo0Cma2Qrdnc:]:X7oq(?&(]) + c2Jt&X<prd33F.)fLu_nBifW2():c2,_aDE3hh#[h2Qj'iY]&<*(/@M47Jg_%lWBoeC*#2. + (EI@eMZlF;8P]okr)QK3)u@(q3LI(Kjj9Nu;l$3S.hF2ecE5V&GPtqQm@$pNJ]#HIPa#e?Q + c5;oMrsaORK:ed?V*l?rPq`n+#F4uL_OFk#&Dffp5,E>@E4&,fgoT`A$q?Si'rD6X*N[ion + q6'_[?c,Tl;bp&Gc6FIUqmG.k=j!1uU6e3PO%J'^>q'=NG7.rK,/dV]A%^aeP[4l6(N["c# + D.PPDASs;8[!QBJ'kStO#e"L/n<6E:F\+K9jm\l(;Pe%`UM+bHk>8DGZF=O)[:s`mkchqg' + $4lFa(f_=l4DJ1C^4`,%1Y;-l`f\M<lIh"aR$@[:H$R\QINhb#AqcL&G69GFUN)ipMTX=D^ + dhfCio0-%l3f*E)Sc9N0=qD.*<>=b&L-qY<<V#96+$.EfWq8eQHr"]lQm%(Df4-Oa1!Z7op + L!pQnZW[o/k8<m^;mq%K.kD'a@B.f'[ROn#P8'r)^LI9O0:CA3J\FglVk6[;g)>YT29c$$' + &V&kM`HF;J,\RQ_][?d$WXB3:^ebOU'I!%Bq!VQhJR>c>KhZFW3IX.H/2sg`+.=YL%HT1g* + <]P[j]muNeA8WInXsCH#)(03>JbE?Y);Q^!Mk2b_\[XRI[X3Z&p4[`[$J(,gg'3=W;[`;gK + t8%VG[V$sX+m&jLAEE9NjfL9]YYM80.\W0<mJUo7kdV*Ut#Oc=Ih0_?]$c2`qj7%QMm]4", + jVmaR:F63dlsUJT6`2'b<LO\Cia``JsUEc!$Yrm,+g#B[6DI3"5VDf20h_]/_fUX>pid)T` + n!D&TgRB_p=BGqD+g0g$=1VE3h&e'4*hd?IMZW#85kqY?C8V`q5;rp>]L=0n2mk1S)]g,fn + 5(W>&%a[$`f!Lk0=H&"^(MaD]LYT#0^F>K>l3LT1RZ^I^Z=fXs$Y-XTdRrh`$Z<s*lA@6^% + 7[mPNfGd=U2$_Dg[TFoJp1WNkNo_4"T"$cAfKDg95mhsgBUSro\ck_F#ebSETbP26<5YDfo + =:;59_p%e\g]6?&YepV]%T*!'^Y25q!C/RLtYF;Y2^(rl+C2"M=hAIOW<ied>GMIn@EC5>& + V+.F1rQ<E9VYGo1I0:KiEElW7]j)02E?:<PTI7WV8II;0;NE%B?r6=&4/[Dh5`m"fot/X;- + Yp;4k^LCQZ#oG7h$AFemMEWB8Y3r#4U">X_k\d<R3g`:M`e=\j?+=g-B-`YYhE*+uL>rPnY + MHlR:6=a*.,HU1e`Y$3'jFpgW;&$hUcILY%\<&K,d4gT;Zau1b<Q7oT_Z%(%(J.u.:8(#MG + 7EaFaA@knj)d>fo?d,m&bjpCpG%\7rfk0$q.9gjb=n,(Ooh"uS]=WX?2N:?&OgphfKhdJYP + eVq!bIMeqd.XS93,HCD),8kbUH!\M40`V8.u9W_di5trrAg\kS(%8VDV[g?H=PIZeVb.eMc + dHd'ee+f25dcLelN[=S*t@Oo/1mh<?(heF][2$BtuYf^jUoXrJ<JG%p(k,fen'.F,e#F>EH + 7LOS+Zs/LeQ-X`jL`G<@V7>1pf;IlmCWXr00CNELMTcZo`>`7;cE)Y74&pDuBm5+;MjoC'[ + RorrT#Ye4gZ]Q#'@'0s8*?aLJRq]2%?dbIpU69!X#].7<;Q!q$Y@J_pN([g/so0dfs"T(Pr + I'I1g>C^KdbHtig=il5B`O49"bh+/2][O<RLX!BmK3[BE?>!p#SS/sjT=@AR3(llr:CEYL+ + :n"X!X/]G_$87PX:T(K)8i,"-m6M80S0\ln3M.->6G^-"`akkWX(&*$6XqF+IZ@7'#=^45o + ^G)1kH!@Jd<KJ#TeR&BCJ1I&2s_$5m&s"+CYTmJd%fu=<LM>":;mG:dBsN+^BU$i.1#62@' + _C!poDA<"K]G"@3%^#Tt#k"bHatJ31sd"U"hA#c(Q$%gds,L`c*L,PDE@Jj/_o8(8.B"FNK + Vq1p9L#k`d4+HJK,b=;\[_&a.XHkG29JidA#a<Rhnl@M'?n4,kYcNJ;T*4uP%OpL*"31u9K + ,D2<cDo!C>7dL_te:KU:NMn(6#hX_dqs[(^&ZZ%L5oP3.,>&6hJi"U/s,7P\"D5IfO@EIeQ + 2H4O-m=\()!E-&!hb8t#\"p2)@0aoL(#2V(^M:6JeuKOHOQR$iWrh_L!g63TS:<TJemPnCk + <G$+__^bKpi9M+GG[Y=@U@T?@ip5+^0I4L`ohBTS68L<1nq3#ZJi9+\[J%W$+]`'PJXY.\M + J&#Z)Xsq?Tkia<<Tr'8ReiJeLZu1GkbX_?`f-KX(kUc:B*,JeD`?,_?Xbg'C4lKR*no+G=J + 87Sq/L(4m,h+VKA='RC$PTS,'+6D/uU#XQp1+U!B.-m8SB&+phH59PUD#X0A`g'BiAa<:&* + %gX<GJe$>B#WeW2U'NcPK9?L"fLR.CJdpodgk$!D=pR#/K3AO<+G3CeJdhu.c@QJG+Nf9EQ + MLkATS!j_0VF%%d"2Yh+M<:6W$&U%$[8$F/KfYf#V7*M^%d0da<7L7$A]h%JdPU@#Ul?tJd + <`sJp&8g$)eu6JdH*5Q&MAf8dH[bJiX/^0Gu&5+s;IU#U(=B%Tn;g#U"SJ#KS$6Jd7^T#T] + RhdKghcL`-VMT]c.aJ"^NO)LnIW=sAftW6,$t+6_DWNh>P2rfHG;)G63i.;AdI+6e(MR%NW + 2rgN4G\oO@>WX8Zt+6jaCU7^^2rhT!T>+2@h.]NEI+6pE9XIne2riYc`qSKM=X%E;t+7!)/ + [\)l2rj_PmRd.MgBDV7MYG_6rJ$:I_;Sk-s;?"QWluE$GG"e)Jb;2Zc14QWcq`KA8#Q$o=[ + %841e29s?rmm_/Jc==Em@jO6+77+Ih)C>bKR^KZqhTa3a8:sJ\OZObo"!%uV!B,jWW)6+ma + ;%%+7A[un:&[saR_PbqpKtc_>\e:q=#Khao\2&m!]JmrZC=qJ"QiAJ;<t(+6XUMTS+#3&98 + C*kX9oo62lRnqA:=<C(d5Y4GXR^-6MH9J"hMnMMM$Z+6^9SUBG+e&]"E9j8Bu/oQWUJnGc# + ]r?4R>Llmie9HWLMJ#)'&PR%%_+6cUOV.d#t'%1#Y"8sm6oY`uC+TG-QrA5&WeJ]*1DGCMb + J#>%#SVR&d+6i!=Vo\:uPQHG5MBIDIEW2\fqMZN]3.In6%]#>`Q;\-0J#T^PVhb,A+6nZ3W + _"hBPsVKNMSO_Anc#VFqQq@0fRKrY:9KlA^/taSJ#kC(Z%r1s+6t>)XN>@dQ@dOg_u4>2or + p[3d/R=&rGN5>_(lf>jBTm,J$+q5]*J3#+7$^lY9EnY-Hc$h$gE-Op%go*!<6ForIPRR$pW + B4l=!@@LG9tO`(0\=+7**ZZ%;noVop&ib^km3:l7OV3<*P7rKWH;>='3S0kP7PS<*A_5M=] + hB;>EtZmLCP)Daou9eiLW+oXn8q%d^>7B3b=ZI[a_,Tl*7J!,B^8t-K&Cos88[^Oa^#PgD& + jR@Y_k2b<%X*8J6mCeb#r_nUJ:`ndj_)N5<iS7(aEFjZMQ6H61#PhtP:.<=9G;A=9flS=tf + RK6C6KfF7VKEBJe@NO5@n_ff+6H7HR8Nrph93<PNqqTq-]%:%3<(i\r7/HXP4N",d<]_2lC + 5'XDb'W<HZ*We4pT%%+#E%>j8A,%o;;C,>OR"oc2,2!mWceJjWEZVrkHMT!2(SAJB-/hT5j + jZ8,<%5YVHJM-n,=mZ3_W:/:X>?re'.q*/"l\&jg8*LI_1_+6\B-U,Z?b+bVV*OP1Wu&cRa + 0qDF%imN9@aLCmuX7nBER,EMJ\'4PKKMG[8%7>S168,?F3l#n^KfY\Qd/8'qsV)FD,hETJJ + DiN/e3_*lR*Y\>K:a>p)O7`l&j7IqbOr?_ZKdK%6W;fcUrCk<.*@.GVQBMqi;igTL5Lim9< + O.'L8h!=\V*q7`A,T_pomT-V%'PrEb$%GPE@r#Os&pZGC!5af0P2<DR.DY8Xtfpd8,DD:o/ + ^S[8ZalteCn6hrHs\!pGaMtj.*HIFO%GJ_T2N_+7)19cO&i!Vo8G(9QYchnc$U"q]g4LQ@[ + Cd%mjr&0H]Z&J$VH?c)?=,U3'FoZl1\d#Z2!S%5`R_$:RN)Ro?-DG`al"s%=e`0W%R(Z-uT + ]9q,PjVc<5Z<!ML?l5<&?:%3Y^MNq*iF+\FS7'.3e(dI;n=K>GAagjIH>Dn]8+8(f'<ej*, + X''s,<OfqJ#@1T8UU.,Rik7FOF^Ii<TerqeJ(Qgj@GY53YsuskS!U3@m"LV.O)aSjF,k99C + Zcf5G0ekYgA>_1gH2<er"&[)CFsW,J(DR4T/[<FmBsI5<q6J\l[FB24;T+6''!5TPm<uTbs + LW3'9E$eFY:)SL![EuU9n8:a8Or/=-=WBgWkjWqEp)Arq>4GitJ/0oL^Q,/&dYNI]ql4Mt) + 8sVGtj0j&#ckpa66c#iUE"b'f<qrs@Xh08=!?JA[7%8B?qnLiFI^`:?5c@\lDjAB=eipr=9 + 4=[=Gj_R3H#UjqF[Iun[jYa-.EA?=I)5Or,Tan#F<jX%@E<t*4nq-u!fae:OHqX7`@enpKG + bF.rqiLDp5JZr/g3sYb*cC*C3:Fu(Uf\H?Gq>3Ej/I=[a.jeg9WL$GTs._DoOO@)tM!7rfc + p!X\dnLoZC$In2ko3LLKQC(,MH8?.HXN_#QWQ/*APQHP4`1u>pM75-YA-.JWGVd8s*]jc2F + UVceRcfOli8r#bVkopSFX"W")SG;DDq*)N(UUNK"8?6gFLD$2b;6'=l?c(_&bYT*_UegMgH + M/Hn9R0/=Glapu8din[KL_+%jm%>D3R1L**1G/P5mmC&U)jp:._nXf;N+ap"p6+ZTl9\JjG + "b2]/Kjhb5f+WHb#MA34n's>b13P$*=b3u%HnY+^1&_j!',GHi#,qjis3a!iAC+?f@r1_pE + U?ein)lt8?XY;Lg0N'hk#s5a<ZETKTYd-Hse3H*16G%RU,[1m,CD900]HjPk0lg!nP"r9h8 + N[nh]IP$L>9G5-,"12+-*,*B;I-SK?G*gb]ZO_HgFK.2/Z*U:(MhGG]@/P[DR2ZJ]kN#1H? + ;<.32^gYVh<bAX5,r!5,[^3Vu,Ge'19Jij>:%p1jXp6S7k*<Ma!V(RO_+$92<4DOICca`p6 + Nk_c+;WQC@Z;RgW;SK35ONodSS'WVO'3d%WDX?U(!TS,0"P$Y#"2A%#&0._3U"fuUUP[Pj= + a5Us(0qR"=:D4Nb+^gP!f!S<m!ft`c_S[uMU]6,.kFuOLPX<HXU7$'@,kVp,$_'6slb0%h! + J0,/M3$]9@nb"IJR5e@F3,=;cZIPT$f?)d*+<-8*o%Tg8h4S8>&.=U\,U9HA%5(6_3EZ^"C + R;nil(M#@TjsQ(9:S#l/?]C$0.a:f$6_GLU;IW<,$Oe84/O3kV`KJgYM(T^r4"f!1-3U\_k + R>ZCBdGTYp6<T6fSLuis[1([M2rT4+or*&k4T27m"7W]?@n+Eu61_)C4pj'q<'&1eY+E<\b + :h4DA<<HcX/.-7.\#9e4F7,L&@3<3jYYZL$1+)JZr9e&@M,-M')h]@SDdfKGI)Z^Q*E]\kr + qHbJ3CZhf/.)Ls4Lii"Zn`a_K:CIkCNkF(AoW5+$LWfBQjVafG.`p<&]ZgXkjY/_LOa"-`$ + 3O;4JS/Z9f5@et&FEeb3Gq(P_a/f'W]DKXj_aiF\*,L*hoRK10JK2%K.hU(J49NYu"J%(Ia + E33QF)\pIELj1g^ncn(Z/3:5^c-%R8Gd[lHk8jh&P4G;aZL5.9GAQG'eIgb\29S_8F+*VR_ + behT?NhA`1=`m!5[[K+@Mm>"JN[HU7dI?XqD.8<$]Us--C6>b(Ah#7&e%fWktR4To?(Unf1 + 9_/^!]<U'*-Q;kc<8ZT:r1_`Y=o9XZ.p[mOuA6[CISMZPrgY04_e'<F=>j?99f^Vf]Z`!!o + P*5\rV78-*:bZ%!S@S+db(8TI$`.Z7NPffgBbH]c$9[lb[jA!kh=j7$oV:<o3'[jrE@7;t% + ]\Cb,CXADQ=&"WU9q#roXBJ?2>:1\$1OIcfUu/krM8f\W`Y*_q1h+`uA'Ru(7T2`(>j'+Kk + f/;?W2/^c`9YFLlUJeY:>8UZi/KqmE'FKq[9N2ZE0j'^oLDmS27*"aaIu+^prAp$[L;sj+K + J#]rC>rK2IlcqGdU'^!QZhp[_)_Nj98(c#>f]saG^DOUN8]!c+puO5g5601ljogO?iX)5mk + W@_gTWoIh!G4a^c..EV)hU(WhmYT7e)a4,5eSSN*;8_;(YKm2n=K+Lq4Hatt<b73f?*,rng + /b'YR/N@6fO.ClDkb/>gQeL\8t/eQ;\9+3LI)C3KW1.s_c,)e?3];N6)\%8Om_h>S<Pe*Vp + ]>M"g_nnFOdg4FOZpX_uPYAq^*5b_p\\pkI'^WiXAB320^I4!qQ&NmSXNXYE`5L-E(+deMo + [)+Zb!d1``@TM-4Okc`ejWiq7;?PUHSIZ>eBP>N(]7L^e6L8XG0TYcc3.LPXC/Br?bQAI4q + qO&>=?1ej\CHj[%utVSEiA8Bhlof[/95J&sHAEPdNSQ7jD'6V/[rr=Z*:([DJV=;PLSb?q7 + P3WeG^JRq+E^J$sC$=44=]RqkP^CtJmq=;?D.K5jGQKLiFk=Bu?fD%3ss%bR$WSn/J7A.d3 + >IR-,W;,rZS@tIR#OjSaS;3KBoXW'6a*8,0LfmOpOe/u3eU04TB=hQ%?/0m5DVV1>`g&3;/ + KIFC$X'.)*>!4DsgatPWo3,o$_[WQU6o*4CX&D0_3ea\7AZd6]Y:pqVgCpbX]fTF]4BkIb6 + gM,''t7-G\5X-O`&"tu?+X'1]Mr+L7!l\mV8#up^f7)H`5BPfmDDoZ`)Q'E7178DNQ3fM<* + YX5`FW%S]iJC]e(ib]h!/laq_psodClVg<Sc/)mF=Ad@QjqU^*R76A7a=Zji2Z1):dKK]BQ + 9DCT-Po[01A)*Gj%*D9ikp^CsX<2/pl9ER.im5?h@4I<<f#FjHgi^S>4-`H]_bH-bef5O2q + &%=HMKIF'cb^b]dW<Ih,e#@Bn+?W+JNRrbXlL+E02=G(k6oak6-&QlYmfZb)^g$[MXbe[kP + \3(U*NK[51PW4)V;8nhCrKf+*N&]Ud3:bs0ZJ`84P=f&DY%=4XH^?aOW]?g@=u,NVbFV>lT + A!j0>'2M[/MUG"1*V-&0=3T8;lRZWY1%g&du1?WS[)1o37GJF4!V)U"19i=\$5J5]9L7GWt + a=#(-C!Zb`fgs]t^i$_Rr:]]NZT84!Zq@aiu'R>]!?nI8[`>;r"3KVN"T^$s;&,eO?Ud<Me + &BZe8?tdaccke`/g+gYYafi3YAo:2WL+V!2E4B3iJi?.+_H\rTn#9AU.Q?5ljM/FqXZo3P) + ^f.H.H6+UBTq,_FuAV%^)]D^?`mH)1,?M";#mI=clo&^XAAgE3`Rr[CuARBmu=F58-j*<1M + qoL&&?e(,e[V\TNc0"C0XW@R9ZIE8VQ*#d_ao.UiD@)tbGX=9XkGA]]rd2M1T]b/DTmhJX` + MD]5($I7cg4Q.f)l0[/L<EcuBSERm"s(m^!o`f50Q)nDmBpX4,U<k^`$Ms.4t%\:PsfK&Bm + )$R%[b2B_.g&+-'"K`rP`L51hlqH>`6nH;p[;nUWnuWl;c+c?9Cs:3+LcLZc9%@-.V;36H2 + bg<]fB^CZ]C>M.D!K<fXN;VR51OmTp$7?5.A0mGhaYZ>6:WAM!Q:4SWJ[U2/UdcaHp$c<.* + 4^u_Ztjh1\+b-5\G?I2/KaAu]iDT:%WK2A.Ld&pp#`b!6F^ufbMCt<<-`=b,Z'"@;U?hS?i + "+n@1KP`Vdi&r!gKH%FmemNB<36l\F#'WBTg"F@R;FV*n?4JT2h-gI8i>!hN,49=Q'N3Ks9 + )]T!'(t431%&'[k]J_nN&E_ok\-h7>77T$X0:s"+_^2Ikl!\Z$pa7J\Dh?l@XUW'M\Y\-.b + &>de:oNZcLkZ694IinisR+#L,.9X1X.g7btBQsAQ3U!3,1l`4[`Gd?N=ha4P^\(`T,]l2F$ + K=hJ1;ClJ(:eA_=^cg"'0W`fCI4c:M'.8i667:@:doV[lhj:<t7_cTY1)[^tudF&.4+CX,p + dMdKe\qqeCOC^#-)V0c#JHu(E@?MeJE%0YQ+dII0dWS\k+:<7$9KcT%rfQSY.]nl%!OR1d8 + m-cB#2_%C"d+J?Fo$*;;gmROm)Jr8(;84hWk184?#Z:R-;AKTl#24-8SPiIZD8m(K_jBQ:. + ;.]kmJWi%h5+$3JhKVZ;\%ksNeVX.k$$)!ka!62B'E6\87Dd_oUbDY/Nr)V5@R7qme9I\SO + 6VanR@fL]AAk'G*g.=o\9sW>THLC0)&ikS@jlQeHVVB#?oo<>OT8In''DPh,a"5?WDkh9ud + 7i%fuAUdWRb2n3(,h'jtPu@H944CA.ta:C,N`Yr&oslS_>[f*tcnmpsS*E;sq/o^c,h&`jb + h24`l*Fltu<]iSh^f6$plL;2i8lo%T*:^-8P%`;B2*S9rf?Quq!"9r[bKCUUId(T0(pE`Yu + b[uS+Edl;9a!op.D">$^;/\$urW;ZYe6,R$i*LMH-J*NKR8OK_D3bOlMiq_D,j26UD9\_pV + 4geXU2BT:kPLeU!mCZE=[:Ol22!.XYCWaIC=jH1#-3TrePJ+s%8d4+`uo,1)O:T'JZ.LA.6 + J&,"&M83n20dS#+^=C+DJ>(C'L)s^s`iO]F?Fp9$nbq8/b5-P(BECYV_"B*s5"udBGH=@Kq + aAU7c1e)C!'$6bq'q1b9(B"$tZaBIFc'#(V8sm]\M>%/U,j5gOC*ecH&$JY!usGT#6L"$46 + CO>EC8jT@L(+D1rt^'8J+RrbeiA.7&l2*fDIBGmNKB7ZJDAloq7@fnI$bYU)(%)KN+Qf)H= + )0Q3hJX6)81=Q`=""Z^[r9,#%#$$5>+D!MM9="^K^rd3DHjlS*JWjJPa;HT79(g!A0JZ$)N + rpUlaM2C+&dC^SOJ$%jrdfk2(k.$ka;B5SLQGC<*M?ih"rs:E`$U%ikSS,eL8Yr&JVJ.7"r + SOlM?Xn?@=1h$Kub*7JVAms<u<&g;?di.@6t/3TOB[#JV9s=8:cG-(e#Vk@1!2M+CP$M%j5 + 9HSq2NM(cHqt8/O-6+CN%j$_Un5"q%#2UrIt;BG`"GJg_HZ2BZCR"pZ8YC'Fkb?sN,NJOgU + jJUn(D%mV7F1'RfQ?m5dUd3oh7JUfDXMLX&RSLI/6#Pn:KT;WY&JY.&T#(7V,ap*59B>%&k + T#_f7JY%Z8k(0+(Op60(B7^>3TP&CjJXr_WfR]T,):X5.2DPJY+D3_>F!,*ISq3Df)9.5t8 + /]9qS/0NWDkL_5#&^)Gji2k@BGn1.Rj]/YJXZ=R#&>>nWWm2\AtA@@RRe<jJXQi^T7A%rEX + $-KAmtsUTOq4?JXIo(OF`e_)3'LrAh"!o+D)Mr@3B.l5(T(,)1I.'a;K>h+D'O:?(bcW#$d + g4`b'dfkS\2fQDb[8Sfh\Z#_O9jq@\:OL\`!?U'LN?J"iBP/;tfEnc"Q@klLdG+6asJP99$ + Y^6L"$Eb'Zs-i.M+VT8OPJ#>g5H+56E!ed<jl7)_.+6l`&VB>)Hrhq;=U9(I=lH0%.+6rCq + YTN0I*jR??6I`IdlY6@.+7#'g\f^7I5.iOAir$V7lj<[.+7(`]`#n>I?H+_DK-\V^m&C!.+ + 7.DSc6)EIIaBoG,>`lskPJ5.[>4WaJ$oUZA`u%3ZZ+bCmFhKr+791/i?.J2ro8AY6^6^o#Q + (*B\juXrJ%E\tY^a8lPIU'D%jCrBTC4N6oH37pJ"F^_H]NaK5)8'GT5jjZL\^iikP0P"#U4 + e\+pL==0Rob#re$"&&0L+,J"]D"Koj.i6\p8BU%/,<L\`8<ka6joLgl7(@P1,;r>:UfBKsn + Ks$m1i*=qdf&<ZNK84aYJUf%,S#Pq%7kqIU_iVo&cRSlb7=Y10VZ9Qdqs%C9.0G!fo5LUlg + 9Z`tc-K4rn8,@0Hl,\@P62mF1qKS%"krpKV"@(BAs%n@H6P&i$5L`Yc;2RA).9R@\e@M%il + >1sLdJg')R\<\qPuNh;:d<K4s&Gim=-*#`5Ll:"<iXt\X3ppM#Pu1WlND^=1&eFJqT"o&-" + X1.U-I4Zs&rq2C6/%j5M!pU>B:["XnBQA8,D9gl^WI-OoDr4qX#Bj^2'nek.Oj;s'Gm,I?4 + 't5M,]1?o+4%YZ;7N=D7_CKDgRdp*)`RR/^X%fo*,$2TJr+s'u61OcT3.5M8$rAMb9iZIW@ + +=fD@4KDh:#p2WCNf`,Tk=eCd2$9uTn6tgEXUpRS!e(T'`+66s^Og_:?)T,`oNHq`d!`hP- + B`BCGRBj8ef%XDUEGd'"J!:QE:trU*Db]c:3!TF_8,6(*j]$_pG7NT%;iG_A6-'g=r`R;;B + clH=bIM7Bk8a)dF9U`TQa-Ns8,7XVm[;Tda'@sOJW1c64F`b2raais[WbL:h`M-oBLhln+6 + JjK4BI^:hJ:G`01=NTo56e;bL_'dC$n.I_"aN6aWK[sJ"5-;q;5EDIIG/N^GEGccM7E%0BN + *ra8Gu\'EUGXr:l?Ek!.1n$%WXC#=/VA"HXK#5bn8[O7X(i@)O%;d"2ir,VD=.aT"V;r=6] + 3;%"Oh0SWEG'p%uj5LFj<L@FUP_t\iqiYk$'klcL330Ot!A58!o8h*7tVE`M-s%;fr/B-8V + (h4OsN2`=sVNLkHj'6>YdD@n68F7F]f`+aBrBJ?DpE/H)K93AR7Z[3a!`Y,:O]"&2.E+S!8 + ,Ar%lB$LqBf.5Jm%9LtN`+#"Cd6Ics&W+$<D)La/>]/NQHL\+XMOnBV<#7To*/XI=cY;gnG + c_qrGbNaR5?7Te=+iqCbHt2]a+E-S'uP"c8j'.k;reglkk5VJc<NaFR>YUc?df^m`#M/)B\ + <bJ$J8:5A1K.TX5bmZGHO`L\ibIm)k)[g*9#LXV[`!!fbUYMU?,=%jE9!W"8`!8h!\>C=KV + QP#>318,Y6@[,&'sH?;m'aZXN/rh*4?Lu')i7k&"4^lS>[;lYOLE=O1mQ1DrU8,ZVlQ$TYp + LG;oSR<N`trj5_+fit"7W3.He`Oc`^?)tqjYE%Ss=7\=_h?a.cQ5[\(GE64XBs0F58:T;3- + Y6W%fWteciLG,35OA'9ZqmOjg/G"ocJ.t5p9*!#p[nHeOm,$5%"I#YF)LC3$@u7Yrh()T5O + L,D\Ml,M6*$N/:okl`pJ1#0Ha='Q<SU!@VAYHl_g(W$3JTPe)l&XE&I8:&^)+p<7'#U9dV; + X:U]15Lg]&&Kh?$@7KegYVs+2q*%#pCU#H'EDSn#;1_RNq]a4U9E'KV/6_uC;-0T1d-16ti + UVF]^W.>tHc16Z`s)QMn,XX,\$a*@>#b/meJQ4h,='&7utN0TSQm(LO,=_o\3O?`<==3EB\ + B4]'3],-.R+8LgMAnf"=o1K!i;kSX&m,=J@V!jlMh2*k#n3?O,IaAu?J'\'#adH-7+8RKWB + ^Hs1k^J_.9_s\Yr@lTspXR`p.o5FK9%9h5<7Kua<41O`9Ud%\Cq@]VlUK^4WV^e9D;/B]SU + [kY>D&pC(9.>)P2g^k=`S8gEiR"W9rN-8XK:SSX_18.n.sdA>21UmG&$SkWqujWe9A%IY\/ + ]pkDJ,+<o0aEhWl;1M^Wnrr&=$DHgV$CVol@ocJ^"FiFh*-X&OPk>^m534ROc\$Z(?oFF`\ + *#S'+NmR4R@._,g;\WE!9BKkOYUkGeMK^6#Q:2GXPE4cHk]SLIgjD*m,JEUe&Ls+e7%[9O; + R#3Md^IYNBaKk*,]'ALtlRWO*$l4gt^eQN#Nc)qTM"8Fhp?cDumB5<a#nY%8l;F][OmH&dN + qSY&@ZrGF<K@9I:C,!4:rg[WnR[7@WFk\eNgD;_QZ"EYO"cr^1s1Z>b6aR.-.)9uWq<C0Rr + $6:Y?5.m>kST[SP8%6N9_:@E1W,4cY<$tl1iVFMYLolpoP1&9cB^b,8ngtU5ttql88?s2Bc + NJe&Id)&%8:rVPS:HeHWJ49j%=NBP`QG*=ZUtNG@&5g8H@`W3P@6`qn<ulD^ZeW[A5.!kR& + ZR/b=;Ef.SOc)**FWnQqPXX?ZAVbGj_$JZ*0!Xe@=MY;5<dPEK+h68Z=VhhT53o5XZhTbQn + 9-eha/L8U?H`dG.E)s=.bd;CsiCD\^NZA=^=FTRE-OqVUmOng'E.H,VJIXk.DF3E'MR^_Y\ + O\F96ltHM>m\]QKZgTR%VeCLDW`^V]LZkOd^J?FI-==^$k(pJlfTgZQAP$ul1!-9Lp4Z-g? + QbplOL<49G3=9)_TFQN\8?<YkGrToYXT+m>1u5d0@N\'+i8&mdUqY0c#qr?BYe11(OGN%gM + O..`[BDa:g?!M.6#$+VW(_QV<l*:G/#11@oK\b/osm;c`N^VY#pD((A3PN6aDC>+CX\(C]/ + kD!%:lDIO,spMkf2WV4[fqY3NNplCCP9bsF>*hfd+B+LU10rAV63,!.h)\91m:UFjk])/bH + qrY3^.U^eD>o`6@-?%?RDq?#,k8j$K*\ZMkDs"#h"Wm.$+#!4-B,;YiY]<VB!"oG8;@%>a% + '7K<+YXQQE#0[q=!?kmG#BUf;CM[1/9c+gYXaBlE&T#G3dFOcZ-D^o;G,iAHN`n<"Ys,+P$ + 8*q?NoWG"tNO/Xs#.[-9SMR-ZF6ZP'mS`JHumAJ[1*ABIPA!O!ucH.;1dlX.k91TaDF/$<! + gVZE1\%Be(mD.r_qPOLi,CL?R(*kp2;uZHisMdYcK)%<C24W4`Z,$L9=T0!;o_nF&"ao.Oe + I0<k=,nG\L]!lO750X2!>jWtKF+Hf;F&X+4Idif>14VCG-n;e)9%hr*m2)C@T1WaVn&OA6N + 7$nQWb"jkcZW-Q#bnZFJ("6Q[;e6_CBblQE(<kF%1NaL4Go)ZlSl:0c8b4o]LH)Ps39gZ-/ + J+U3R2M3Z):P7Q;l%ja1HMWpU[tde;7AWh8Gg7fr"6mF;93QNbl#l8r<CdM8p](5Eukd8.. + ?7=O6JjQM#RpE.rk@aOo7N3T)^I=/b08LZ4B51[/j"50QJ07dNLq/b5uP-1@d("nhWX-i<+ + ^2"4BI<&k%%d8Hb2N"NRtT$T?p<$RO(03\Xth:h:u/lR'tq-P16HY]R=\G2mOjj2:I:E/,j + KLucpEjWkcoOI7QIRcZ;uk(H)OYcB8GXQP\P7W>mgd(Lt9M_%]D/<Ir0YfsilSE_l^l@cVU + dbtZKjG`Zo%[-2haPRL:,j^Q;0@&'DE<.aj"],]imZS/XYn^+L)XjpP<DatrE@3N@:GVGn1 + GLYMnM\Il*qE5rnti/sF%[4R:73n:'f/o+BqlEE^@\U+2K)W';/8)[DcUdh(N4+udsi2*K3 + ++^(ls8Z;iqq2Put5R)6]E>e"[g;Vch8#3q9@e&[J3L5h'edeCCfd<OFrK=Zk6L4U0:s8pL + ;ugt,?\>r1YLF6_CRm+AT9?8MC`F8X^prn7ti?Si-tF:R%:&DM4C?o/m3F<K@X,2CTs@5KW + GF>D\!1u9_t@OiB#2CdU'917>g72@l@G!/:&5^c[$[.%^=c6EPcDe4$3AZdfoXuRmgAOn^n + 88_!)c;,liF\,VZ8WI-amU[kkKh?NF9!3:E%XPe]PeBo.C!MbJFN&!:a_IuNC@otj.(O,0# + nAl-l`f\MG0*Lfbj;dc:KGu+f%@mch!Qs-:j2"VG3[&O)XkmaDbP'^QMg7b0iGIc;YLOh(C + sH2&sq2catZV1ml_Cc9lcLrEmII$'jG`N_/kRdp$ZHNDedSL8C&r2pTo\N%1.0:%f!5i3Nn + as=(p$cT_``2qQmGNF1$4o6[/.:GUBUu.UN$q]%-8q4Z12AFi`/,brulhD`-%D/V)JnnCYm + _?:qBRD4Me$U9%AeXKASY1)/K#iF#:?gb$VlD9f?9'X01Ah=<P^<Zsj(,t'?T7!:4OVmAeW + 2$Hr[i6Yb?1gsp:ADu$PAJAs1FE"[K0&oiYj/[ZACP:bD9.:?I\[H[m%U/!-U?67#BPY9D% + X0EuI;(OIBlprMPeUrI_MNBS^@9NDm\LAY[7ust:!U.A(;im<gJ3\P%oi&c&H-Hfqe`_>mL + ]`mFU(a,'2[!IDUTZqp@D/4pJMM0;HElsM-Em%M%d9Rno7$:<BkJg6M#=iE]$IWohN]X?WD + #C(3_]<(HYYn@i$e42n):Y2bR4jGo0>,37h56='JdfNu;l$3VR/hGAC?bV&GaF)TIb?:U6d + ]X*=tSPB"U>3B]LiF*VcXVq7JElA_'+lWq&,HNt4M0Df(dCO?@CQOjU5\TrT.;jZtq@(D&A + #BQ9Z0k%VXIi4`*<[ciZ7c0+WR^,o!RB^8f8V%Ld[5\slX(.Z_H"G[VJuBKVE/A2[hh.jdS + ktnhg$OHk=._1KB\E9:\cINYRcpumkmQaL'%"BS(MaE]LU,pTfRZdK*MW,s_Kn(V/2rEL#A + s70DH]bPN)oD9<Jqc"McT]Dd4Ff=K;Pt9aP(WR%%W@k9ZhV3</e;bP?uHOO)ll"Nq773q"L + d;iK)B;FSQ*@.KPX9PBH[7X=>BUOem6kX'.M2>'%4':UnociHTW.>E)haX^SBc7<t*Nf+6Z + gHMMki<nKE:58df->6eK$]0I1I5^1)HRh^=X'7BEiI4F?a(Y_8Xha4g3YT#0CZo<I)4b#4R + Z1n&^RmDQBX[Ptk"ca,#fsuYl9&]8Si`fQ:q9%_8cUYOp#Wl[2\2?ge3Ct&M\bgN&<1S],U + P-h&\/84<pfT,7>q>6oL,?`W=DOTebj#bhl?f4upjHr'[gm;h]%Dk7'^k>7q!C/RUY)%&pn + (AbUV'^,]U5g>#s!o".*"<X;L@5Y)JrD+,89Mp^7'>,2]VFO;"OSWNV\Q5:JV`Z<PTN>Nt5 + Z[<GRYXHbfAMWmuHs'nND[%Dgc3=PCSo3lKI:.BM'lG<49l)VK>i3El59_trIW]LS2&Q,MD + H>eF'_),nMcrHbg=HLpfV.]oqFD-k]q?Q0T)=`W6lG<oAY!Lk0=S;CY'.:F/EIT_]e\W]CK + Q?aIB@XOrW[OniV:UDrW[!],IS@'[_:LoqnbP"`U139k1Fb3S<Js:b:bCd6nfk0l;B01*cq + <$ellUgp@$@@89]_,t1Z_-R4ch+o](h]N?$+ZA(d2EsZSJSk:hpM4QU>7--(=1F_3Ji/?]@ + oVK3_-!5V,7+X;-:"W4\K^a:VCrO]sBT0oeF0D>uQ/[1jeP.]C4=[+kH6f^NEJi]m3VKI5\ + _?F5!0cR\<dYUsC"mff)c0pJo%u[uepqOVNq>;4k^LD;+`(OuIKY4h6a3]f[*aV;9+8h8rn + >6Do7ZPeGU22km8lh8UJq?5j&p=_-3RBg=[q!.,AdS9nVm(LS1&I9D*U=bT1fM#t:>@@WZm + e2s(V)9NX^Ze,/ES?'"t43KXlJGcsc'PGW,)k;;r[GF\joR1=5AV0a1jE]QPg#36AF(`/KB + Cqm24+2eXo]J719,[Y_>lAB-!P%+hrt5;Ri]&'<%g3H[";!ir&3U.+`1V\&+DqH'Jd,_(5f + =3e":IKsYX#"Q#SVdmTRdq&6=0j#_#_nJC_.He"jWckW$!Dm#_E*@E'Q5k$NpMs!-H:)$4$ + Za&P0,%[9g+?&3o(!8*gi`"F\pqO/O;c#l'!7m;PS&&aKRG5osu8Q.cN6Jik09p`mBM"EqU + %O@NOfeHC!RTT4gQSd=J13HB(/,SA'"EBtQu7g=8Fhh!e[NS#Is:BYON)c0#J&[;ISm%B>O + ,?>*"Ji*4@7[+L["DC(=r(&%n#gIrW+H3fT/"ZrT_&3eR4;!S*Jh^Yl80\TM_LaIhE(0sBI + fs+E(V[s7nd)jZ/te,i,3/+p>JV*%7B-Vs5R8NFJegm#@Y,@,8dJLkKlRH"TS6h\<PjP8<. + Yi5+]*b)nEL9X+GD9N;BUZ3#Z4"r+[Ubp#U)B`'@D[C:8!:"#YgtFdKiOeL`nI(''LJiJeG + @=#YH4mRKuJ-KT)FQ&dTX%Je?'I)M/Qaap:G/KMi(DTS,_OJe7,h%"]%h+UEZ2F(ttH+G:( + -5Tk^Wm",bh+Sp[#L`lDC%o`lA4J7>D#Wn]3[1n3&W$(;U%VR!GJdsW;#WNrZH3cGPK5E`& + %>Z.XJdk6ndo2ol63oB?K/*]fTS"P$Jdc<8`.ACG+Mh?VK),a++G/ka/g,c%N.MF.+L6S,# + U$<`TRsHT.\MBf#UuEuQ*c,M-m517$0WM&EM.nu#UU[G=pQE[L`hk4#m_Z6JdBMimXL%K+G + PIR80EP7TRm4N+/"2U#TfXijqNCPBHVDK#:L^7M4fF2#TFn;WX'LcJY"uU#"TkGJd)K'?^% + .6EX3GRJRSm"jp3)/Jd!PF:kAi6+AJE"JLUqVTVtH]KHKD\re@'/H2`Vlkan<%U?K`\J"qe + q5(B@UqF5t1Vts2mV(#SOR%NVorgBDCWW&BZl,ipqmKr0-TW"dbLjuAdqN??-BDS+4WToA< + WiJ6;XKAP$qS%H\-i1m(XK+D1[\)korjSNcM>k&Xl`'lqoF&h8^9B!^!.V4cq[.hWkPGmAZ + $hNKa0I7qrlQ>L\c0gFm+MB`TBuT2d'RX?;Lc(Zqc83SVu'eM[O:rbl*d_+Eo*GUiVq`,mK + rmOTC+ANj1-dHRcpC3Jc=o+m]$3OTC1%dmCTOu_Xa>f+o_)*mn!IAA,Q&9,MmfDRIrchr;7 + )sp-6mes$,QB!5TobJP\B8+6Y,&T[Eaka8-AikY-K"=@S"kar<_.r=9G269ij7s$WX\'9Dc + a%1ubq7HhsFUETVr8,>.dki@5gZ2Ten.R-HQ%3pr+N'G`]s%-`!-BIek'bZC&8uZ)JO7]eD + dcg^(j8CZmoZ%g_.VDI)XZ)=5gcs8Ds%[)&3fiq%*>?SB:T=:YO7`W?e0t>nj8DB,obSbcC + 6)7B9hUQ?/3hY*s&3G+:65'4,o$c^<2uaDWe(/La82n[lF_VI&cSln.^`=Bj^+#@GX'aRs& + ^NE@?:)=5Lqs*=Xu(9XV(Q>#PumklVrA9EW3C:qV.D'F`4Dtb!4K#s'4U_FH?+G5M'`&?0f + ITY>t'(80[mPlgTD-iVpV?.fs+;)2'][rkc_Q%Nk%&J$C0r`@%]%@gm(31'.Bpa87&&m#Z_ + &@K+Ct.k5+h\X=!%@R&P=s(91IS.G=85M>-6B?^F.&8$aFg,hl?D)J5ungm#H_#GWR<N7p2 + [+?5f?u,tEJ!.YI9:I_KD(Vlu[eA_98aua."8niOG3n(Tj*kqW!2pG!Ud*"sLN)Z,Y8.2\j + @B#X+6B/FQDZ:q>g&UXY'n[.'(eE3i;YIUS^TWt=R2N1Z?A\sJ!g?:A=^WIGAd*2]GH=lbn + 0n3KDa1\Q]Ue[F3o5/;<f*/rb_u:\pI4am_/A3ptlt1+6P&%SAG2GT2Y!&YJ'_G2s,;hq;* + 4VJ:F.<o_r4`s*ud5!M9DlI#%Oi+6V>]5aWJmi/A>$BFoZd@K(j$bSYtoH4WCk8I5sDs$K0 + P%RR*m$XnE;L2b]^U;?heL\`][E9\N5#_`j71e("<r?2^DM%_(<:Ppl%.`GA_5LQ5)9#LTY + 7EDqSis]FVZ'@*Uo[#hO;#a7PZ8KYsiuI*\F\bC'4qI;`5L]g`O)b.aa>jVO<,hk8"8te%o + dM+2>`Y%':.iW.6pK3Es&@Ea9hFS8.&A2dPfhX.X+C8QV.?Wlo#=hU=`5nC;#a[NrF\dVGq + ^QZ`0f!tA1cd>\-MliRF='-brMg^k.:%(lc=RZ62nQtEql.<MK2I+beV9r"X!(NJ$>?q4"# + ^PSs.lT0ld348,F5Ilumj(aoOc+,mL$dXFIP'rlaM:$_d2^M:#K[7G7J<UMUI7dIJ8F#bt3 + <oTk]hQE8W9@3QtMTs0USAPFV[B5I5$RhLBugkYhmW&5$s2i<PlMK==joe*,kqOgl(PDcH+ + =iaU#[9"?[Q`K5h\eg,i5O0n6XY-<s<l5>T$tHUcouajIB6*EUadP#?J`74:s'TX^b'@#)f + ,Fg*oget>Z.;5.]t5V1N\f`<p0u9Lb<5XY?(j="C&/A;9kl7[XFG0Vf:Jbn!=/S1[asHo5e + %VK:\"R=KDsh798s.Ke]C,`8IIj^s)[UfdtMbDlQS_jMP79S]9dj56caOtdD@q7d2[YmS(E + !rCe_VM0doJ!s*\h!q7gom0&Pa*R3OEc^j$Xti0`7<E+3ob&_MTl*%-GZ]R>jNBgaAk$pX7 + \+iJVk7`a@]V\K?#+8E;]iu'j)0qtgO$IVk6r,n&ToW=Ch"^rrNOY-n<8'*bD?VBaU[?e\b + R3V_]ASeV-k'gN?9=epMr5"c,->&b#SU@WKqS6`'s39673G1q>40uO2@^Fj>kKNmt1_fq]g + (fdVRLVRS<fGGU2MUH3DU)DP(a&T[T[Cc;VT<A?BpsL62(DGQ2)-6(%<kfN(<9-R0!Qalc* + qIlI,-7cG1VEm?Yg(6i9GB;fVMqb\AoTM2He/%fugaR\2KJq2PRJt,.&@HD2]]WSU5:UM;# + #0gUAl\2aQ@\;SO8._&bsgNFR7*MgDI-l`>Bu\)?1'o7/C&o.8Se/Gp<o623E;d\!hpT>K0 + q_hk#gMQN<L/\2':g`X,t#WVtETX*RM_ip1'PbAJMY&Y2YOqbHh&NQR'3O8%G_XF2ISrp@O + U)Tc/66raD-+ZAg3`Dn/U+@t7/MH0C\tUo?ZN2:<"!^_J6aNtkPH_9C4><Km0Z62f;F*BS% + jXLS,Z>@E6b9(W]<Pg=0nN+]nQ%aR;7mP^V+Vl+>Jug0`MK?LZ8,]@;I2JZC-8e2]Yc1q>: + ZRdc^.#G]c/W%dkR`[eNHP^]kc6+C36e>FgJ/U]t/L&b<;cH5H!7%`\ZR%)r`\HKX>KJ^0- + o=C5P3%9.82].-t`ViMAC&:d3Ts)Ocp]"&kZC<4,s$.@IIj]QCQD[Paga5AHi1WhN"I?CU7 + f^T+.N,Q*GGXt#jZWiQ0"aiZ+"J[UE\2OeHs6F.[^[7FeF*G]RP":2&rgFKpo[lN>)96J%u + ^`GPR8Fq*JH[7WX&Zf^5/<#e%l0pY0's,OKXQfAe39iIrKu'M4T=WRFbD?`sME%saXf;K*a + oo6<r]'e:_D:)C]&Uq3PT]jg3FjM?JeTi5WO\H73NJXd_X=,?nB0d`+q(&)'JQ^g,qjAG\k + 4D4>VrXi/?dJR\sY34X/j.%![C>@,?q>bPH[+_4g:)3Yd-F(8OGRD[_sC%,YJaq>IkNt]0! + r#Z#WOCPfUK5:qR1P`3UJ\;]j64`?g_f4EOB)6=$m-dCcJf]XuD,6RnsC/Bq\O-DSsWK.s1 + W18a>T]jbupFBl.uFYfJ04gBdU_qdcq5,ZjpVrQ^')r\L^A[GWp1jnK#@Ym9ikXM=@7^MB9 + ;sVHPm)J"_`q/W="7M]%n>Ub72/I@lJ=/VqG!B5U)k;.;I!Ir5]t^#3S.p?8]R<#oIPsTD2 + GqRe$in?g!M%X@WtT5+]S3f@_*Dgl^jLs/UkumWMSQ4J5e=Zg;g-7JGR[U_aUAa&)='jF'$ + 36LT(E_uZ1?"Q(<Lq?abfa`RaN:ZRmFEO6,]<9oU[Xt!m1?^ap]E8)@&kai#o+s6:@Y:;@^ + QQjuHY48s>X)"=d$N.n[Ytb1&"8j=VVR0/#,S\g4RB3@$sKZpR/1b?QpJCc9I_0M@<(UHH+ + TUq9"$]H`*C0R>h(lorVj5KjI"9H+J;4MsQD`'d#4,_X/l>"d(e8'Ho_V#3fh]>6T\be-5K + 7,6)+m*DNPd)?F@`>W.'.k&'Jc-9J=(Go1;Hrm2hfgV.Z7ASZc$sU&IFA:Orc0Sc]qKU9n4 + X\2-7O7"`1up%njYT;W:2FOfHtTC2BXFPt^6;71]B^A&lmWTD[1mPe.$$RqEPE3.RhTqY1j + $Ju[6IQ\260tPMd;2rq+%L^:V1&M`-jl)AA@d;2J`C%F94ui"%Y`*aA`=6A-O&Z#:k.>[hO + ]Y.*Fl_N'P=@*\<=:jGuRrk.q,;\#XmJ1OY8T'M27=;,`%^F+XseR6d(+;4E>,]82M)S\a* + QdGp2&"-*oAU-^-#;Cdns8HqLdVS[/ITer^bN2a[_(IG.g\[.gKgR]"Q0$=)Fb6fLf*&5Vf + 189FXYFRI1Ho=$J/k^jW99hHIe2k2*3(qIXbM>9B/3c3^6;/(Z9I2s9KL<A>9MA\[b\]d1g + di/Z8PGpP9X7Vk`(WkS9dPHf1*afOK[DoMBgj;r75WL@<7OE:ejX%^7<:+^>LQ$1eA\NDZW + l$EN8?^m4&,od:).*Klsd[0ONpO1c<XpD6t[C-BMOe+:83]mZg&t2m3rG1:@h>sokdJFDGM + c_cTQ6n8[M8sS\J_0[EJ>H>l%N<q_eiZ2C/6&SGuZjX2"gM.eS3?$j5,QCd;81=<.WK.r\T + R$.qi*=B`DRc%icM%aaU#;#Q;2[>[s/N?72A/?=91'ULd/crhR?\5S.(]8/%]Q7\#P\AY%" + g>5u,hmiiOb"Iq$eKnA[-95Wb=q)l'ALT7M/(1bp6J\Kdh58WdTi1ig;[OmN)YlEuVb:NuY + O/Ks"04K,]"6o*gFELj$aNFsZ`q]_YiE/RI)ER['AKQ&41i1"K>-*r8)*E%]H'T!'hY<F9< + oO5<85L5'uj5Wa&NeseKr>f12'ZT0"hqHc(!3=7F+]Q>!8*V4fO1l.m1MghG,TYZmF;145r + Fdk<;o!em7"\CZnfHleUB2cJ<6C"`)EfCmr%SWH7U\qc?!EoiEF4=#4&^7/5A2][pVg2>^f + Pbl&GJr]fInf<g)eI=0BnIF(&jcqT$e=k(f5[m5WQ[i>`W<=;o?$o_H$=H*e3>n8JS&Q'3h + _)75"4c[o_JAG`I8VN;SKp'iIL-_kqaj$*uc'Hc3Mo#"E8emcB'q3PqO[;-mY!nna>UN\OQ + bo"9g*J3%1Rm)e/6Ypmg1'Wj"fOI51/epfdj;'+Cc+8,[p%lO>4jg8`&YEa]A"VmgGM()*' + QG@^ftA7>BN1mF@*Tu`7q+UgU0G]bXXbT);F0j7'46e1ecE,_UQQB]QM0BmDYq#`j17rgl' + HH>uTOd<8>C>7>oX>X4>aZgdT4D>nl1+`Ecb,?9R(P^%C@@ARXD;@_O[25"eFPUIiIrgch3 + %:<l@8m-_7hmPQ2RjKrqVL.oo[S6fHDWU8kM8ttDuHWPYqhSrStU8kY6=C1u0h[P%CZimh[ + [H62".u%D56G-ZQN2u@A:tieK<08_4B%Y8J?hBW9rW-WAp0]EhfffQ$q>Oc4*a*ptB0$6)S + 0HY#$g2sJB8rNDCa_;qlJWGXY1=6>9(?QlYV/1k;Zc^PN3q<Y)X(W`@Dk.["s.HP2duVI>= + Ke"i]gm/6/.,?Bd-&VCdqXK.-Y=nBm%2',YPd3+CaEX1+k68;^Ubie$>:3eLN4]>hE<,2sO + (@C1UP]KO$a4W$d$V`XUF-m]7f85Xnc+A1"Nk5-\D*kf0a\7`F4Rg6(4iChn1PjLoIhA+I$ + V\n(3j:NKaTF'WS3l")YYAOQIX<U@Kg_-ZMV*6%D<3jIQ_"`.cAjlHb,$jej>a^u:_=EAXN + gNW#'qds+F\%E>4f$@rfs0r75d:NEqL=4a5DGd9L;8.!$L=Tu`*p5C'B0tKmQ?H.aG=l1d8 + oj(WSL<geHf5tp\\p&0hVhm<J6I;n_\8e_7Y>-5VI?;X@C.t2IBVjo3,"jCkc4pU[Z&\\NR + R$MYhne^%7+\K6Kp!7mhV/;?Bra#QHZBLBn]/tAt!2r9g!f"4I5eQ*hM/>bsb:Nn&D']A's + =Z<o\h_DtVGiIF-NPdDbh^>s>:=p8caSXL'njlKr*Hr9.o)l*RV!<eTfX2[iIE%;T5;lYLP + +I;\A3&D%.!a&]dtDS,F,pi08YleQbkXScD<H#*ZOEMWZloR_)%IW<rWfD`b1DT:%Pa79ZG + EZC!RSVHL7,ZogJ8H-i\#0l^e&b:mFD#KE,V%r.#(M:P3D)X(M72oB1eRo?r\@)Xip'AMNf + \*_k=iDXob2m\m-LKB1i=@tdoqV,u'Bf*QmNjN-rdnR66#K_VdlrK7<edgWk]C+7e!73+VM + emcZ!nG2@O+3Vh7*%$\C;h8mfntbF1bt97UhNUod.@q2Y>c7ouu:deB[g]D,,5$dVk\sn#o + o"QWm1%r7+iC<G&%,I\ei$3UdJ]n/YbKM`brCA6ho;?!dd#ej-r%6.SLlW-;t3[qbE/h!6n + 8lUMB7[^KKP9(;Pa:H&krh;rW/]2q32hM+pJB"iJKG\'oUS5r\:rU+mM)b;U!p[28\"bA1A + a&k8DAd.pL0$7#:,i>J0nn--K^F3]BrplZ-Gg2=ID38Z^Cu@+'i'eRB<#k:2QZF17;>lo"L + 32@KOPmMki5,rpFe82ZgtDtgb,4%DVVh!Y/+^ufmMLI=dm+07AdJZkVBC_?,$G8;LVXUb7% + =i8"A$NTM$P:h#`aK]@#2oE&JkR=5nPe=7'[)RJg$eC=<\@`K:B[g:db^(!<bX6+G]/(p'? + %t*oMgR>S-K04@'JH6a]etFb1VVLH$I"#][&a%M2!T&D[IIg)u-k+g))cJf8M\6UVL3">`= + PYX9`-#\/H'TS=:,K*qf8_$eUVlk$]1/`\%.W$,aY=Fq:Z0LE,XWrsn<$?/=tOpFp:'Hi)( + +Zim2-G^"M6<k(e[Xo-"KSUcm#Y'CXGVDH0&;LB35mTTO+T_p6Je+N,fHBdd"<G;`:dN;:E + Sc9Vi.G\ced+*a%/hkGPRq=-(dS?*-m6),/V4?QK"p(P<.Y9%+AdXmkTES%+Fu!J&g2`D#S + BAd+@:Y_#Tu<_"3;TH%3U2\#S!GWdKg9"BHT!\!pCaXJc_kn.2O+WRKs3BJ;OU<7d(s9JcW + q8)M/!G+;Z1DJ5QXUTR]?7"3G4!%"\JX+:*Q!EhWg?+FjiO,+nGm]e@Rf!WIQkL[#.o+G\b + #JfdN,nq%qh+n%E6LU%23TSK6IH(]qWqLTb:+lIqmkTSbL+GX\;Fs)QD#^%8F9d500#U.KF + *69;H9d#38#]ZMm&dWHLLBU;%)sAHXJfCX3\Q9o.g'DO<L<9d<+GRRMJf;]RWe).F+fA`kL + 6;gUTSA%(BA$rAS:VWW+ddj!BH`XV+GNJoA0?Uf#\.*&+c:jgL`qM)(e>g&FWcD?#[a6Ynd + &RYBH_VP(MFt6JeogYEIT*b\d2L_KrPD^@-AbGJegm#@Y,@4Jd>GNKlRH"TS6h\<T@a9<.Y + i5+]*b)q'$)C+GD9N;BUZ3#Z50s+[Ubp#U)B`'A:5.:8!:"#YgtJ)@D+iLf+/++6[_DLhUO + c.#T<?qD*PqL\a,_U^-`aJ#&Om9U$hpEW28rl%/i%+6fKuRign7g79UJnq;Lk-i/XKW5nar + J#Ps7RD12nJu#FhlDaca+6q8QXrls!rigD.'$.C28,CY`XbZc.J$'%Qjj,Q;ZLGO\a85X^Y + Qt%.J$=_*%G*<C;]*P18,FK[ZA8<.J$TCW2;^3Ko0C\[a88JY[0QS.J$k(/?0=*TPA&_nmC + E5P+78%dh]M7ero&4l,E1\DL\mBe\]=T?J%A/IW.2D9K<X`)Nrf7KTC3BknfR<Trd"hFl@: + 7dpE'M$5L5_s5/[<r&+fEXcf>X%a8l;a6kDT03<)93r<<f)*'_f'+@8Ur$R(0_5LA'_6c8j + 6&+i7Sd3LD6aIs=m`*bgWGlL6#r>H4=Cd6=c5Y"B8+!^uF5LLDK8AkBO&+l)NdUZ0Ga[%@% + @K)N^qH+j(C%%n:_&(Pb@SDFQ1Cs-)5LWSF9o6D?-UIa%a80s$l/7&hU&LYhqL4JT!C8,&& + 3nZ(s%u/^7M#/35Lb5`;Gnr9.:k32#Pso3l?IfY!WK$QqP54uRSBf9<3$aas&J+X=V(1=5L + m"<<s/D,9#Z%YQ3+uHlO89E@K*P;qT9oG10q!CTX:#ZfH9EaJ$#FD[g2cd+7"MiXsM0"QU: + $\l`>T=iVpIpqXP`odVZ1!n@k7L!$CP)J$:*q_$BiA+7(1oYbi8TR#q>W,Q3K1p+/G\_#In + 3rJj[n4NJBR-6MT=J$OY)b(ojF+7-LeZO.VpRA2ZQ6iEO9p38gTnGd/)$)073&jjZR&S\$< + M3%3W5KLH7C+WGd[?e8Q>3RCVjJ79g[`6sh1MCW"Z*uXNG!F+4s!R3]\[QbQhV7@GDrj*2P + nF!pgae%t%OoCWk9/gn)#l.^r3NqH.ct!jSTF4H\rZFM5Kh.J05d3+\sHI`?$ib0,Q,NAo, + 9j;Ha\+#jk[Q#IdbMEs"i^5d#[cfnX_8QH#GS']^oSsc'\MhY>sjNLU?dsoAG!$'RuWmrc2 + @%jaAeap:g:\r(b?54(J3V^N]&DTB#p$&./FZdJeL5q=0"I*X0@3*s>u.ru^G-J"SOqJRHD + 4K5buE_AGUma8-MmkZiV2Qr+1K>V1[!`YbFirea5B.j*u`*(+sp%q5B%La_V>UXB(%a8/)Y + &KW7:fUijeMGG>Y7";$mY8*e]>R7T\0I@(DR8Z.^NC3Y&O7_9ndu84)dE4L?B^m.=dX`M*% + "G3Y!?^ABKokjP7EDkd5Ld4C;_gg58P(K\,h/?JMPPa%Z2Ue8'VUbsSlEkC>:W_;s&\7Z@* + :QA/Z$CsQ]glOO7f53esQJ@ZOUD;Bot0JAB\:grGmtlc9KoSe!a3=Ce^n>2]'"(?R,MtO7i + B0k7m'L'<64N`YLekB`DN4b';68mlkC>rL^0=J$K[caQOWGT[Y0>:s'eGR@+"dU]$\08gd' + kbo:=a+G;R`OOBS-9Vf%ePdNEI9*k>:,cu<@djf'+Rj2IA,g;^@QJOjjrB[B!e[j7>N`&Jb + J04G>Vc<s1iMr;M/#@s@O8?1`lKadWomjN<2aBUn/SD1CXjak-ggJ>fYTNP`]%;9!mG5I'1 + ?NH3&,QH:ln+!;miKFdZX38/rK"6B:$XrX/8n8Y_gE^.c<9Huq;4?13[[Ve^ENVlD-a8n&) + u4_;pK^I)#q%qinZke'5p[grIRE9iET$8EZiRD\S*i+_BJr$/sXqtd&%N5PX:48OT2rEK(3 + /<Et3+L2+KA,J)8B)HnU^UM)Ws1UtDJ-n(%?Nd:+Y7'XrX&rWeCL-O%M[)h[X=E/kc44K#R + d*ln6u_jGa8a;dOA<-jajKDuVES6$u3Q7c,dNDmsHs,AbA30\HE*NN1XY2sX&a>jbTb=QE2 + (.ui<U]2\%r1fM=,fIjKF`>RPs-E6D?d(<(C1]oo]k6L.brMsck5!+Z1QquN1UMYpI.NrmS + Fb(N?&Z&Ar'0g#L=$\JJnVSnb?9f8+8SK!kuoT+FMg=V1j;^C#*VTc'2PG67oPQ+;V&6]0l + .QSZ"kOnXW(TTVp35T2a)IaFo-R=2(cXDpBe,4cH:.=19<Js\8n^K/Zl&,lH"'>cub/u!A2 + $.NP_hgA?NsdY>?M#7sNjJ!-h-BG`*.9D<cD+m]jg.Z:CkN_fjrC]&64>HttonXqEb_(4FI + H[0Pp'L[=#Q`o>&<isTUPX)`aY5!JC$jD0@!Mi*,0P6gSWK?dZ2kX`9u9Y0_dk/^fj$bD(N + _M67W$SI$dcA'#GLqW#2^2V$TLn*_QnqrA%MU&4p0!=LC_G"bWN6E"%aOn?8h!AS>m&9@=l + nXX'3fi^a;/Y<S%ckRM*5tJlmj10dBeo.YAs;S!PV3;CD[_n,&BG/caGFHtjc8mb-HV*nap + E[BO\#(XP4Pc^RI%ST/B&@-9Ud\3bmD,/M8IOMD"]=+p2')dm.?l&FCMFuT20j]C&lWG"Se + ilq!&Xj/Kgc>.&(XQB<S,+MELa4Nhe-oq^P9S$<8%I:hpM>eW7YGB#:G8bgpCSeu`igC4L1 + oM&ku2DbYc7:["dU#-'EIfd@QgD4:L)ZuV&;+>'O5NNE2\b]IULFKN20/\p.<*3P'/Y6Sgu + ,:_MdgB-[DG\[_4XlqVom,&@>Z3R84P"=Kn[brbC"Y2W]MaJen'RbuYiQu,C8*[M1CuVAhi + pJT-CMn[GG:2fDJ^-[iCPIGANe6[u6#Kfdd$VBm9"Lrrk+k3'mW/`9^4r].L@0R]DM758]Y + 18$^*o$+A<,oWT+(&ZMQ?b/DQJc#h$rSfN2Y$]0^-?og;6bWm"jrncI!0(2NQ'H0J;4DcJn + 83%)iMo`KM#)8M9Ilr=SC2PRMUgD[Ma?%e28-a@Tj^dl?n)Eq3'maiT(U8VH\([e#PC'eHk + `%)A<-8mUm\oeC"%8\iTm`:aB>p.oB=D"+#)q)@bcT+?8BnVGPl!mrfcprX6F&!\$7,be!b + 3\R5&:T#,.MYbR_UeO>uND(R8]c7R!*(I[_O3&Bfb\ZapVi>NE1#1B4LAheGr__lu1$nnen + G`_+s%9BGNLq=&Ub-Nh+HQkN1(OBU'*0j(F]'-\-Y">3+X0`/,)::bb5QW@1BTBk"*-GJ;E + h@`UEiZ),`kQD0MJf*"Q6Rfi<,PQdU<=mA:AQ5#*Ng-a7ffHB&a@[-dFh<Y^n3!KS"6&#dT + KsnreWgQFY(,.F=V8&>:RE=Xo?>L2sI)o!8]Z[YL$W]h!o0&A]no`@Qh5/BdO?EmkIQf*uE + &%C4j%0];89jQibr0$ru=&Fb^!oYU%Am8F#PV%XD=#nW:/Og>W3',;*N.hR_Ln#laI:BjiS + .5K:&1C7DE;)L.l30s(sa_?/[;+3=(8MnPM2%6dYdoR9*>8=JNRe("4l+K!;Bf=@U2[Reh9 + ^81tHPa#<([:<(/HY[mK/i=UAFYjDEL/\c+Z](b3\dA(&Z4#l3n)K\e0^_*Dmp[h\n]R*V< + q=6dE:#a?Ms?Ar@ul@&_d2ghYlU+r[O)`/VtP9N[jMh+)glqV^3GRru`usF&3(BF9pVt&DN + rZ+cmQbe/I,H,2E>K,-WRAoISi11u;_<,LAS!'L(Dn7Q3"o,k+SU-cIBN=!b(SI8F7Wc5P[ + TC>ra@#4cg?13S22HO$j+#O!$2.tL5$9aK$B5r+]3;OL*/@gVR:6aETsEiVf-Gmb+27P_L^ + P.aM+NsmY*8@$DIZHl4)V%#hr%?fOAFP/9!\Ls-+lk&S[Yk'MepFiK@0C\uq0`mH!#/lP_m + ^!Pp"Zm<;)\KCtPLC`h1FEfL9bOOTnIHElD]Dla4#?Ck;f=6%D_bNQ:DED!<0'B]O%<Q_@2 + 9Mf<NfO@Y?kTmEu-WV<mP\#`[;T:Kc!aETC\$ZdubLT%iJ(]q(J-s&"[ERV)ja;e!$sRn#m + ZfVUU[;44USu'suMV\NI:4Cph'VDq/*PFT'\G>r1MHD1u9%m9Slc?7MuTQ0R'7!C.Cm5ZRU + 6&.I<6'jrj5@!!7@E$!f_-XehZ@<=!TcnO<33FXg*@WX`i0LFZT.q:(a"Vs/Wcrie\77FXU + iRU^m<`"9(<45VGA^3:@e9PYJI:fWR#`_\0(3N1!GtAKQ$*Ihh2MF`rM+TCC$I3uK<g?;nR + 7g;5$gs-.G,7kjWD%3'%1]8N(::l#\SJG0/o26fo'YjFa\LF3:CbcJ<nC-("]*?4&@DZ/d1 + ^E*%rV%Qn'r4mPo>mP*lkN=;K!EdG7@Ie&Q;IS'JD*r[iJF,+]NAE'i.7Uf.C!(0ia97(2m + D8pH;Q$5ut1)(QWO][nP-\LNQCH)"iT*ondiFQ$.;6G,d-;m54[+G15obGOr>@F2"Ks_`Vd + Br3a:&'uN1/D`sB14iZkQ$BY7.kh**-?5)p:;tenNqd/mnEte\W9s!))&DN)s?qTA4/]f1g + cEDC*YKb_Unhf2r'4OTOhX0t]D>RfW8Rk^ni,hh+oMg5Q=L>;B7LgXI[SoZ(=%;U67lFdGB + GF%<IcO6s.*bZ"<d)$V>36Hhk%h58CUWC9G:O/N][iC^/r&T<_W`T8C2<8%cD)sdWG=?>CN + S.n;WSC3_hbBACof3!QI>/?!Dg/[:\N`7G3)Pdk`U,U`Xs50:BM50*H1ToE%_lDFXqF1CN/ + X)nkUbmD_T>C*m5'ToFk@!Cr^S_bk2KJ2QpB22a5NJB(j]$pGY`HG>D;DIolAI==O\\D&X@ + XNqorRG1E")'qD<m*o?UlVn4\N+n[4ZlGBr,#i>(RH.7H[4)oW4?%PC6b(Wgo=G`+,[7K + Zi$m"G9F<jQhSdJ)2/+"$^fQ&G8ZSGef1$dmWf\D"8476QiENL"(R>t"\oQ7=hc:6:RkH\[ + J1gk95/uWFLR[o.!BI!=?(q9lNq`_T/]Aq=nrDjNM%+jLKXoj[[j)dBSfn-%+_PSfQj2NI; + >9#C\WYpY/@"oOe[*Hm4eJ*N'W=7$H0HPDJWOR1E=D<=](-#Mt8RApr.32O/EXWEE[XIM2S + ;%;0#iqNesg8d:76$Q&gdFWNgSf>,.1JWK>_0p^rDYD&'+8R*kcFG)\/<PH/n"5Bi<sUiX" + KZasn>3uf_YPSLg5R7V[h`n(aRf6[+9=^+(,LAn<7YSh)#Fm.N)r7X4AHoZH*q0bN]JH8so + @$fP4fA/bPi30aAIZuL7e2;^`(UI3=6l5eI\,dl`21TdI[$VAo'OKbfB&[#pSCeurXu-HE4 + 15tXSaK">1khN?Ogat1KJ\sIFIRra[C=de8pFE0fNPs-M2!jtL311bX6mH"F%j)f/XUk"P2 + Ei-heW]=\sC?r3]/RL0r),M]=L@e2$33.%ds57MY^=k0)lOp"hcs*N"mW.;)7[Rhi-90np5 + LY\pG.'m;b2H<4M*k)!]>Wqi<U?O*+rnXQRBE"'54&3#N)`D$?%:J\el7X0mo^ELcj[-`hS + D3nuBP(O`DcWND;r_t1da3o`>kk8a?a>[$U8(!FQniNI=aYIn4+]ON$F"($<Z`msIs&d>N3 + #CMaDI+/aV$K&,DLLAUT@2gMA3L&@1R6qj_".M)US>0QC7@MCQb1'4o=::VR\$X^ZbPB82g + r6[cEQm&aS\3F[=>NK-2b9;s\XRTa<e!],K=@4BT<<7-oVnK;[CCCLck`6Het]bmD4tj>Ts + W(<kd/Z]J'lo%_0Cf3G`C.@YL:ql]6Z\urAV@^j4!e(V&`";[2%3F?&RN;]lsY1\B1WH@D4 + _M;jc08ptEmfn(0KG<;.oXGjVHu;lMW]WGujl=$tX77oqaKci'85g_Z)V\(WqdG$V/M3@EQ + $.p;JKP<HU('s2^Q>Jq8cY$"2=>YD6Kf>T\BQ$c`<Q.a.p@s^=NYZ(A;pV3&"Fg2tg?doTo + )]=&aL>5pi62?QCHRE6lQ!r/u@N.%O3MPCKVaNPFHMjgRI'9n84g]68['X,Gr4PQ^_']%\A + XcoJ[U78LJ[RCbjgK(uG&t+E4eBr)T+mWa:ntM.MpF;B9"'qn=C%S[L`c]e"8j/A#/J':0O + -(3$A!e:@#,X@-NaH9^p#L<$jRc'J=p9e)&.u.P=ajKJHPlL"+J&CO>kt;#5Wnb?uLi?hKK + 'K5i/_(U^cJhGu:5Q(`U<rmt&*Mn2G.mf`QB4h,$%)C'NmQ\_q@=)j\MHE^8E!2\Z_=")qJ + ;D>5&r#2Oj>0(:dS%CH:S^tTDY^'Y(qJ[Jm&8/k>@")1$S0K+RnT9Oo5TPW7"1'YpQZEs$Y + 9F[*dA&-aNL`7*6`.>/NCa^5-B*2O,fC1Zi%=>a=Y97Vj)X7O;JZ_!%27sB8"'WLkSHp.Z# + -rf]?u$7r%:93=5h3(rA.;W$JZ>AXQl;\'VtRpUco!?`8HVi*e6e"ML'F<%PNWlI!2*lf## + 6:Og'17oABYmAP6`$YJWe(l.ghq[U'=2^A<I-f_oN]<JW].6*.a6N)&X-]A6K1++Cn(K6q0 + ]b%Y9__)%(qVL`$F=TO\Z>5bMWh#!^2M)#SrGW#5;\O(]C'.%k(m#!=#<\ct5h8/UWCNeeP + 7JW<8<j"d9;Jd+0,@r_c3c,^aSJW4=[e:ET8\csu6@lafM+Ccl*1/LLY`ds(>(rCi_'Nt\o + TORHr/tc\5"te9E(pnjP-lB1>MY-`L.j/<$"tCa)RKb3@8/S(PM?k&jJVhpG"t$!P@Kn-O@ + T@Z(M's4&JV`M,N02cUpkXKWBGcDRLc0P`+<Y+h"s4srl38;68/QN$LI`8&JVP$["rj4DZ3 + D5?@A3rDh8gFDJVGQi@"F%+\crrn@;5u^+CSRVJV?W3;LsN-(f#X8fNJIlTOB#K&YNPJ."R + %"(dNY)kSQF5K=La^%No05"q;\_c;9(E#T,1FK#ecYJV';Y"ppr1Op22b@"roWTL^78KHZ- + I(4W$uqB19^8,=[3U<(2.O!!TMrfA5d&cRq>3oWo"V5O/rJ#4UiB<nD6\oOC7l/DW6TBZa^ + TqCU!rhJo(8sZ?S-i0KcWb;1.J#_].Z@Ap&3kDMr.k1J'+6trd[%HYerjJHbIk\C8CT?rTY + 6XptJ$5dHrdV."qZkWTX?.'7TBp"ca.M^TrlLf!YAh[k/DE54TBu[Yd@]eTrmRM,:QX,7Xa + =O2TC&?OgRmlTrnX46n$(]Z/fT]/TC,#Eje(sTro]pAO3m.&Y.M,l]1;b0J%On@_LK42qoe + oMmn;7+O7V-kc\VTbA,Q1aoBnihbR-RIo`(R=rd]e#"WuqJJ"Vr'K#d]sK4mCRTenAdd'3O + ;,Q/(4oK#4`r$k)_N=qt-<^4u.s$`^](Q\2t5LGu^7]>,_UU5J7dI@0,,Q/dHoSPl]4A&0o + /LI:cVE`Ljs%9'b/!'>.5LS=j9<!=nVDQR_dkLer,Q0K\o\)OYHtlD*brVbbrgjAkHQVMEJ + #Di9TL\j2O(oCsW0J8ce6r;Rj8DN0od2oQW;fcd0heRS3iGRFTHEHXJ#ZBFWQ4k7+6p"(Wm + tFW<N,puKDf#8ol<:If`,$YZ!XRIL9XcE73H@oJ#pKcZ\SD(QYT0-/S2/q#Q!0slZdo^!WK + TaqW+&[R<1'XfXqIcmiUl:J$20;]ncIZRqq8;0BNC%fEhLbKDgE5p(0I@;#asfZ%k%<,fPQ + 9'd)dMJ$G^H`s;J_+7+T.Z6i,aR8Eop,Q3o=p09i8JH'4KrL-RFCsEpI4s0.`J$]7a5KGha + +Y=G'1kq7D)KSXtj8=jsni##:RoaAWD6C:d^.X<61i24MRh,(/5KVAjD/Htr[l3O-gUTouj + Y21Kk5*sT"+kKP)8nLd]KaR>s"$o*`jlm4j]oEcF!\nWQU1UVSGSn":6F!dLK*Pt0`Nj0r5 + C`&?L6LK[s'IcbRa;%5Kr'c1X?*Z]Jk`<hFksJKDa=3o3af-PL+UD:$TE9ZM%#ns#<CDiXb + X>p`B=mI'9+5^6>K[cER=1&&%^%-g:N$_tnjQTRWQ,rd,ais+#&("2L9?!mfg)5K!F"5o:a + K+LDu<:i[$h!WIb-q@nTZL(_@J;[VJe+s6$1J"gBNMBS3=L9TMS_mjlLL\`tPkidMkaFt17 + /4YOO/g[<erf[T`:*8^e.7G)S(#mGAMeREcV?-[`L\bP?;2-jGGgdSk>&k_Ld!qs,iuB;>G + )m7#5"ER#5L_su;,R`daB9#tA6b+VWb?m]_>^@.S<B&`@SKG94XZM6s&K7#=\;7U.HO7(Q* + Rf*&+tT?efaupc"U]]BlPc%jLeZ+rG%DdY!:L]_jF@@A5&tj1D`%N>pK;jO7h6ak*4Gd'5D + DZ`V)OJkl5#]MK$jDcT5]Dm@C=@J$BUb`93Z]T$u\I:W`Q"R2Gs7U]$D'8d@ZG9adZ%5)6I + arm"%24/0)[N&3"Dd2Fkb+s^0dO8;L@kt>#k['5[U>$ag8Md`K)e[&2#F&(J*D5Y>YU(i@O + 5O'OaW=A[<<3iT+$KHsbogYq2=!$De_.kQU_9EMe]iZcuTQCp5^DI%YlGrj=XgPjp],Ka@N + 3g);p"m@5])(o&%=g:TWT=Zf$XrBrMg@$G`uCe$p4rU1ZF4)`^)+\"%WTpF6iPHd4%fDmKr + @*=M"<j9s(e`jZ@FV5g7Lb!I\:*K[s%K&_'gUKO?s:?cuacmMj8?,*$`#XE=bIQs)fs%fXj + u*);WeMN?R6[]N:9f?AO@Jmoi+N&MS^l$fudiZr;j+jX__!\3KHU!5M\L0uc<cRhLHk+8@V + s@0ks7YaU#;$5,O`r%j)sm":CEJOq:Z0dDJQ-H-h%8kD][WKffOPN2Z\j'6LOAM-#F9);U" + r-sfK*^uB_).]hVR^?Yis2hf9.-3IG0f$&n>dH8:jh/3lo*j-;R?;g!RCYWS:2A+\NcF4d% + `2=amN;8Z4D1YX4YuCCA#tE7O8T<WF?Kf#\g`uP(2H;CrfGQ3;N"Ch01MBN*r;=FV<R89e7 + h9Ke>.julCCmI.?e8=R_?)WVUqpW#.AE<ih<i]No)_i<7if>@FYT!<?,o!/K6Ff2KGsjiin + sEC5_+fSNCYg;:_dff=(b$2\U3^Z/."Yh^e=,2dt`*El&l,`#`s=5l5o"Z[Aj:mOYX3/CY@ + n&b@t+clZ`F+*3-ro7imLLTP:iXbm(fYk^8q"?=ic+EH?^K920NOeBm\Xu[)r=qJ5Q%68Ks + /t*S/\em'T.QP?c3R[Djo(&LVoYTpfU-kZYH7(A7-ni4h3cZc4K)VM9!2BVt_gAJ[6`mRr2 + _]P;3tXY<,!<In$mYWZ,R_&FK=@XT\?RMS0hP#!_,<AC9tTF',mtY<)o7fW_RqrP-%d?ePK + ,e$,Wq",Z=71HJmbm[;EWZD]^%-rHS6_(0h#m,-Hjmp6>s2>E4pOK]o$qqRl[I"4K"D!(sC + b`gYXh#J@%(_^+#A^3efgk8#VVCW2&P^)N:WKNg_auLjMn(qs:::W@:eb2)23j6gtC<<LXT + +)`.(7_6k`QFu?8027m,.HD6n_UrTND*#i<E,Q'$R`[\?F2He0\CM1EiYFOm_a?+/X.r7,n + "Y4$5.ti^;$/7BY#qNjKX5VsF=OK-DGJMqM*brY8H[?4>HoKOf/>;L5_=+l>ju=<3_.q@>C + =>bDL**IO3.r5&H2fIdSiF:`36R;tqVE?@i(>M^+M3ds1aF\G&2%ds3GK6gHmgVI(Ttmt\[ + `M:bFQMmnY,gNU'mY-';@NE0e\D3YGs"^Be)5kW5Dg=UAFtd$`k"?XZGN(0PWPNN4h:k41d + #L_s7aW!tS'E[j4>N4-W)e3_6M\`]M=:]A('<HQ"1D*)*EM,u_]L]-&DX+si[]]RjD$PYa, + U?o!mR4OJ)[j3L.e/gc3)-BllES(#&E=Yirp1N_D8Joj/>g-saXVi*^`$f.`(hS&hr1a7K- + 7--TfKg%lc7VbPnRnCtqkf0Al#]+<@]PSR?DEcio53].4r,Kb%nMOhI20#un;tNRioc&PW. + LTK=gj1jIWB[2+5I>hY<.7']Im;o65OtqbF(iWNC(&Mn85o^_@Fdtk#"XCP*M`rkWSPY&$: + r)C8C?Efik_3kO21+D_#0=dUlqg9mE%a08Q6Bq@Id!1c_"I0_0hZeM>=uVe[Ts_8_],`KH8 + 24*m+foarDPH/0U[f,-EGZ\O<=*=U[W5W5<irb+pIYZmn\b)bSQJ+mcAKgonT]YbEtZYAtu + 51bq]l1J:Ur94IlEm'jlK\AN^)UGTQd;Du_:4%n'c,HO$^Za2_e_)l'q6kmO,,fCsU`C*,6 + 6rH[r@i.;f^W`Ih'spS,`(MD(c,@iO`8&\8]MC:d?VMeC9f,aB6=\8=/>dO?`E_$6CtPVtf + s<_X9se(u`*4TG>Vhl&]sQ]\ac".Ai^OXB-j8U#2!%1nKLSm0^.[T`PNSA3Bf*bCW;Q"]'2 + LIoDRCUJ^@ZBj*:b$OF$D5J[>X[6oC^.Np;`$&a.)kEX8/7nqPnUF[PWHA8@(PIJA;#5SD8 + _3*.u$UdD.fM2Tou/HZ+jb#KWD@d$o*lX*"jcNPNbud,TC:o6QD'P!KeG;(I+34+If?QGHg + md;st,JF5^fRmEj?+68tY`1B9C!^Yi$37Eo1,ENH^,"b6J8l?0lA0jii-6Y2n/sRfpS12"R + (.ue$b2"U/oI`02+A3D&9-l:'9JX1f.SF#'bAB*tUc1?F1eXW)9=6dkr&^+l4Nm(SbPFFs$ + pVrU5bp5&YoC3bUrBsV;++[0`,*Mk"NeT@b/B`J7&qBYUW#XM`l-rb1/l:WXO=c!.a:Xcc! + =72$s#M7Gg2IT9r1q)A6P??>Ktr.c0BMtr*IYW?`1PEZif2L%-5,GQ,ZM[`a%]*N9J9/l,J + RQ^6;7)UhcDmCoJEB2&#CY]^XLsD+?*Wa$jpe>?TPlpK&X829bkt9_o_+q^QCYcdQC=h0I? + FHI*%4clIO2.F?F&ZbT9=[d44N,m[U1#raCA[mZ2-AIR46%C_!#2k6"4V%Hh;&i\SY\+Gs< + jV?G@(:Z1;3(hZQ,1Su]PW50QdFFQ1jd3L5R*lG3TUhOS,U;!cPep]Pg%?]G".6r`RS(8fd + ]K:m]:M@<T?@D8de0Ne"/EaQV+XO_dljb\9;t9gWlp[1dtP!SPHMg(YV;?JYcL#m9=7.k5M + L<GgOm%@Ps\cM9&$Zg`-&aU"A)RH^XSOa]L5FU>gGN\9hc$leEb:H)pFW8a"kQX]`cqM)_p + -S1He+Uc+DS4j]Yp^><Sff>od2uX^3g]@FbP>7Qo>R/_AQ8j]5+0<a(F4D;80=lILm[?2\N + ;?#1s3n_Q+ohEm\r4'=$"EN0-8=$'_QPks!Bqq#mu=+pQSOiUUuX[!&;2O"8>21En@J%!mX + cu"?)Q%H'3EORc_[n=EfC;DiMGf^&6/8^9GK7(/hPdgM6f]pdB,D4+%KioE6fe",PKcA]F* + 2"#eXh5`Qqi=&YRSkH$;DXM77@hk)&lN3&\U0`:X.$3QUFuG73UEq1!qf`;p:;cM908uR`N + (ZHW&gHY3jSolo)uYZY=m'CgEesd2*F#a5$M;W,UG]1'LL:o]#7=Se4mR)>JAU(^/TDW</V + e[1W7Mt`\K]pbn`-@>gq_E;;?Rt]_kbm'\HZm<a<=>4]GRtCH(&73CVKF]t@]Ph:#Bke33c + \<Ya162:jZqAmLV_`eA#1]^&kQls8]>?1UlVdo#2ViT0'>jRdMmUKCi';I46>=#4,HK3kQX + lGq&FhSj`>^04&?Y%>9J.jaaW>.!0MJLcahaJFQ%4ntTaAO+e%Ap+$CQ>")TN+T3mT,)6/A + WUNd"Qo[effP#+]8A2;F34R>k>dp&%LgKPj'^soY',.aQ([<k'-X6%_Sr>7%Mp<9JjU!GkX + HL8VM2ofXQY*T,:877SZq=d,A>@J>=5bbo<kh%ON]d!BdL<pAh-Q-(uie11!Z.[c,"+k0uW + K9<9)+i$d7eg@cM9(>`Lf/)J\<.=PV1aC0j'gD9tGI?9Q1iA/sU9%RXN+7-`Rj1j6'';bLY + eZ,X5XW=DSe9^_4ODrf\nCOG^(m.=itojo+djXbX+(0")$^1CmA:Wm4^b@GE(mU`MI[Y+Z> + T#>3ro$C<P^ft_nFnOlAEb709k!TUDXbYfA%c>5:?dd!]jo819!)ZJl/FLnn2&G1=RUB*aX + _%db`n"OXFA_Xi63E;9Q?Q`eS2i\W\Q7Ko#(*n8I+"%'_QMeM7MX@s(=M=]Y@cg'SM=QT1? + #hCDIsp<?67R=+0\6!@N@L=/A:%*^G*AJ;ss'_G*,`C\\pSAD\eRH]tCuL83@CS@d]Vr5+0 + p/R_3h<>XQWg<DVC\;X_$7C'@Q$'ieun1@OY,<JI>EcDF=r3bj(Jn33i4-""@h@_NogjArE + hMrhs"kA[#t5+`3$5"eZ.%:02+h@c.Dqs\BTDfI(B:M&Z;rtNe>]k(4/EH])uIi2SD=n/Z3 + :_t,5c11>d`E3?f?VY$M*lq]2$=AJphibeA[jG4:&(mJu?f#KUenS&GCI(_Bf`*O+%2e6ue + FNPWD,po)2_o5mQub`?@)k.lV'GS\%qi(+D:T<IL(_q+'<_&eF5<Zjh55':(hbFpBK\*69J + c*BXE71=;f/[TL*10!Y%XpukdieHV6fg&m+YS.bU2c-(@Un_6M12qmiB&Z02c$3;bXXle=J + ?nXt`nq1,;UpDiIP2SP\S2/+:5X>a8:DVZ#d43k\9MeW)bi-Xkg1@dk\kE&?Nm7:1"8Al]F + T:1"63LBr'og%MN4E2RMQL9jpE:Y)?1<jA]Eokc(k&DfU]AJK0RG8++3'l2'9CYX8Pm/1Z! + (sh(Wa8Wp,[_hRRI.>^>CeY'!?Q[X-+NTS`fKXsi9ab'0b$U`O[shr9p1M2Gc.Kc[fZb+4h + U#XOCq)*7d=uP2O"XWp0PsOKm9H7MD'&(o1XZLbau7r+^=r1$STBI^mEI#(NM078U2BT<#Q + c7Os$T-1YOjpd%0Jr4d#^((63`$mTO;F=)?)Do5=!Q!1ZSu="$K3uB:'Rr#'YWhV6DbW%-[ + jS^s5b4N8b%\JXbS0kS^g]"#`EhE&1H%dn51[+D,j9RKd>SR4>Es*"9dg0YkmIkS\gR?@eG + NA]Pa,dfV0eb:k]i%'O]&Q(V\j),^Z;JX!@B15lX8""1n+fOu-\##'T2i+/p:%$Lc=5fiFM + 1^o;2JWV'c3#N&-6.*Kh&2F(kI01P+a-u3/mKP_'NaQ@V]F8]\)aMEI0r,4j_L[Z=@i-'"" + u#)R`R$>U$s<ZIocR_B(o@KcJVi;oDYso9!tml;E%r0'"sJPR+CY$^H3PDc^r)6fg^H%B%0 + %GX_?LC@@'TtDTO=Q*JV%PP,_:Oq(a0/-@!W"^+CJpg"s@;Y2M$EM(_VCN#T+'b+CHr/!h` + pF"p)]A(^,D?/C99(`mMG=*!?NBr.1K=)>JcTEY8S)+D8h$Hm!(7Q@YXK)<udEL`,?+Sl2i + uGbA]$#'Z_QFM<<sW#=6=SS/njJXnSp#':u#3X0XJB.W1rS;8'&JXf7K_L\3jncj$*B(?.D + TP!9qJX^<j["4\p)6e[\oTBDo+D.VXC*7,Z2M%;f)5;\N#T974+D,WuAtWaF#%aH><F16E- + lJ+tR-5EI>TdW.#%A]e)?sUmAdsKGQj=RYJX=FqHY+C3iW`\]A^UcfTOl*FJX5L;Ck7nN)/ + 4%4AXWg++D$E7=C!<m?@eB_)-VTVL`'9?+D"FT<1meh##jEX),,UGW#8-WP\:q'KHOh5##H + FQq?B`)-lG'sPDC)7JWiVB1QESg_?NZ+A?lD3jJWqEJWa[a,_;+=EX#&WA9nGM+Co3k7V=+ + e(4hT=)?bX7a;P\@TkF3?J"c'%,GlYuW\0:'kgBBiTBQ+MOItbTrfZTH3`;6>kPAG5VC24P + J#9.?DL\QGEd"%Pl5BSp+6k<SUS$gCrh](`C7_B(C:X>E+6puIXe4nCribjm$HBBQlWO4p+ + 7!Y?\"DuCrjhX$Wp[O'C\dtE+7'=5_4U'CrknE19,>OQ-i5$9Z=j%aJ$S8714QWYo/b4)/L + g\I+72)fe=Z,2rmm_/J"G<$D6%],[g2eRJ%)?QIXejTqhOZ#Xuhg/TC-.ekF_1!rop'CYMS + TW0&*u,TC2g[nXo8!rpucFV>m-ng3_/&ocNADJ"L`[IRj52+6W>&TC`28cmf>DkTGAJZ2TA + Gq@=\37Lu1L.YZ6l*?XKaJ"cE3Le%:d+6]",U3':jd<P[[_u1F5oOdQSW]>jUfc?j8rf>+r + 5p,>$,G\;!P#>un8V?shO7]/2d[:&,U\u^^KX-oll<te!J:FFNrg?:QB-6B6J#9a(Ro=WQ: + 8@bK&+o9Se&_PbA,STPo`#ts$A20T,_)bDrh@I0N?@FJJ#O%ZUuY^E;X.ggO7bIseG0&C,Q + 1K#oh-Ws3iQ+o[9/L_?pE2/s&Pon>EAGu.[A`$=6g$!O7e;nei<\4,Q227op[S"HI5o3<G[ + `hYWp^ks')8sDiaS/17&p@>jJJ@Y+bj,8,DZrlbn:V1&ejug@nr)m=12ir'/g>s'T@8JrfU + 85M/Zr@;IfVYqc6rL\hf.ls,%FOoEA@q]2<1I?:`m:-[Dcs(*GRQ&kWB5M:GnAh;2qZZ^LV + g!Kb3U]$gGp4>TO4%3iM-)J!"RRIJW(*DUGWO4(Sef*"BCX%*g&+W[aa^\jtD4S&B[bBKjG + s!20pj\M4lJ3DsH>ef=^D,Z+<!W4s+6?A:\47+iS7@S!`JB#062k#Bq.OfO;9V%u39Qh%Fs + #i(J!Zl.?QCYmFUkD%3p0aWL\ZlNjuM-W2fA%hgV%h!r6GoF5X3L,`H[FejZLSRoH&Rh+6L + q"RqJhq?H_)MYC5oS'9#0$5lWi?Sb#%Cf__:nn2gaMm18fu5L/lpIa@9X5Ni+J%q,E#_u09 + ?oAp#21^\eq3XA"S!'egAs$258"$q/`#,(#uKFi\A&+hD;d(oZK:nA=eW*'M%KJ5gsr=ok8 + =Uh(+3JV#Y*lIVk&5i!`8<G0IUga7c#Pq&Ld5EDl33*eRbZRS+r@SWQ]bf]#@Z6G<1e+FnR + tpiZ+6gp-7el-eA%[)JEU?%&oa!e31kC`$&jo3H'dFu5Q65C"J#TCn,\4!CP;7#MWe(/LL\ + e(olFKhb)+uF?9WOFnn:.LtricY(_Nn*>>0D240'1g6+6uIIX[2roVA-k6ZQ<Z$\X'c2qW8 + mcU1hdXWAUQkg7+:GHk5oB5M+uUS26IPcC*9GB57ntlo9L"$0OFK[.p7lnpaHt5X3p5s(%? + ,J^A]V6Ki7qAjcNc&,'g(fu4Z"FC'pR[Y@*S;%+Vd8Z**q8P,mK<,.Z!O:ia2f>mhEVKC@o + [T[WE$*cO/"9+ol$A@6)[7)MJ0u&eGPuB/T:iO\uWKk?9j2_+#X&X2D3G0pG97_2+j8QAcM + UboO1T%;:&B$X"s'7._G]p7@]pW@aB-%'QYVm!.]P!45%8j2b%n(p"lQKf1]@X?cpu!,^`' + <VES[7dYoNEK8Fe=Ki[.^BIg=Pin/V3%I:]u:&>AnCrg^&HHq#);u,!YK9`OPXh$pff=K92 + <@+887hh-7&i+[t*Q8=CBVqnIAo*&iWHR2TD1I=!.Ym_08Wq-Qe^'B4H98kDl27A9a2n.#P + Z&VC04AC-ej=T?4)3s\=nj+Pn0Hr(FEJ)QnVLL_*N`!SLq.7kFBnMVf7;GKgCeO6C4i;^f! + di2eR7k!o][T?A2J)h#lOYSc"Q?acf/EqCDnodjP=]/\P4Kc/['[.ZpF"_,3V)5Lsn6ScAD + NF_ERe(@US9_r&0P2%]L]2JC)<uND9_uaGdiP.As$>jS%mak]MIha`LCa>*Ui`2nU9muq1^ + uB6FR)KHqM(-?$;T*Y3?H^&DcP6j_bD'kZ6ic&[VKW(go:a(f;0Enll)&FC28I%5Mp"]]pD + aSNE^F<^An_AF)A"[Va@L57]im-gZMVm.ctn(mWNHo16'e-NS(H?KWp5fhIBC=VjcK.)L?0 + CHEI*(NW=FO"LCV>ZcC;K,G="5)RRQI[7BMict_R<qVpgSJ89+SX*Frq5_6(+\4@sVa==_s + Noaq8jf>&-CT)oeYmLtWKs#C,aC`(UC?OYgkUqNY7!QDDMS8G>M/2C5Y*qrmSr1gf^W<q#8 + A+6kaQlCBl\lU=X<*Ah`_R)eNt0IQ#lMSs!:@`BmKjNo9M1H6;N`['<"AWjXC@C;C6T-J&l + /k"%h?YE>f^VeaRM1Z$#oH/R[;6mQjg#0O#EC:3m26-bNY\lL"u=BZLnXQS*\dt04&$^@\$ + ;,cDfaJ.HL4m/GG"ppWWi6/I\:jMIfSDq(3S\%4%ZB/K,.oUJIb#O/eub5l3$'C+<.$NDOC + B<7R&JVFJM$dE:$PeCLa>rG$e!C53hSHuEkPrb@a<8tL!]O=O%ifoPp/-R>aj.,&.cg9%OY + Wm5]YeoZna0MT@<:`QX9A?Ra4h'[=#D;,-X"F+\k,>IBID=$-k5dBLNZ>rFlkIBGcV;I + &fOZNYHoE)$VTfIZ%<Wc6tf8/E7:`[`A``8.=P=nDl2l#]#6JMi`P9<'cOHjj9C+84^>59] + i-9k3d9tX2'IJaX[jOLQK%SW.]t_N/8+a^1`nJo#g4<W9Okh%;Z$&X9gK(ZAbrpl`fThW8, + 6Fmd,brm*<uhX>H")4YRB&ORD,rE=BeM+N8C7mn#5%OW;AT5/uhRn:bQFcOgfVJsG\[Q7j: + ^%jLRa5fr8>b%ZJ!7C_rM4V]NZRI%gKO%Pl0:A$>Pbt5^qdq\R_d.U7L(MrN2/GD*LG+UF6 + p[O'dM?M<?Nqga2q%9"B$6moU-MdpoqF60"MEKA-PoBq")c*p^O1K)p^89(Te^;Ih,%1?=d + />]KDDBfBZ/#<?o):,#E"V=5Z0_J[n8U2TWlH8)YPfR4!?`aG+DSu>&e+j3&HOX$FYXf:7q + !S1+X/TcG7Z1+c.LkC1>YAm"-P_JdQVtT6Ng:W"GaAfb:qjL$RK[%3RD%Xn6g]CAHm0h#-r + &pEcAI#"Xe87-a8"HkSGWtJq?mW#dTEqnrSKEPe$!H.Bo?ln=_<[="8!sL/P,\o!&QNFUN6 + "[a;\NYe]JdPq6mr/?m?U:sct;U?[oqlK#no'&sI"k)GPi%aseV#jDjn/F;fT0CIOk;$AXn + #r&>!0_#`00bfeu(rckD1%?DB0dSSh9eretQ*W1Y1Gohe30r#Uabb@$0h!p=8MmE+2!hT;Z + W.`]=V[p:($s0;%p(ZM>[S.^2\C*i8`)IhHT0?$T(.EZ%t+..N;/-)))INqC*,I@SN6563[ + ujFC,m30NB6>ke."neD+l18]c6FV*%&KADoj!&b\[m;Vep8%1"t62M#J"Gr_qt3O6kNYYob + Xl+*751n,D$-fcX)r+I!5f:_;BV!?lD"+g`6EYTbi!-R+X&,0,<\&2PP-2L-u;Z#/pd;FKE + ;FTf!E"S,B:E`E9`=Tt_T"m\fMmNDdp-9P1E#82)J%Q=Wq4?h2E#Vq*)/klVs;F+3E#u[*] + :1FUuBLC4E$?E+<DKuTm@1,uB92rANcAaA3_!+\<8^Pd8&CW4%[k3]r/^W@5E8n\d\Ei_Pl + pU4O1A)/uplD`Z&+]f5.16]'7da%;0b3\Od2+O")c9B3&haGi;^i?c/Q-L''2KTMdlS5l5? + !Up'Q5a2;b[tt;,j_d'nt<UdpEk(@[khZ(6`MLaitV1k4W_12m772Ob#JHKfEfJ33eH&nW9 + FVPgQmtq2q9Ek'9!bV`Km<=q@_s&$\2j8Ge[U48#pB/Qk2Y]f`1:4R.%e;qBPrh-C]Q>uTh + ::[$H9mp6\!?;pRNYPQrc!FHNE?W7<c&.I<6'4;Lj?rS'"E$!fWojJ4)!nJ4F&2cgU,=@bD + h\I_12D0=l1:$CHA$-7EPZMBp>@`a7##6Bi[SoZ(=%;U6#AuOLemh5$B1NM(#`_\/p2`duG + =aDo$*Ihh(5#3pLIt<a$I3t1[Z\<>QYDPr/.:>!1<A^GVbFP"9^\`O2RQ7m_bI3E%Wp^s&F + XG"m;1;Am1f51FSLr>r5;G?:epBi2X=35mnk_9&aofW<r5c1s&)W+'+Ys:G7.>.%o[Bq'JD + *rQQ&n*+&n:c'i.6A=";G!@rj;+(:@XneRrt7Blm?pFG]=*bl8N(<;9=O=BAj3QX]bfRea: + `G1E")'qEa>G8g4'e5*I$W`<71>5U7feaL[De\aNb`n'h+4giRQp!Tf+JCnl,fZL$s.]V0= + SKH+NX;1<-D62JI%blls?n10k/]f1GcX?Am@5KIiZnGk;13iFLYu!YPmIpa,0gq<b7*Z$+( + -b5Xdm]0ciJo!,DBuX`<45OSj&1-^X*\GOJE0Hu.'?CWG'(:?>36Hfk%h;:9=X-pG:N$/Bb + [gd<4(kP^C3#oL<K+%Mt[Z]Yj/IK9pWCcf"UIY_bPBpN`O<>Yk`,gf+8YnD:JT'%d._0$#Y + SKDTlGUNrLjF"NOR@a0-!C;_mmEO`8O1nkUbm:GBrC*6TuroFk9tG:?Nn/QIj1<S'01$-?4 + AjVLp5p@3QQ[<H`cHM@)^Fd7QOeV;J4OSNsfq9:R9m56r0XSV3NGP/##f8#S*[ahS$ed?>@ + ERLbOSQs<oQ-n]!R:U^M&!jEn?C>k^#;;F*$"'*OI0WQ8E#W2QO+%t3IT@6?cnO<,&"6BYZ + 'hY%b:.rS:9unb74U`q11=_(bCQS_SIfjR\_2S5':nWHB"@)WW&($lQY3l%KW%hAYc2<I", + 4;mL%^k+p76r"`p%deLH6Gjm\^MSXMD>u/kd"9QGgXD3A52%U\+8tpn9C#8W%]R`L9j_[e$ + ?j\s/Xp'%[5_fZKMKEte9]VmtHJRXl1i,H.!qW;,h&%ojB`>0Zo92_=3n=%:N($TLi_OVND + o3k[OtAZT#[U>!d/R4b92doq#WGUBJTn\D!s76I%'Ph2<d9lU&jGHY)EQ0j3i1[C?FnZXn6 + HaETroDs=h`N^6&5hF=J2q"iJ*IY::II\\51+KL%ksHCEIi5.Oc1;&iq6Sb\J2TCFOAt088 + V$WTiOR'"3R%c_=(RaF7lVqfQn5`DAV3s9K9V:HbF>sX77h_q8_?_KH[UTIWJ-MAL!.pqRu + 9qjT"[:KC.P%lZI6M!+\c19U6pX0%_W@T_n,W*UUJP:0`:=-];0\H:bLuDmdIf5YGI9VV:? + H\&LY7n!K:#-N0Q&Tba#n%ePj!2<#FE6)t/ee9obEANmhC[q"%M`"-:$e<j-9TO)_u3XcV. + 4p^rDYHlJ3:^A0h-=W5=!4=PJ3T>L>LX][SEGrltX4'PrSXu3hoEQtYme#rUC4e,@iqY+9> + X$2lR552@_Rg$fSlTb(2Yh-j\Xfn)`&"#$cZ*jnY2@Di3P-:C86JF)@fqZZ92.E)JReQj)> + <t[TXamsub<&FL<+1?BB7\69[@G3Ie9>LD@=n=5jE]iXH0GVSDeGU!B@NDa)gR,4r9$*A9" + G.\*;>1-rJ#+HL:"pSr<^#_%8@e6U0)uoH`([#+,JW0dTa%R4Y<HhT@5m:DEU(=\lI6!bDT + @:Mj5<@b^$mM;fG_gE1>aDqK2:SGuNFF'YEaQ*H,su;5h^\f9KRTq"LcDK>;[ufXe&DSWU` + GIG(#'X1b.Aq&``7,?\.rdl]-Af6LOo6X#\a>22-?gc[c'jcl*s`-UfUS54GK>K'eAhA+d/ + e_dSI[?f(*QP9=a:]mrppW$;25o'F)QdqI_`L,-uR0RTM[M?m\.q-%C,C;46]/Rj]6-9g3Z + h?>b4KDuIY9geR7G^+:e7E21<Istoiu-H==ka2Y@qM7[B%2ZM)f:6'mcE-n8X];[4*tY2mq + C4QTPMm"OLaQV!!%M_i(ur@l3-p64s3XGC^KJ1HGH,6-_(M)(kFeW:C%WJ"R_AeSZjJP$.f + 6$5b0[O';>WmJN9Au=f_qO!cc#G:aZYX_*EQ1i(`DKFp-Tr^mf9ie-WG_Cd=H^8/#/0eU]S + #9fhVIV#k>GRLgfoRKUoe1LNnt'.sF1\A4Ld-:A0$!b5Q09NVr@"N,dETM-=V$%W.b^mECo + mQ(K`JM,kRW"S4q\BMaSn0PFJCB@[QTM%6Waonu#/2_AmHjO'[<ksu^-!o:.WduX-8r++PI + f`P6PcuGZ#tG%oEhH#A&qU7YJLA$J,jYgt!_pIo:aFA5"IO`di(7Sp=3gq?5a$(3PR/T(JK + u@/p_#UjNI`<=E$STi73Fuj"@PM2&Is@'a:Sc1&;Uo'#G=Ht"@/VJ!X(a*#S?ob&#^'7JIc + E*ob!iaaojgL6b3C^7>MN?JI[JIk(+"5&E=_&6\5G"TL3`&2TQ.8fRXKF&Cc7?1.h[++@A0 + m1E]%7">WT*&B9808.`Xh$khh.0;(Z&">6?6iWLjX#S=@o$RcRjJI;"+"=kT]WWXdo6CJ$+ + :P]RVJI2YoSq.3t.Kh)k6=L'DTL)WuJI*_9OF[]$&<)/G[)rLq+@6tL+Ws)\7"GUL&:T08a + :NZK#F0$,*M>^H"<=(#`GC)0kR_Q]#,i)HJHg9)";r=JM?Fb=6%+uK"iq6YJH^i@=)"<n;? + R],5sb\fTKtHJJHVn_8:^nW&4LZ55md`++@,c+%j4.)jFIDh&2o(A8.[S*TKp?s$_Tbj":C + eeV@8"WBFlG?![nU'LS-nY":$&7C'4_`5[H9u!D!b7JH6#f&!<MM1'@ZO5U$=3jbOHNJH.O + JMLXd![VqXg#Pn:K+/feHK'4UD&r!%BqAb!Z-i,0>U8Ri?J"o&^2NFQs)?,a?kpcUqTBSrH + Q(R;Y`0[>MRVmVPa80h+Ve>jPJ#DK+K=Rpq.ZU?tl;@PXTB^_$W1W@Cri5IF]!AH=kPDi@X + =*kaJ#oREccN:>>2$HgBDU\=Y,D-aJ$16rpX-1FqZ=U<kPG[;Yp]DaJ$GpK+5*qNRjuUfBD + XN8Z`![aJ$^U#8)^hW4&XY%m:$"GTC%L7fq7Z2rnI:/bBDaP-i8FD\7b\rJ%4\=P(1#l/"5 + Y4/uej8+7?]=m%<_!rpHEHs6T6fD_'7c]a+B!+6U"\T(2f-?n(\2Vqh3BdJeV#q>VQ#"Fm( + !rdeIW#=0ai#,)Y.KEq>e+6Z[RTlL'd@4E3`W-o5O;>uCWqBmBKUjo,Drek3b01IA7)P`Go + NX,DB+6`?HU[e>F@Oa`9W?!:GoTVSgB`CZar@!a!VE`M1<_DUf/Z&":Q\YEG+6e`6VG[>\a + 80M/l)ck@o]ABeOT/(NrB$)4nitUUs%foY5H#;$Tu["a+6k,$W3Q>s8,A:.l:":D<A(/hqO + /MkFFU:[rhr?`UQXo-;lZ*`X2k(>+6pdoX"jUU8,B]ZlK)<PeUFaCqSF??'S!3(rj#&jbEh + HOB<;oK5LuM->3#QtO7fqGf'*-<o-&(U29NL#qWK$eXFID#rk$5InK7)BCp-k,^/sOu?\A< + ,O7iW>fGOWrU]#hjV@pbuCCqZT5_$$nrl%D)(E`!SJ$HQXa&r3^A>B*d&,&a_fgu-SA,V_? + VI%JLRlI,Nfpsq8rm-As5TjnLKFdVf5KI>)B[&!'2!1I\RZSR3jEQ0;#-cY3gKeU^KsA'A? + pDbps!E`%Zo5qZg`)H!DM8XOP[XPh)q0(NXo6&F2[\M9_#GoPr2r#g']Y^9P&cRZ[1Di\5K + e$G/e2aC3TiZkSKjp`_u.:\o)q;%,HGr^\_&tkB^H4is"]6)b7F1umbQ@+GRk,?4@;e,bs; + :d:FYA;f:MV@S(2h^k^T)<rbnC_g3_.snNKIeq2TFo3Wo<E50)7Ohi%)TYMK)I+oZ`lq<!1 + 1nc1p'#m$\RoH38KJ"M;kI\:KcJe1N]6"hg$#PncLkV.LZkW9"m"<rM\RM-j\reH:*+<Tg) + (;e.$%&'ITL<./[UETVr#Pp?6Yjro).#AP11.35K(k8?;R1eM,;2T?o/&cV75LRpY99FBM7 + L6sN,;a(n$*\oViVo>lFD[$mc8s!jo,^j2s%l)]6:^hL+J^9;OV/g/&+q>8e?JsO&jAfW.4 + HR=`0aNArDX=#<'SoDT9I]\;G(Y#.M^>1=+gHY&+tK(j`IeoP1j/6Kq(BYJH&eNqHhA`LG< + C'adFZ8J$)*:\Yac"RT!+"9o689Qa$Ks"9!XC$,8I_/E`Q[Y'$tBrkf!<%\>JnH;A8F5,[K + >A&J8,&,&FWW!rp'oHo:=[U;>QP`KF@7Yjo"HI(:W#,?9`O0jY(8;NrT,>Cj]dY_$t)Tu9[ + jIhbNk/]dOXZ*.0WO5[AGYa21FW^8`U/YauhWd[/.RdLX&,MntC7C0%Put=-LFPORh-I)SL + !D^$aBf87V'#B-[FX'glQ'PW0nr!JO8A<OCYaD_Nq0t("%_rPrIqKL-0;eO(i52*\9c'la] + V7fpE&Fa36*0(5&pU8m1#h=YI;n#UUYOj_#Lg.]%B71rG9f"npod"gfph)DkM1^\0qXc6#l + pEY!pLDOEqFBoIP`j3<-RV>3oOn>mmh#.Rh_>J)2]tH*9V"LY&XM,Ue[;mtL>HOZ"QDFJ+k + ]ZreFEpAa%f]bdmsA5(+F1lqPLK.qCcNVGq)-`$\^L]/+-3,UuP$p::!KS^fGNtUH";^<WC + /5ut>9TT*]N:F&0PS/Th.n+G-8,b`o3=d=W$"8u46Hkc@s!Hh)UG(a.<*N"8E(lu*QEoXZR + M/%BY3"TT-J8@Bq56*q)8hr2'*M_WY^bh0m@G\io$;,TN%rHN5P,G<d'O:6k_<'[W*oYQ\i + _2$*@/p5hNai3>_-UTMb$%?SnYcg;,VS<9%q"X,hf6%C<C5CWP`E#AF!F.*H+bY]gZj#pnq + p5"gG"JLoO3#A<ng6ZYIn2Wq"<6'EPYAd'gNm*BLVL9"7,rE#jjV/$[j0dG1ep$Fa0r[q`c + $3lE(4H4>LR*g:t&M<ldmm5Oh"3!o,b)UBKtd2uSH%`=#CUPCF(r@N<o32lO1]8Wl'"KgA] + Xo'<P$446]ih4HTT\APF;jJRGQS+^@Y.>@NgaTeF)7doZTuur"g@W8BTctGM07"nIRO,OJ- + TYul3dUcLdf:TPWtQ/J,:flM8i<hf2S08W3uU1B.gmT^%3tJQ'N;J&K+TA5'-q?.6pnU4X1 + ^6>9sLEfZ,B2G)H+3u+!k,7-#4_ne&Nc8a>.41Z@ZDq\SOCN@m&KsVIM6UF3te6dO)TT1GW + jS;K'6_J3A4#4c;=uF$$:Pg_cgB-d1@'!e7R$JA)nc4tG[#@YZdmk*a+Z.'#uhb\=ecNuBf + LLm(W'HVhH9Pa\nD`rf;0o2W26nu8n#WRQ$tTsqG9>X*8&S&1r@P@'g^@(%$OWe&*gUj][K + aL5UYWo;/P!R3Nq]/I!35XMk!6FRt6Di@V6[i>[S_;$R"h)A0V2e.%sd_d+m`CTTHSqDC!b + RpqEm&[j`\,l*/'7rMZclZ068V;_hPD6Sp)Qd`PXc/d[Z2qJR*j*Qg/a<O#!<>+nP!UqaT[ + Mqpj->_$QFVAjY,W3haqd"B'KO(%6Gi8ddds0mTTS9.\h#P=MBspWZFXKo3ch5e;Z@rq!D@ + L7UDp;Ggc;TB2DBNj]+R.d,I9bt$mY'J9EV`!/%<GA&gUs$,]gS^o=V]j7^8+O0sXS;&Qq4 + @_aLgR-"A,FF2jM%a1R@,Z>s8,PgR.\@Q`,b77/Z(CG3qBdAEtm]f]E'6>nYjg:_NJ4bMEV + dlOCR4O*KQVn:culs[76J2B+C^*84o1hF%7LW4@k5(%%XN+oZ8U.2KT7_tq@dZV!G;F^O^M + 'MN1)tCrtZH#&ua%Q&oC\=\(>IDt*[HOJPS9hrOH^m3G^W_,@fuLkmXIQYJ^^Pe0*.j^YK< + %#]85oa`A-PSEf>rQTS[=6hS;P+`Mk0d)X;U%hj:4`Q%j#g(/:2b'glj\diB]ks5ua-l7$g + 2]QpH;u6'Ba-F,7rUM@WZ,8`Up87%_<nTY_,2TT#VJ+q.(3,YD#^8n&@SEp4`8W5=Lm_ORX + "N2s,`*(n^49&qTsnfZ*WpEE#1_]5u".O[YFrAo;)95CPk"?4M_36RaJ9<:1t]K;mQ4KtTd + ]0sEG=[YXd_8I6\9Jf+16ps^H8^(Z\Ut!H'I)s6bae^!"Z0G=_`(WkS9haPLbk!-WeBl/Cd + D[#474Tn$gWrSud$I^4c$WU;MJc.Y=j=$OV^,KQMqG_=hS$IV7Ju)`%,n,Vil3P0`]A`A91 + >dqk/M6#RB1'MZA]&GlDWb.[,?a0bO!7'm@'hh54ieY!NnX"R5JJUa$Wu9_t?N0p.',77t^ + S,PPH0hqC5u`2Cs875d3K6Im<T*[Y+Z>R(>gF"%Yi`2V\JEnAIkF#KVl1[knFN8BscE$qSn + X2iJ6+F:ZJ%&BPgUaXe(H4;4=a'Wg>G\29P^8F&R#RDGD^T?Ne@]UZg\!5[CD;;7*t"-8N8 + U-^-#;BqCB99g'QVS[/IdVG7;PF@UjX$X1p;R;t3gRo/.YJU4Adefh-+XTQ5ZpR6h,0[J_A + @FpH0Z/MF]$mh*Z`k+=4A40e9B&+XoKQ"P5U7=80b$B0S3son:/"n]b\]b[oLM(N=A5M_9X + RGS9ME*-@SH,`bl(8KUeqo7;GAuH9gWF9<)lY'<[O><1F(@39\MX<Impa"7E""0Cu.VAhaR + *^`WJFgj58-<i>FI_:/ke*/*/s*kLNUH<bpsFZV@D.BrN@q<kD8Dr:&:un^d;4f*(_I&[g4 + 7T0I172;@oPQ$1KMGIAN:ccpa*D0i5"Ai>$f2Nk>slE`C\D+IlKX,V_3UN&4DMDml:fP85] + CNrD9H.\YufW>^obn8UY&t\J(XP=Q<>D'b?P#6ps;3Qd_V3TH5s3\^;\AO<K"-5&<Rk>YB\ + MU+m9'9@Jkdbc%b*/8HjeFI*S@R^_\bbu&Eq['hUWXmY>,<uX[50jt1g8]m,5jDR1c\KeY= + #_'e#ft*]<bG\[StmFe*@Q,Haug3]!5PQZ#dT?m)V9k*8C?34=e?DbJgbM_m34^4Ije][Dp + `#a41jK<@,df12,3*0u\iI4]GTioiU#R=hU)(h(;j/SQrMf@9)XO7Q&fK("h(^j@3Y@ejX, + pNFfhdU"4VWeqp3YoBdtai6M1c:D0&0,kEmGoN*%*f.?X'`:qk_pm^@?Wa#?r]44(UH;EXL + :\/3a"),b%IS_VG:ciL/95[:;Jl$TB:kNdRPB4gQL/>R=:s4'ugNb>UMC`i]=MoSR2%s*Z' + Nk6a=Uc/")>@8`e3Tpq\<It1]pDU@QoNS;3:*>AXWZ<1+h9-K\O<:Im3Pp6-96`-3Lm*Q/L + fC:._4=c\b*&YD(]"?001pE3_K9QWr0b/XLao[dp9.UD6Q(WYu?pn,DEHXS3>V*[);i+>CA + _?Mn$\U\kGi1<&M<f6bYs0^W_tX<.2P]Mo3KF`D#+*<5ldTe&b#\b-ISY1:1!8PL%3R;r#& + cgrn1%h,dkHEErB#7Es5nXBsGre5b&L4mgg#rRWGDfJHOe5"t-?7GH+YguNNN7_NM2eS7k> + ;,6e#cN1.Yb]5/(:0.dnhJ@A8"mAa6Uh)r@.W/8<P,dC"J(M[/AZ<u4*!=gsoB#5fhc'k`7 + JCCChVX8#fS01aD>\!oMmq1K2sSUp"I6(V!SJ+6k3SNg<cCp9fjK3!fo?C%;?u-e,2(6NB9 + Ee`lmGsH&EhIXi?Tr-:)%@S+5pHY>)jE_<Z,R^X?):t\t];be@@8&*nqV>B[j`"Y)^u[%cU + 1!>F$W#3_87`7U+FnBmNV8]Lprp/a9iKiq-#O<\\=f1?o=i]^/V2"#+5$fJ>->>iRa-I,)& + oWE$8fA)uT)r]f4S6gF=*h4ClW[RK#hNEtDJjHd40rG+80m^4rH?7nrJ.p"qk=R3t'??L=s + bP/F,^L!d:ca.(F_di$[=5N7ThYdH3$j(6NJ*#2`jlH\Xo""+Q@8N8!:p+:Z%a8Nb%H_2^k + &c_:L1ns]d:TN]d8PY5CP6Oo"6T9@3.r51T%@U%#WU*9;=4cX(>@H]GLA*gdRJMbL>HRV-Y + L[PkM#BB(4XcHJC<#"Y@cj/4YUPCZY3UNYMP%5:?cGX*RfA<6_gjQ`ZXL$[(AFa]2nB7%OF + 2k-<(a.6r*=-cB_F1QW.ji1#DV<V+KpZ9529hn!9PEk+>?pTM7L!C)p4@k+gsZ<P:e'4^S5 + "VPmc6fu;_#E(6m<m9VsJ@Qk;-A0.qg5-WU%Z1+Wrn?tjCj6PcsC?2Q.f#J<A%_9n4](%'; + nMGB(c#[[X("Z4sa.C&lY/'Rlr,JN]Cb:"qPlPBl!TgVmlt7Em%0bB*aCY>C[iP1hSbKq.b + Lh:kfSpBu]#O<+&T%_dhu>4o-'30(!p8Z!D,hJF(3*`+1@9g;dH5PurcP@ZgN.M.;E^Ugep + :`qQf/)qi=mbZ%A\(,V,GR8DDm)TA"qq)0]@U2F?Q\s:?U?^kf\G>drt$KKfJ^h]Pc!$DVn + +A?VJZRn'h9!<">*k-Bp6&o5u@me7HA_<g_ma_d_.g@cU8PNPtLT`ROT:19Xp4*rTh+2Ke0 + ^>h<@nQD\mJ!`c..lD?`<<s;l:B4MLTp5]Ji2.L/d7-c.2G0[Hi`jI6:8l"gc?66Xs%_>^@ + ''/`JECRW;G8=MN;t5=P=,.[TD=-l%_fspackUuq<a4H+CgT%'?UP+bNJ$dZK[?QLm'^E]P + BUB1%UZL'EfGutT$Q'7d)ec)d8&-\eJ<2dR-dV3m9_R#=#%hJf?r37=d:(3VV5Zp$b7SmdP + _QO?JX<?3nb;s=si0?jq>5U'@O[H*.SRkN"-3p3'baX1NX&[%Y:)lB"/_Y#&0"2bn)Zn%*\ + l0^s%ri)3+o1JXBhW$![nR""up_YVP8J[l/f'TOjK.@Koo+^rk"ZX:2'1.DX)*W#8&/:k=h + gAEoZnRfb!&a`'"8EX#*dOs":[)&`]JZbXYD1)p^V"!HAAA-a%O#!RU!?t7C8%!Mdo5fYQ5 + `Y&J7JW6=4=;]Hj1WR;N:bdn;@07>.+CaOO[K\:6MY&SW<")\-'L9V+0fH<A-%Umq@Q53_C + BG-``"4X#$p=\&n/u/\(iBNrJVJG(0Z4AQ!t.B2YV;tQ"quQ@TOAZS6b<F*^qnAOC^_0`"o + 9?LW#-ic#_@R+0JG<l$NgGq^ji:"$3gL3i[Om.^lU)S&0L*+#(E4XiWahIkSa#DT-tTHJY) + AJ#(%J*WWmblB:9$M6tdItJY!,bhLV6F@Kq"KB4;'fTP%.,FN3M^d"._N)9dZ%Z2t5N+D2S + sE?Jm$#&m.I)8:Zka;MR?S!'KMD4kLh#&KrE_?Of!kS^IQR]%+&JXUXH#&,2lM?[`:ApiTh + RE-87JXM<3Q@YH&iW`qdAjQ]3TOp%gJXEARLk1q,)2*R.1kGp>+D(BR?Q`qI14bdJ)0URt8 + /ZH!QPC\K>G,Q5#$R[2V-8G9BGk?3Q7*VZ>9IL'#$2pYC'I]]AR0n=Pt2cjJX$KY:LtY[1' + UXLAKh=UTOek<JWqQ#5_5-_)*Mm\AEj@o+Cs119d!ukdXdSf)(pK'a;HLR+Cq2N8YBUW#"[ + Wb)'FKmkSY@kOf0-8K-4].#"9YF8d7[lkSXk]ON8:HJWP[*#E9j:&dCUoA-)s"jCfD.JWH` + HpjnK>)"j4<A',!<+Chte4(d[nl@FtO)!6CB80SInTdT[PJ"`e:+/L/0ROX8gke[7XTBPP= + O.YYCrfQM\.Sc5)VtsMFV<@\aJ#6lTC4E,X@WJ$;WX8Zt+6jaCU7^^2rhQ1O?M^OulADTkW + e^GRJ#asn[XY?j@_T(JCF[b^XU"^RJ$#XFhLD[jio[hTlcT'RYD;uRJ$:<t#(Nkj@h-G^Ch + k5EZ3U7RJ$Q!L/q:2jj#52hm2>oN+71NVe"?#!rmdY.Djo:d/XpX-[`A8cJ%'(fH@NEeqh+ + >sDC^b/TC,SUk+D'erog!BRJuLMm^odl]BB((J%R0+`dbY!qp%FP9E74g[.g1Ird9LsocNA + PJ"Ml&Ic,MM5Ni7Q5u\,A&5`BmKDc#coH=I$Oq^7(BRc_<reCaT*ZsTrJ"e+cM'70l70ok/ + &+j$id=D6d6i@o6oP?b>`'?g`nK0#"rfBYH6m(Y1J#%YpP)&m-MCCP6,p]QVd]!1="8se^o + XI-6nGc/oM(p>FbaO=`BclTDJ#;3(S-Sn2N[`@;-\V,aL\cE@l2Z=4+o\/?qM((]+[mfu*2 + JAdOWWjbJ#QlUV?csdOt(HI.Kr5>L\dhhlC`X,U&M(tqQ?&4_-&9WE'Mm_s&VSd?4Z^V5Lo + i7=Am7M/7jpL#PuUclSsBr!WKH]qU?VQ>%+Oe['phOs'+O^E=_``5M%Uh>m(%J9h!^HQ\+i + Olcaj^@K*tGqYD<"no:kq!5OsH#TrCQJ$>XG_[$&K+7)=>YpLm<R)9mclth0ViVpn'q][-K + P(BoN:s,290H]YoJ$U<tbm4,(+7/!DZ_hunRKGoj6m.0p_B@;4q%=e1:k+U>U=:*V<bi.YX + u4'i5KQ1j,u'6#[T:]->?br]V!*;l_>[6"RrWDkiOq1ir83BNs!e-KWAmBPiS7(aENV.&&+ + [Y'b96g9c;D]oG;A=9l^]Y\r4<L1n3>+FUi^LFe@N+mlV'SD0gklY&+^e.*LjN^0(%N-dl9 + S9nGb<U%H0E^OReuQc?[FFJ"%V\D'#J$HLGG4^":!mc63-H_u/RZ=314[;s\qY_>#%%rcX( + mgj[T"r4f`;s54:d4bN\,&+e`\i%tdlO?*Y5"8kC1"-c&I=pi*!(5#GB+<Tf@J"]a=L#FR. + Kb17"6Khhd&NKeZ,Q/@pBPS)dgc^G_"sB\Grf9SG5D\hJ,t,hF'I&c>8`TatO7]=c,.q-<Z + $nCH36%?+qILc5Si"HCfc-]>EfN`@J#@;cSk&X(O"oWX8*L$sU_8M+l7@F`dJfp%9Sego3_ + 2gk,c=0/T-*?OJ#YLb-7%ZDPS/jN.hVc^a833/&tW+Gfj?:AS?l=mrF:o]P:gFb]U.(K@8' + 7K[R^2K+7")]9UVA+k)@cXZW210p"hpbN8'h#H>lV.aZ114s'R)MJWKL43p0K1SeK7m:IZZ + qfVngZj8Fq_\b/1c"Tk?]&X/:L;Eri:s(/PiKi%%X7&ZprB4Ln3O7n#eg'J!,m1lD'QBot` + 'dTU"8Z>UN4@fc'>p&^QR+!t5f]fXr-A:?e&,LQIWWR?\PmjE%JsbH9rCNu228Zk,TN6sAN + Z[ppX4<ZIj]noo/]GiX&,O=LCHZBRY*QL5,7NmnrGeu_f"8OqCL2t)RWl[K^XsJ0nK'!22$ + U#24RrG]/9R&#Y?&c7_gHEq!<9A`DU,t/c"IT<dQ5^mJ(e[8C7i-4[AT,X*iK3+m@CYnn0/ + !>U[WaUM#XsY"<uV_Lk3oIa+K^*&)>@!F<NIf\nHL'U0(khm`jLuYhg>U"D3WjbX*EGRe0p + bOV0<^7nG-f.?FAhI;cc$M`9lPV:<C##Q=_==;!J\X:C`KS9#eI1C%=s,p&i4'i8Wd6'(q$ + LG8EEO]!\AWHC-Fa8RL+=L/f8WATW7>-F0#ru5I,FXgrt4]eZ^@EUt:ORb"oQW!,q/JY.jj + s^8P)+uGQ\X/T5.d()Y=F]Gf^R/Wogrt]<Ia1gjRWDePc1A5aB-nP8B;kjUq<'p(g%dih"! + M3^'S#=P&#+/O%&'+MR^8G45P1P4de[R8C!&S02$6ULX[?!Kbtci49eL5Raft(4@B>r![&7 + cXT=6Cq;)RZdfC^<&eAhg!MT3`j<Dgh;LErp^!89q"g5<gj$I!TaeH%85F\TTQ#@O]iA?QO + ih$8&X9)NoA"F*Z#1sP0.D<eB=U9WmYhh-%.a11%80RQMQI#\[sc4YQ.(::"%[3t8!6c@u> + r8Pn1J;\5oc8n/753+5AJnp&#j:&Q>1q=!YjetSXkXai(3p)6%k0'u`CUf,%H:BN9LX(LaW + //,8N9LJ&kt%E1Mr]brm#(5.9.m6'%^*S1beRo=lbqND%`H1slG;]P_Jo;;8H/"816ARuOR + ,=GY3M/;m_n?>`G$sDnJq$)54D6\PcSnimh/]?(7#ILa@U3ha`-g)T(:!To*h4Xm&$1(5$W + "mRSQDrM6P21[.QlUooEA&$-pePd`rGHp;u=g%.'SPoUd]5(iP#!08@i2%abUrd?0glMB_l + @,bjZWUFJ1NC-$&955Qg!C$JJ5X\<Ks:t8@[V?Xi5Oj)B'd+3&KrG$Xr.YAc/G],0]fFR2F + 7g,g=nCZn<fe<-#a!.QS-JBZrg23kjWlT93cua-70Fb\M&0.iC@]ma`guBg=/_:'i!-g"#, + AlLe/a2'<5d@5_Z8+u.VmP@L!sL23HttkkXq6#!']G-a[--Y\Ebs`Jpu8G0#A\"'X)TNT4F + sY$#]"sBOGneZ;[G'X$"uZ9W(+?RT]Togk,rV0X0dV>]dk^_LQ6oK:qXI)MS4&KkpW"bDOV + (#k_dRR/T.MFcE-=Ci4pbd^p<1ikhbY[nA2'i_C4p@,m*IOgCPnoON]nN%d6fnm-bN#`@3@ + WWA*f&;Xc=E&o;HMb]bi2'U?u]n^0>;M/LEK5k:n'o'\@KXJ2*kX#2OqRL_gYO^-)OZHQ6X + okD;9Z#%ZVd*9\^p8/W!mrK<3n=L-aT20uImtCIuOO2,]d7P,KAnLkBT,K:0UCAoP;64HWY + 1)O&)fN2)YI\JP^86feeWJ#)i`uEOdetoOD=Q?YZ/5HAmf"\pfBn85m><C>o,hoEEUiu,dK + '=\"EP1]X=$4Tn.-Zr'-V!c+faCAnf\&I,m$smG7lI1VgfpF1F$isGjmc!/aD4+7c.]q"L: + f+nksij<s<VK"fKfQlUKiN*@@p54:lEY0QSUT#:Ha&-h)S9E.YQt,q-!U.-(U>#W@=657*L + D$.>LS#ZD('XQIfL.h6emn?jd.\LYaV/.fWK:rJ30aM&.Ol13?h7'@&_h$qfjN3_OT;X"[I + gCDFANfs&G;Y^idr/\/a_[-W'E<e2&$S^fa0e?"]P8Osr*>-aCPHuOSM+KJ-.l-WIQ'!iC% + iY!P54W9S'Ji5nF%VhK:DED!'e,[gCp`hQ9f=Y&?En-$Z"ffXE>K:2(K5RLo6ei_m5QhQ3, + s^5WW+sF#,'G1),lq@PFS?<T[G;A3cV&YZ)VK"Y1(NWe1nJ_Ji*AP_#+e_CXL6$Oj*aCbl% + lher=Sgc#b@0i>teV*esb;cg;ebn8T!2WcRsgYQ!5WeKAf9+LDL1&.mT*r?77?+k.LeE$F) + T,pKQD,4mMDcnmS@3?um6,R:"g:dlXk8:(nAZH`I.E`h8;R0D#I"qkHq;J?>uD$J&R#7Fr! + c8-in3'NFT-r>Ug/kG'OO%@W_8MZarn=E!dUFL5\.]?o.n?4>rZA28b]P`>bP/?GDLCA4H% + 'n09P1'jqf*uE(%BK?jm^4Zb\kR/00(A=)NlqrNcqj64&+]m!Y2KqPk#-74&JGmUcM%pRr) + E84&i1n4mgToKEt]3E'2plVZTSuN5njWP'MOte%lZ?V4BsU@23D$!afdT7@5^tnS+119ojI + JJEqY5$2mI]golBehK_OUj373^G'nlAPQMF![3Ur_&24")9W7+b?3t\^o'=QCd\Q\U@>;O4 + J;or7mb\WKiV[q<@NH"jHd69G<5&Gj7[GO12%6l><fe&U6m@LAdoW/M#g@>g09%RHCgtV58 + +t^s@2AE?SeD7DehA.8%Q6eoCm6h^C6q=@IM^nrF:uIF<A2IM$FC*pj@q??dIhZY*n9%5R2 + $_]D8(MBF%RgY`91Y;*.5[(HQ?t(K@qZRKBN1_goVZBpWeV:k]MQ45DMno]UJ)H$9MV'NQE + a-)[7q&)%J8<=E9D%:j(stBlu;O^dedl\okfrgmEl()1C\5%#B#e6mkGUHP94^C)/kc[n<# + -gm!3PDIhR#7nhE@-G8F2e)Y5m0<*(93QR9m1>B91.(,]69Q!JIW?P`*A2g7bmf1T0UFVkX + 931!]JpKL`QM]"113O`X((Md/LTc-_)3nJQ(Z*SZIWhgH7V/O7UNEZ7dcWi9T>]"7]Ze\mK + lWkutrcQrIDson*jZcc/fl-`?dK<i5"^c?Wg<^8_1)41R(LV>'gb9f)OsaZp.:I<Lh2j>Hl + O./P&Hh_Vh_7PgFu;[r38c\X792[$p-c8a@q<k,#./)UFDYTl04jd"Age=)CO"nM7julDB2 + Y(/MjFaQ@(KBj]!//IY&t*dX_Cb>Bo[m]e@TH$PA3bJ%+_NF&CjJJ[nScllP@60f#!Di`ka + :Em#q)/lmZdf0("\V0TP54<p%?'mdF'mn#Tr9ChE04$Sp$?E&B(`FY*(50l[pbQZY:0O\&L + _3>E>V<4=;Umn$M<1KA/$<NOF;Y@0@CB$N>+cAur=F+j;3s)j;(phu-PDj&MWB[RE]qD5)H + MDk=_HTOhdqb9SE=,3!)[af<9e]MZQER^mfSQs<kPu6\Bq--&*T6jH2?FRV6k:M'8$"(0bQ + fh(k&0##dfpLr>IIJgs\*'1Rm@#p]hXEkh9-o)9:pTiuA*Z@Knm\to`C<L'J[0C+3$DlAF. + La7B%c9Y3&tVeP3(=^T3+UUQAF]8XQOB6KlXc;QsFFlfqD<f^,d3,X7M*EhS7]iC^^cJ1@] + 274,E+pU_*WEg.@.c(SpR7DVA0Lkr5Hd-#_LKMu%4J2[]*F3q>t.VmAq9g4=8QXc;pUbBW, + K9ZO,rD0,QIO,;VkEIDs*YE4V<X&4q#qRr#K)ltcfG5BCFME,mGUnea)412/)GrH]m>EdOZ + Y.6uHPLe=2f[i1YH<F<TNIq/3M6K!MHYo$pZi,7?"0iU:Q]qrGe.\2VgTgR262?L,=cfh6/ + ")VVRF4*a&jER'VaNU2ReQhMmKEbh$adDOS/+`UY\)l6=.In`7h.6YN]4C+.@oloShu4oHZ + ,LfF.X4sK_b?lMm&c&WOR6XKp8t.E5(PjPD36WC9F*:%\pT2,DUBllS.>aS#_?+2!eC+:>. + iA]=DdgR8;J+:cP,dS&^DO%uSmPM[X1134Vp(]e^MA1Mh]&FYgaVc_o;Wo2/3Q]CVtgiH!7 + ;(%5#7q!G&a?)dL.W\J_5f1h>aFc^`mOKAW$\J&(j(Kf?/dJPAT249VMT>LCUGM:Y1RbJe: + 5?hA[Y#W*:OjC2ZeZTri4hOc9)YmZbrPeHc`\I(h;tlTAqj,_4QO:L44F(;`&RZOsQoEIK( + Y:tigB)^N@@WTke2;]U&'=H.Zam,d]W&7r43JHGS(tK[oO5r=aaou$[C0AbfHm*$e$aKS86 + @[#=m8Ktj%4Of.Qm$1I.+Q\NOVlo\<O>0h#0m:!A&S_C7CX<[]e'Kft%mJ\m61J]cA`;X_b + M(::Q9Z(m)Vh]@/[q:_r*(32<;[nYK4tV3)k5(AlVTs&*$6a5'lrqr<XHH.G(CESYE/=P_R + JpJi5ZNgc<dqu`!;@ukbHO0%N[rK24;H$*@.OP7/<R_)[j^DX[1G299E'qKPS[6$7DXd=[X + g>Bg^a0'\RH!F"FouY03Tp7`CYI!K5).._QB<ZgS?ISp])\88o`7h]B5kiM(>9.+ALLAUV@ + 2gS^2rNM9j[1ujGeBSVI%dm4/[NkuZkQ6A>d$RYZR+@#A=HH>ekaL&DmbgJ[G8qq>gFf;AS + /YXB)"30*8fldQ+'_\KKSM.]^8<qK:j&]c[1Ra]`'#R#Q'ej"Fms):,ioE"Q=nk+n-iV$,$ + CX^mgIB'5ds,JMpn1L_F)b!c(&iYU6.PV_!BUTM67:63PW'^mWOrC^HL2A\a^5#SSNfaFQ) + (9PR6-MZR?QQuFAd$%l3.0Ha$`')DaEY/$Bc-/8fL!aNO-(5NU["L`k5?qX.O$"j<B5aF)M + L$AfEJLdBcfFkImX2;Z;:aJdA;$'\VTLrl1Q3="7.,[]KbR$W<:dC66,kd)uSUi.28[oCJ" + I[iVP7T"P#qZ3Nm@[$A&l&RmJL#I/,_QIG!_5M<YU!j2"H.gTTLbF_,GtT1^lZng/-uUa62 + .$C-kZ^eJ:Sg?n0@Q2qZ8rHO)Q>qaom!@*[!st&_m$]3hSj7"?E,BOp!b[a:R9\%HnAYJIS + i0"?%Ai=p-]*6VK1b%1!NjJIKU2b(0t`)?_df6P9MUTL/iaJICZQ]R^Hh&@d9!EOl9)+@=3 + R/0I9lJ:S'K&?:9gL_-G7$;t%1.%inY"=Kj/FJs`sW">>I$"sm8/tbO'"=,*V3WpZM67gK7 + #`'%HJI"dXK/fMj!X'U<61P."TL%Z6JHoj"FFaZF&91%06+R1<+@3"1)B_>:+Fs_f&7U1p# + S:?:TL!T$(8*s&";TEW&6+2a-kK4+"R$Ck<hM`.";2hC)?^XQa:L[h":,Q&JHNt)4(+^HiW + K^`5gfcDfglZ.JHG$H/:dl$&1M@e5ahf^+@(ee#[>@]*e=@5&/p*#L_(AETKlBX"JA"H"9[ + LO&.F*iW"95c!-d-"!?aW9cm#+W-4>H6_#aOb+@k]"INV/;+FtV*&b:Jp#SHNaTLZ9jHD!d + &"F6Y1Q:QQJ-kYBg*U"*kQCp`_"EknX=p/sj7o"#S*=*8&JK2``JqKaF=rN3hk^i_iTBN9R + MkB4YTT,_FqEg@;kop%iTBSrHQ(R;Y^mCoIRVmVPa80h+Ve>jPJ#DK+K=Ijp.ZU?tl;@PXT + B^_$W1W@Cri5H[]!AH=kPDi@X=*kaJ#oREc@;rYRb"pLl^@a_+7#p*]:\E2rk7qslMeT'Cc + VL4+7)Su`LlL2rl=_+M^HTPm+MB_+7/7kc_'S2rmCL8.o+U%D0c-4+74pafq7Z2rnI9DbBD + aP-i8FD\7b\rJ%4\=P(1#l)k,s$/uej8+7?]=m%<_!rpHEHs6/sbD_'7c]a+GcJ"G'eHcPs + P+6UoNT2Y0,:[%gCKDbb1oE%8()#ljrr<'lH&q\JF&Kg4%J"\UrKh(tU+6[;LTsQk9d0_0A + k`C:gEW1hcqC<ZO[Mkn4@Z8^73?RJCJ"s:JO%9%2+6`tRUbmskdRm4UkqIU_nc"bCqGSL#< + [sqfZBir6s%C9.0TYkG5LV%\9]Q(.`amYi;gNL,l,\@P;?!-,qKX1Im!kqcm[qu9K2CV,6P + &i&5L`g8;5=([O7a_A'Uk:bl>1sLU&Lr[qO\kpKR^!^/u_i3WE!]GJ#_K,X@N,n+6q@*X*I + IC<SG,flO89E+o\`:qSs]D,_)o+DR3Aid9:<jJ$!/Y[R^2K+7"#uXne!e<uU1*l`>T=U&MY + oqX5Nl`.+sNY.[oJq-ToqILl,N5M-BV?u-m*0Lc\la86;flo]d&);`<aWu#8UrJ_?]3^;9l + s(!AQOcT3/5T)X4ASf#/ZJkf,8,G(am*pNkEW46sM`YRQrLjd3&3n64rum$mLGXaGdb8J4C + +Vi6&+VhIaT2>d9jt*1[^t)F$Xk@ar0\)dB\D,rC2Js@\2Pbq;$Znd+6=ZY2g4oP>PitjD@ + ETWo!CX(j,%ac0ul9Z,ip#>C`hcKJ!UBsk$75EF=rR#Qf7pO#Pirnjq6-)QWi_2MmIS=8:R + $nragl\R!2<ehRiN6nD5%[+6K5GR\B^r*`L1+Y<D*_2l:JJq7Ig3q<YeM\G)Ttid?fKk7@0 + W5L,JXI4r#&^DH&2?`E$,kE(1bBD2=soDjD<&d(C/lp&h3s$'=8"i0mX"Q6?tK'4V4TY^V[ + T^3YO&;h)eBM=0dqApaBJ:F:A>72U-15:nE)^>C_N/.6d+6_E"_oRB?U*N3aaUirt@K)Dpq + FZUL1+5R>W>2/5=<Hd@J#15s(?57#N,b.>`cTitdr>=^&[jSf#j!'O[!7W=!.Upjrh1S/I? + 62o6HFEc,#k68;T&H,8GO8OUnj<?&n+]Loh[m';#aOYISWQb8L^K(W)l@b?4Z^V5Lot@Q.! + fY95/Au(3':W"8upEor0V+oYQuZ)IuNq`';irs'3J?FA2M$1o@)"RhK4W&,#EVf@8ZHZ\EI + Q=j&hX4R$:53JgNDrl#->(*DmPHV[f953M;4TJQh:&,&sefjtD]e1-2Ll6/QoP<9rRpj]XP + #10<n)l'cgUpQRY7>TDj+7u.hd^iW5>0S`I7(KQ5qJ/gib@k`,n=C<QK\XWH6E$.e]XO>m< + !nagE.e.feJb=ES5iT@Kp]8.;?']IojDiYDR#O[pur%^BWY:?[lV!">YJRfG(]e+=,QZX*S + \30k((lB62t@E22JM5/`kX6BPnlas0>['b<;c2Akk)%3KKDSg&"-MhcoERa(Xl^#OF\BAZi + HPnbu`KgjBX.#9W[%h:pR$")\/A5_pTm&,V?,/lWmEf/3pZW(oSFQ.3Cs@M_As[Yg2h2]qd + GnQnl5&#&[\8'))_O8Ia\09u0dd5q0$,cqg%rVXF_!\VII#+6,[C5i>q"Q6p3)l%Qf:C68M + 8!3h*Yf7TBnc')t`>k\L;#eIYQP7II+c;NdUm!&'(ZQKJNF`6c`sU4!8s0.7EW/8FEl(phA + WX5EaT'A-2^d])JM8jRgftL<J*!30QZE#NRMgs,01iH6o0-m5F+/&ijoq9Q2KYL8gH87?oq + +&4pR_3bO>8.W5_o>od5in5:lQI>)7)AuA,f/8D(n8S_aL8Z)N]Aq6IW=_->JdEX&AE&WuC + ]7VN$b/2Jm2([C^A/2$LS@<q!7"G/A2;&uR^(UuF:8@bInSB<'Y.WqjlIYe)g2D(@Wq.p:@ + PHj2MAfJb"cS[,o!_S3gdG+Je[X;U%L3TM_r%l_>g2q#d=ZHAcVJ;tk*T*p7PnaijpoXJ;q + 3-"aRK%6L1f:UNMO(4-A)i^u:"KgYe\Ieg%+pp=cih4`\T];?"UR/NKkb1W6Tj$g"S"-1AS + Z_f/Y8SFb4>&Z=+hBH&U.Y3T>5H,eVkTZZYM(P2qCT:p0fm`<3o^>f;[+IVZ'2N"UT:`*W] + dT/5.bf'4+]g]P7]'M'-qY3Pk2T#lPCi$)'nMe7#SpY/&SXO<O)[,Z6W.,Jm,gN,ph:n-0m + !K)pP61cEb;uZJoK&"BIZ@C:utj-JLC)ldqL+fY*E#(fNJnCHK5HH*cd^^$1S@qL:[:6RX0 + J-o9p%PN=3>jtrNa[(;0O'2=oFNuC)V#bt6S,OR!HWi9F-[9/YNCKJ8#Ri<iJ7n[&*CKraG + pF7&m.Qhu7$,8A;@_]LQ*'1)igL_FPB/YDC.d>/-%"^CJco0)N.nS3jC"0Tt`A\`V^l#ap] + "OZXFq!td2hVVk.H@L$jL;YP2p6Wc)TeS^bK2hs*rCOK1_qYDoIV>U3,/.IH\fM<et:+;ai + fVc$]R.,+"bnE/bG_s)@8DSPJTB@T\AMM>F-KPQpQ,`Ti13MA"4,uSN5a^0+&^Q.NUVg*]b + gH_[?.4;Yd%sV\4W\3g;KTl7F[u[lVYd3npgTRft$@#>;\7,Fc#$6p<<94ttd-4*j4TMn-b + V&gV6,9M<&EX1gu;(aS,[,kJkfPJ]LN9/6!<1(mYNH"/spai+''-0$C"o?A'"c91_u1=Bbi + nn1*7G<J%;`JZQ"j#0W4fI%qL7ETa#@Ws2Q?SgD^1]62pnpWb)iC5ms-n@b^>ND_ujh>PE1 + ocHjbj%ZulGgI%`lY)Ig6.npDa*f456PsEjDl];Z,\rta%Q&o>P4um>d`X;[J6U`S9hrOH^ + lX7^W_,@fuCelXL<Ii8/l<%U]SV"".^us5ZEJ'A;;1ILb#1QaIERXX:!%Zhako+*\<=:jGu + RuO</M+/:m*.//$&e';"P)XQ+oB7$kDclTpJt_46sd]UQaMSAE>I_:mX'gQ+r7OH9#Wat+a + Z3Xj/),g'@<TaW9NJeUh9.*A&/b,Q<$]'gf\X[:O?6KG<o%'VBo,YK+3b:GEl3[i0Dr?B1g + 6Y*YnE\Kk5"$5JGbHnGeUc_<"4\Oct9CtGB"@+4H5qrJP406@^_+mBt`^F919RK@SN(D0]; + 9Z']V,YZ,`6C^"c6]",1.khH$rG1g;9^S!br[GQ<7OE:ejX-$-Ci^E.W%nM=j=$OV\E@[b9 + '1%g;W+,Vj-+/"Q;f_I7>GJ4q$@F;ra:!AkmG\:4e?uP\Emfl)<*I2"HaJe*TWcmkm2q[8< + &W)tCs"o<jeS$,cF+A+iE4\jqDJ8!E`fj8(68@Q$>s2GgVBjF9DdJ/kqI5SSf8+jWD/ZVX# + ,^ftad7#/R*LsV'%5biI\jGZ@BNDS)L_!?=VKTO"YOjP+t5qq7`7$U&;Q6.rM6$/J[JbMHn + e@:-fahs#I<#nQk*_Go*8d$8/'HnTP+tagu3D?80@0o82Va>MQ\YLZ7\J%TB.n[c23W(J?& + KOLA0?XeX\l:FGBdZPA1eUh*3ik6'"?4M_36RaIbH*bJ]K;mI4Kt<]]2ZPWBgb>t_8I>1Ug + 1gU4N,018]4gKe4[SFK>Eh+b!`&K<0P;>bJtADcG](qeD&/8'?lc\dmZ+C<?ol0>LF<uf>W + -ieSE`)TmoM<gf:1Sc.guIoj'`1@$p"`c7EGM3e>RMABnFkW*ErAMrm3Nl+WBs5,1lm^kl* + dOu41W7f-/aI;UKt=#GqY25P:gATCRf>u-/rc]Pn:U8>W3r&-q@=.K9AXT,__!8#a%SE0gQ + .r;ZTKspif==Ukj,BLr$FY!->X:'6]P`E5Q``T7]\'ofJ1OrT`'Nj`;3&MIS'c.s'(bJ,o; + 59"7`KjBGQVlLt;=0e!q?Kn*iBfCG\PskXm3Pp6-97;=3NT5a/LfC:._4ms\cf1iD(]"?00 + 2KU3aB!pXYSVD1V0)6]!DE@lN4thYe($";l-g![Br"a[8Yni,R(Y2r'FVO]0o(SgV#u/bJ- + Gd^s&(Y<.2P]Mo<QG`_>4+<5ldTe&k)]bKV?R<=R#L)pcJrd7nK$<E77CA(=#3f!B5>1PO1 + ]$sh-D42&kr^#daDrRFpViDpuNegc@(4%MhhA\Nh3RN6':]kK[Lh`fk3h@sq[h""M4o/20l + 24C)f)P962F1(?/c^f5TX`lZTGYck8**mk?_uJ?+Btt_j=7$)kqea,ADb+_s:j%CeK6';AF + NCkE:q_W\bBUhWH:\!l;$DkT'7N4lJ#pVL/DLun",+L=(YLAWffP#C9cI5<rn2&?_<mW"r# + jDkRo0uk3B`p24e<epT.YJX3Lm'/ZL(gNm^_)E9&$#B7AheCUH2)S3b%tiZM_:lW_7-.g>t + 6Hof'JL385H6UO>2-PWdL=[DVsOe+L3""1cnr\l9kEe2%k%j1ifj_(iX<Z.$V'<6W!j,2>7 + *4Hmq4'?i5&a0N%s]`cm!)_g'Z1-J"Tc(ilqm9*]m>!8\<7IAOa$U@uj6,ke5^+<hr2;)#! + g-0B.<c-W&P>4<J:YkC)eu\;I/+0f79q'Vl^EmgT:/Tk[;V*^1^O'<;7I!CKVV]"2WifLFq + Q4>:!@noTa@1Vd5%#CBog"4a?Zos#jnQX9LgR;u*bG78'oZM^Cg[0Y=Sm`eCP=>m"3I:f?r + `IDQ?5^`gZMia/cH,M1?)]dSZZROb'frGh@ZH1ImUiEkS=o,rdr#kW9?toU4.ha9s!Q5*U' + (9gB4WHUTgtONQ^&`B_Ad;jsA4r&E7guYtgQXD7sY,/0tdn`3$jiXtV/^S4*%hC$%6!%\L^ + 'a_DkV-B=iiL!=@54DJas>m@65*^@X@h<M.0C;&1^*+V5h7c\+C[$F5<]1lS^ZW<[)h>:)V + %.IRBnEZ'PAH_X:'Qmt4G,baFc]5_N?0]bJ@m@kAlkSpLV0fY0!4JcCA_$?0ealU;oK[<7f + KNckQ=J:EA?6!YAo/">I1KqIa)'mQd3`YN7Vp1McK=4(m5Aok72`V")`Y"O@!6YFK9!eFOD + U;-i4U<p6mOd!ggKPt3KAMcIXXV\hqCO6;SElDeeTo>j'dWq@?iS+UASn@*)fTQ97@pTP69 + eB3Gu8KkiFog9Kp(#mV*F`>Dp'\1V<)k.;<##l"rlRHqA6N^uF`Qir)M[$R>+p1=YGBeG_; + 1Y5;^G;WE1)@uE)1juV%943b2rZ]*]/*F)kp4Rb5WVoGc41ICBO@W6e!jDAHlFD/CL$KRc6 + cH`dG*_^?[n*>)cAE'!BQP!:%oj1gnnN?R3el:Lu(2NSenV->kQPo-9!-,_X?Pa`!<aO-J? + dNCmX-UhI*JDe9L$Y[J?^#_AV%-k>&+&,1nr8UU2?,5Z.oBX$B(c=IhUG[u0ApG`o+oqTk; + -ag$M.$H=jK"ahKs<uh-gI7@213L,49=R4PEddg1K>QDM'u6KMrA76T4&[a$\S22<^5*FCd + FLVBG*S8FFI(oWF9b=%mN)5kO1eBhqOn-7[MG/(AGfZ-N#b7D[KU_XDY&C!4W_h+m5$;K&\ + YosMol4j*6E3GLY*l:k@F>&\Wp4n^3e1WD[[k!=/l"SQD8E,Mf=?YJqgg@h[?cF7WU3Mg9" + CNfAe:CV/VL/-S]=5H@;hGLZM20/4V][oWda.C#k[_M?[r:,_pC`Rk=0,n!=*(V^#cp*!3% + 0bB*a(?(Z[k7=#SbKq.b1M1i=H*gCT$:l4r3tM\d4P?hh^[:Q/+"@=m4=Xl4W/*402\o,8_ + 2JGIb40CR<(Kam@>EfY;T9;2bI];g'=!K'e!64hdJ-e\`SFj`du"pieR^7XoO#=$ID,@&?, + d]_$X$&+[u`6JeR'qke%Ir"=?D@E'dNU#YBU\+G=t_)@/cs_$H,h*"[f,+O)$^#U'*P5(X; + QK?=$&G6ApP#;AH_+p^,Z%A8>U+OUNOWPJd86&Z@`";fZ4K'4>c#V:Q7m'&cT&5r]G5m6[C + 28TVFJdEQO3$=+M";&BP&4$.)4Tl8R+G%TVD?q/4#'$k4`"4R)$UFiu5c.ur'7p@[JJ]Ls6 + NdY1!RO)J&/bTSlQC_V+=7@"JcYSL5Vs#["9LjhHfuRZ#Q^3Q?i5@C-^#U%^S$Y?,Ou-;l+ + nH<8'DS8"FKkcO(]ch#kW^2i/]NR&`X"=5ooGbGJXXQJib*8\0J!Zl2AF=#U.KF*69;H![* + 7B#]ZMm&dWHLLBJZM)sAHXJfCX3\I9U8g'DO<L<9d<+GRNuJf;]RWe).F+f?(uL6;gUTSA% + (B?$knS:VWW+ddj!BH`W`+GNJoA0?Uf#\-FS+c:jgL`qM)(e>g&.NjHI#[a6Ynd&RFW$-D; + (MFt6JeogYEASel\d2L_KrPD^:+.8tJegm#@Y,@/dKipIKlRH"TS6h\<R@Zf<.Yi5+]*b)o + Pt49+GD9N;BUZ3#Z4MK+[Ubp#U)B`'@d^$:8!:"#YgtFdKiOsW$*jH''LJiJeGJs#YH4mRK + uJ-KT1G4&dTX%Je?'I)M/Qe;@#^aKMi(DTS,b2Je7,h%"]%h+UEZ2G4Go)+G:(-5Tk^Xc@Q + SJ+Sp[#L`lDC%p+o"4J7>D#Wn]3[J#1^W$(;U%VR!GJdsaq#WNrZH3cGPK5M`^%>Z.XJdk6 + ndu5E%63oB?K/*]fTS"R\Jdc<8`.ACG+Mj?dK),a++G/ka/g,c&DLr6e+L6S,#U0J)TBJ<7 + KV.I2re@'/I[5eaBW<h;UBgWRJ"rq<5(B@hdRKCqkt5-/V2+nRJ#4UiAq-\i;Jr#&C$L;"W + !E0RJ#K:ANdn#id[$c0lADTkWe^GRJ#asn[XY?j;SKB:CH;C#+6uMt[@cc!rjSNcO#FPOX1 + J"SY=JHcJ$8&4!e7Feq[:t/lq8,7TBpRsaIhgerlUl"\c0hIXP5e^ZtK8(J$c-N:4KZ!qc8 + 3S^2mW5[V`SSgE5h)rnX46l2KT;Xp^!D\R-;;juLKZTRXOCql09McGR$X+7ACmn/q*2rph0 + "1&gfpVl9;1j5`GNM#TYkr;.#rn3>7Gs$)T)ru_FIJVX(*+6XhsTV;@;#PnoPkX#fR,UeA. + d/QHXr=0A14?q3ns$T6Q&jldqM@i`=+6^(]UB1@QL\`hLkh7,RKQN7enj4G_"Fm45rfN!48 + 0@(G-`"\NPS0-[+6caSV1JW3L\b6tl$>"["N6]A127oqUjo8XrgS]>E$+>e2lB(1SeL&^:L + j>f&+ooee.DXVKDe/."V@Dm@ZV\s4Fa=RrhTkrQ65C"J#TCkV\J]p<.k-HO7c12eNj.76iC + $roj&u2K!JF7i.%eIriV%Q]H?G6J#ircYa-KQ=UQp5XKhc2L\f@>lUZN-8V4@9_V/4PJ:F] + krj[a[j<*]TJ$+X&\sHmo?45,0Y;-$iL\gcflf`i%ahkf[!s2kh+FgV8rkaHf$m4gqJ$B=> + `0d;8@mg3RO7kOtf^SoO"9">mp.7N;1FQg.\::g3rlbWE1*>l0J$WS_c7#/CB8lYZ;3lr'# + Z2!S%5`Qs+oXn8q%d^>7B3b=ZI[a_,Tl*7J!,B^8t-K&Cos88[^Oa^#PgD&jR@Y_k2b<%X* + 8J6mCeb#r_nUJ:`ndj_)N5<iS7(aEFjZMQ6H61*/fo!N`jRdV`<iIT`6X^r4G'<6Kqc;WHE + *desM$f@Yac<G&GFV4,7qH*V7!$KDa%+o0Dge)om4W/`s_?SnnZ-Z6/5VlFf]lp7C=$HcHD + AS4:G:T-NBDa#rRV=56$c\GnW8r9_6XjSb^gqL=S%ruSHEHUmo#J<16C^mGo?@!iJLj8At= + oEPP-U_n_\EXtJB5_R2S'd)XG'1,f"$K5eSL+pR[O7Z=7d9JVbd-;Z>k^a9WaT"b?r>q$lI + hCZs8r8Zk-q+9-5LOfV8gF9``H\L#U?#X>&V2WsoYs,E.0!!2Shij7fc-]>E)*2,4-0%**M + ]]]O)akXa;G&R8,A,cl8D#NBb_j<FHDY`8PY?>5!RR+R$.#X:<E<!.-2AP+6q("X'&@N-"O + 0E'$=?.1&eFJqSs]D-="`NGqZ#t_O*u$J$"k4[`A7#R56%!9^/6-VNU6ela2/Enc$15bh/D + KH>lV.`4s@i!?^Y:J$<))3[\J+SeK7l0er[H8,F*p'Ae/`g&F<N*<Tj4rKNB:=$gRh%&)0; + M,?kncH#fF+7/s"1_tnpRR9\]NA?Vo8kdagSLGf%M67Bc>tc]41i.#hS!,%4gB[[>VptjB2 + `Bhr8hiqVKDq]Hb+2KO)hY/%BWjD3s&LW">]NS3YEm&\>b($XXL4Y,\i3,`$itr6cFAAU.d + :60UU73O:s0`SIR!/sJZs&-in.a;C5m;]+8.J1=U2&$XI6^\%t&l[M_l#^jdeDE2UFXg7/L + gQVmS2*qHCeVGu%*5+83k2>A+BFD9;N:-h[fVqgWR&*#=.X)$Q\_,7$g<bdl=l'>f*nLX?G + TL-tt,h7L9/+iWA/B\jkmqoa9R:$[WJ,53@)QP;sgo=h]jr5FJsIhLIBN$J?&i&hBuj$[Rs + 8\I.)&c[LQNY@HCh[:hI#,1)hs214N&4hWiLt&Gk;fYQ]iga).AB^I]$Dgb&q+*a?[Q)<*W + `<QZHE^tJs2\=V,@lXR0!\[.>-eWejU@uN1:52l=_2WVRAN4>p0c*IP&3ppcG!BHiue*'2e + NQ\3i?#$@B;qDO8S[C1\CL83X(SM(/$pureJl^/qm-(*6d*:3MN;K8ni,rcudeXB_6V4C'L + ;%>)oF(R\*R-f"Fa]"Z?53`O'DAG2'"nE2\9$?8mjl;HrfgE"tn@Cj-JsC:fM,B->n0eCmD + Jg5<smlHjW)[P,n:F\TTQ-Xa*TADG'Jh$8,Z9)Noa"F+eC1sP0.NU!c]Up9*]hh-%.c2b05 + _R"+g3D2Pa$UV4<(k)ihISM(L/gc'c.^g`,[\sDjKBhL<(uu'PJkLcKN_Vkm;M2,Q\S+ICk + Xsu*3p)6'k0'u`Mn"MeH:BN9kUX`1CX@m<faLW=M6</Y8>a,BWkVB]lA3%:bQ*T<#`Phs%Z + \8_Y/8#rk/'[Sm0*FU8Gqk62NWk]ONuudDX*APm_oJ^`JH59`D5n/5k%H^Pg"05%h_r^(@e + JXQE5t0m#r+o.[TTVam"]*Bo^@+;Y19eoLuibXMUFmb8*lSS*sP*C!+]bcH^EQp;u1c%.^! + kqO[/)A$:KW%u/HR%+.ZYq*nihMB_l@-DKl[UJIn'W]FiD55RrAC'm`UbtMm^;#EplC[,MJ + /RTn7ACcgmVl&=L-K<WdLtAbXred"[lCMrHN%5@!fh_IF-Q]=o!no"Sg23kjb04r7eKIYsF + Uc"=&0@ue@]o8Kgui_6/_:(4!-h-C,E:c0:$CH\6F!GcZ8,&0VmbLP;R7ai"c(7Z&74<l@X + [Q9IOeDFc6Rll.,rTs[V,fPnp]Vt']\UK#`F4bCPaJM:kNXbjcGqAW(=KTU?6,kk,rV0bI! + #)]dlj*LTZ19bKPd#e;2D38?S3AONtRrW4rV>l=@3cY-/<D"H89JN6](1Y/'C#o"k[r_NOc + _./<1IgCR%>OK:f'cKLCnm-bN%`CVW"diRuB4Rb!/&r^^mlut5r'UA,)'9%[3b`8##-s?!i + o+=U;.?)EKORqSRoIi]LbeBOi`g[K<?LM"hd;I4.bg%Zap8/W!mrK<Sp7BM.30/T^c\2(UP + 0jUHd?C$pC**2ST,LERUCAt$c`GU#Zt[ptqiSPg`iT(F=DP1_r/o5$dEl^We>Gdj*O"3<n) + #05m2g#(DmA[.dI@/JoPi4QWlH&#n,FLa!ckLLXA,YIne0\Dq#PLT!O<bhnfn2k-N[q!!il + %O:"pn0i&$NW,OdoC-_hr+7jP<2HSA4#a2''@=!aW&"io&>BA3VgBa0`;#060;$XVhq0dk7 + )5&c'$:k^<R,:Lou.1hSn0U0+#<oqc&js2km;Q1"dXG1c#$PKiT89YH"`e[O/$kgMf;TO]8 + be>L%/MPX*E7Z\?[k6qFN)JaI;X"[Sm#?&T_5QHKE;)#iqN"JP__0U/o*XnS,7sG[&Mk2cP + 8b+?*td`t&hIYa:CArH&6CSB1N>==P<BT.5nju#Qa96)ab_kE:Gjk*2//O;XLO^_@29Mf(/ + nn9ZY[lXaYtqq2fX%#WS9Aun=Ght(fQ8.M>8"5#l&=t3KK>7nXV]QTfPdt3g$C&au:7-Y8] + .$4)IC_U,;c;_Yc40eW7l'ia!QXdiEM^f'hDG6A6IVjW9WNfMCqfU9,MUpE-a>frtH.&-X2 + <#p@8O+V55/:_\#u(p32>geoEQUEK]%/HX?SGS2k9;E4i7OTWc>hQ?;nNV5:B9dL?J71KO[ + Z<Kc%@7ClAiQu=$n8B[.F!kW%-a7qFn:#p"K"$b*jDp:A`"*/0QO.]$KMnEKntQO?<=3NCk + 0A#u/pKhS[k"\p95]Rp/riJCb7(]&9TG_S:8CMQh$qfk9s1l6DRrP_mgep[:<q#nK_l;/!> + #nIOE1^>P78)F(D.'LmdBa&cMCMF+Yln@15SXZd4I-d0U8n"a;$>u&O,bsRl#+T1poU?EDZ + 8G__mQZ2:YUsd:2bplSc"`2YCVS0m*,D'0"<e3#-W2ObR@cM`C6f3@YCsEL/\jR\@!XdP%- + e1TL;8Y?E`g>)GZDD+:?:ZDDD7eT&a^b&(B5En5)E*R/W'Q-uVuI+U1AfSZM3.]V/RR32s2 + ?M"J01^_sD%q!g!FHdQCclGF>`r]9R6C&?Qc.>;u+%&PX6]2NZ'L:P08RjSM@rtK(0N?tp= + %/9Z7Eu][P%rtl:I`o67h.+@<aA4O%7eTc#]ta\OH4#gO(VFTjcl*EoU:IJT";/,8oAbZ2N + pcLQV1)-$grp(G,%_hVbCut%1]'`QEs:d[nVmf%PG4C[_kj`a%ieX%o1?c[aN&*")Y4"&@D + [Z<=*Q'nSZkjD[A:>9P"i[r:&)e;Ki@D[gMZQ3q>'oEE,)?Ps4do9_4HJE`GhSPu.+8?M*i + %F&cRgQ"'FVE;!4UFB*=&Q#uatK(lAJF\N)Y(L6b*R992r=Z:*kpMX3dF'9#4q[GbnZ+AGM + Yric/4AAfQD-J"Q_*'Zp4`+s4NH$!Sd6:R\5)k*lXbRuUiBMJH5HU7Oc((ibn>n;O?]D;k1 + _jCT).7<t@'h.dkA+KUpB(%,h9\)JFsTMa.,NN,6rl!fp,'(Wrnp[W7<V$F2Fb'8B&W&WAI + DcK<`nB9I7L_U8+pQU2JYjLDM%S&\Ib0AY$VMMSS1urBT@"Ee>m9hF(n:ckRNA!/r[KPUqR + >)l-e)H/,*gPr9DS6/oJ282T3Fl_X*H\m.Sh&G1BBkgJ@P#:am&SCeG@?%e"BXD`&DNFWBm + n+`J/AQ$"LqmhkTd54VC4EGV*7mkls53m/<dbATf@ZXWS9c#[^Lorhd_:M.n=7aCIApN))` + f2Gcf='/7T=I3Guaqn1i+W<5*qGF;;=XdO"/U,[SGS.]8;8lb+NKbd3Gq[]QQ^a6el$<m'? + 'hOV-OG+fq-KDsQT)UEFnXP9%biJbI*s";(Xld7nX2-bYIU&g.gpg35d=D\@d>>0&lW;N\R + ZN`A4o>L\.P6u(S'&Wip_3Q96#Q(L:=ZEB$6+(P*id_mn&G6KMnh]pe,;d^S#V\Bt=h/k`_ + ]:c"ag1L?Pt<0]-ZW.u3?;UCcs3\iGTC5D_;NmEl.+/4HB+'ZBiJDX:_fo-VJE[8JQ$VUIP + Eg3&@2GGh];ES?&)M3k0'>B8G[Net6EEG]dNT9"i\W_n7fg9$I*Z]NdBpp$(Z%3)B)U=*5e + G7$1UENmp751DSIGW@^-D,Y\cbBWL%Y-l<7e(^-$iK[#pYF/Z[fjR**A?)+&QIGl#&d=V"$ + ESN"5oU]/2pXe7_ZC:hZ<,eK<Z'YS1>Vg^RMY?YmI(0Pos<9GRk=`2FB+gB8XoTOS5r=4\] + Z?n@@\*V[MdbMP_.smMWDBdK3@MQN`uh8@CM[!KQO$Q&?b2CKnVPnkW0/G\e,?tPA6J!9Xn + q6(i[7%TnelgLXb@?$l?M-M,*i*0A)C@/2`9,!PB8AV%jF-0c9AKc)''tDm'H[Y7J=6]r(6 + ;V_p9.EC7Ha)iZ^BNHIgPXL5fFj&K4E<Oh>=*!)*XB9.1PO0%`af`P<D#<97%3=Q@Y'oTpH + )6?i(q@TV$Hn@Dt/&PG<>3;fdos^.6acmIbPY,qugeV1]hd$$NQ$8tSpSU4LWrG-_?@6NpZ + ibZT_8fLaYuuR(]RR3;$-7>BR2h3lPV:-]SUR)uZW8U!2t`X;WO*KA75tC"=hR9%\OK`B-N + (\k>fF+Z>IF$Q[PWQDI+(W6f-re"B7"^F(4FJ+V73h,\,>\eSF\7XLM<,Y9:0!XpgCf4Q-b + i!9_Pa%fQ3c^YG.9=U<r5;[`QrubtgA__Yl,`gV&HT:",TNDS8?4R'"kbd8Bj<MjeG3>MY5 + q0oU66N3&G]SS)s87rg]]NS99^HB2'PP88NFF1m3IokSY3$'3f;pH#?V\uqZ2R<>'k_7*df + o:<`UQ,7sM=hUtO>VB8c18GmK41R0%gc_e\_csIl>PdTKGEg[FR6B/lrYkN:HsL$anQl"mQ + ?TRd=1(:0\8lt<?X.f[2>aY!(U:=dZ2B;B*/Pl/-Xh?PaYk0]E]^Ta4gTO06p.:kgHT2>.: + _!5FPO:a.n?u=B7W1[[9UU>4'eCZ--Y+TAt7D()<]8VECjEqT/]3`Rset_nV$`Bc[1N3JcO + $q5M;,V>Rcr(J[/["L`7B>`e_F_YVma9LBCsMfJ1Gd!X?DjYFo[a/.Hk,?,5&g29ZML0S-@ + aCM4X;#.0o9eo3L2%:]KB:nVRu)S--TJZBo.\nhgU"'!(d&2cUS#,ZsN?tr4NNWu5^^sk%q + ":[Qt:KjE*fG\c7Rt7H0Bq)150`t(ada0hQq?E18Uu5r8)Fk;?83kSl1is0G"%HgoBXes1# + )Ro*1N505%1ND+^sJ0"*h!:bJY6Ca#T<YL"$]&sYVY>KpB*QrTP'W0iWaUXS[`VpX:4=q3P + `p:1QOR$E.OM:B':,AY6-[Jc#>I<%+F-cRNQ3e)4Cb@JXJZ?1E6hB"#.O7+%R8u#$ukI?tI + Cr[f<"0dKV7q@_r="_$CmZJVpBCW.Bh>(o7P3@Yt@<+C]X$-UW\,RXp<O(m]`0;(;bqTOL4 + l,G8L$"sV%m(l3a!BGcDRLb[$V+<Y+h"s4srl38;#L_t;dLI`8&JVOkQ"rj4DZ3D5?@A3rD + b6SqqJVGQi@"F%'$3h:h@;5u^+CSO)JV?W3;LsN-(f#X8e#ETbTOB#K&YNPHr.0ML(dNY)k + SQF5K="5T%No05"q;\_bp7jm#T,1FK#ecYJV'-O"ppr1Op22b@"h:*J`mpjJUsa:(kI6\M? + X5,?qLV++CI?SJUkfY$A!_`(^FKB?kNYD`W@UhAm)QbS.He*ncjQ9BAs,DgB\\hJY+>.n:@ + 2*$3ki"B;u/^+D7,IH!Q4Didm[,);]q8f;]$uTP%^<FeEAF#'Ac/):3r)kS_TqS@D/qEZf! + 5#&tbu$3kHYL`*pXS&cJYJX`%l#&U#FdKXN\B#4afjTla*JXWMTW.CC_M?[c;Ar6e++D-(E + JXORt"G.c;;>u6@k[FIG+6\:TM.qd?/;tfEnc"Q@klLdG+6asJPA?"A<0eiPOoC`?l(S*G+ + 6gW@SSa5CI%VmCqM'Kua81mIWCQfPJ#V2fTW'Du_>^L-lI#U6+6rCqYTN0I*3q-=6J-diBD + UD5Xp=gaJ$+S'mE_sDdeLU"lhUOr+7(0M_]S58>fAFVF!/UIm$[jr+7-iCboc<8I*XVY'1g + Upm5b0r+73M9f,sC8SCof[ZZ+bCmFhKr+791/i?.J8]]2!^;jcbjmWnfr+7>j%lQ>Q8h!I1 + `o>H-k-i:u7]Z9orJ%\AJm!n3.p`CaI5L6;.56Li^&+fQ\cg^s"&4$=>6k"[&q?\8-0RobS + re(OQ&g-=8&><VgL61p)6_jSk&+i7Sd3/HWd(pD?Uf`P;OT.cpr>H4=Cd6=_s$ooe*[B`rO + HM<t8>H,/&+l)NdU<)Hd6T0,,cHukd/Q``r@SWQ]KajFs%H:@1+$PYRg8e*+6g:bVZHdeL\ + c*7l.S+pK_1lN!<5jTrBUte#X?fms%rms77\^AUQg@p+6lOLWF>e'#Psl2l>V6PkpE>D&u8 + M0rDSdM<'So@s&Hu8=:b(9.2ASc<snGHX0MZ-L\ee.lNi!A8S55n6HWI%j^tV0VE`Y1s'"I + ]Cs436[oW@c+7"`4Y#52/a85$Bl`>T=fquC5MXt07rHf(JnitaYs'MQ"Iuj:*3>`\=@-fFo + YbD'68,Ef=lpQ?.1&f.)Wu#7sD3'bO4?qL)s(#X<P)o<35M8a8ASec@ZSDI'L\iqNm+d)sO + oEYiX$(+V%"aQ2%ac167qjP,VR4c$5KLA7,:!,G[77%Dg<3]9X`Tegnl@usB`BCGOg2?<db + <GkD'u+VT9&PpgtS$9D[ksF2s1$;8,6(*j]0/W2\+hP>E*Xj4L1%=c9KKFQ#_mnbrNg,kT' + \L+6Dj=Qe+pq>t_5@Y.`GSZ2S6'q2ZW[7GBn*EphcL^N\gfJ!puKBZKqFGg@,c]XO@$hKcF + Lk1"mMEW0i^ZdjCUD=5+3^2_3haWK[sJ"5-7q-Qe\IBU?YS[&0<8,;%kYL384Vtg:b"9:UF + r:l?Ek5h5,$%[%R#Jh6$JB.Ki+6XaR_.Y\2+S6e0:l,R@oJ/YXgaIjFXqnnL@gl4*s$^Gr( + 6A)p%O&JHLTpb#`"[M^dJ3`4,Q/e(LlW2.CeopC74=5hVE`M-s%;fj/&f$1(ZPp49V_PBO7 + ^m=j"tM1Oh*MB.--siqKj=Kp,kiipE*oCJWOm]7Z[3`5LbXKOV0E>8I6[h,bgtSlAU4m=Z% + O:m%9LtN`+#"C-U7Ys&UtY<D)La/>]/L=QB?j_hFF0V9HSUMcjmj62n=uqVE=[Jn3)^R5:^ + nd[H@sGRsK.5M)^bRko5+c5FY_B.F*,lkk5VM:XedFRYl#dX+c%0L+4:s'q8`IF%`l5j0d) + T^8n4ZJkf,-uBBe'M=6[C+R\dq`pouFeZ6H5XWV^:*9+oPL>n#eQT(-,\3IL&,Kp5BtZNCX + d5OlEd$2mrB[B)'tQ=rOA\\R:N,:mVc=)"iERs7/#@Wu\H2_2lKqr!c<@Ih''<KU#lh"AWj + Xs4:Ku$lM09"#\lWY:?Ce^;YGPjU]E/%?X<iV+%is]_ZW_0OJH)nj9$1:LY4_/'_)SWKJ(a + -RBWWNBI.j)qSX88!m:EH/&)$ha1X:;BC]PXOk2"eE%fu)!q`h"`#nQomE\:<.K,6BMTbK! + _a8OJu[pBccS$\"!4>J#QIdl2Ub77t*kXOe(+V4J)HgcscM(p@S,da0XL].+b\,QHIR'V>V + qI>IOrrh8m)]Bqj&5F\!43')UKs8Q8O"of-W)X>%j<4K@GaB)bW>1;Tb*u?#<.Ep:AW7tjS + &Xa$=0">T5On/+a>1&%A4;*TAZ5XN3@lB8gmk_eQ;O"e:1<7#Z'M7db0-iZFY;pY5P#q-bk + #^hk,%jfQk\[)q854*8_H0]]+AFF>'l>.qk*KhrL^Y5OtpWL63mLId@*+O;!fIP)<DYVqHH + WM.R!HHlUoXuOf204V+X#GW,#S:R5PCgfW!KcenqHke-=l/)j\,bqY@hk$C]mfMhB[DDe-B + &QWBW>Y8j<O$[ZV.lYA"2dApEu[ckQ9qf&U(fdjVe/)1H?8_uC0^n)1USg)+gj*DbVHRsI, + /=GcS]Fq^LmPkR!T+]MC,1=;KKcafZ/Qqm$H29Lfo!k[u\@UH<)VuSeNt9Eq+ENYt.LIe#$ + TUc_\QTNSC?ZlklQJ?Y&IY'g_XAYBnKG406IVSNo:[gH+tnNm0;L>6=sl@Gr?A!9,-q;;A# + ggFX=usr0Och!q)>nm2nL"9UT4fu]<r=l[Nksa0bQi.1.44'9=qc+]?;"d],@Ef^_L(i,nn + -Mi`%Z7<BODk]PGQn6<ga*b*IB&-1`Q@UWoYl/>be](GjGcMpaBoCU5d4]ifbHC2lC`2lB# + 'Vc2=eF5/.4h)"&<ZiYZi$'@CiJj(\QW)H0aA*+Z8k<=MjW6(^2iM!X:L:$PK515W5MNo*L + ;i(l][9N1#Ts1N4Z*f[^[A-qj@\F`uUITrCS',0I$i6lK_((t&[R%kj;eA8bXrNn78/#^-g + M410"05#A.r9pJn^]W%#HOiWX3'))5g-W8G!Np\Sf5M<.s[+YHFLNuXGQ2CWTpt^hm`c>5u + Q%$)UY0-KT;OU\83%bC&+liS%,0j\?h,[inY_$hb"!3TOX(o*$VOH$EdX0\P`pJA!]N&l6. + qL8s>^;F.:%Pn0+h&+hOA/X.[$D0<]C?YEC-A;'`__VaEfM,-(\f];h%[X1HM7YYm6\FLo' + c2S0X.6dlF<ZOP+L[A3?%]6loL,"&V'_n33E]>M<M@i2#Z)U*iLV$"QH/5!2<<3d4^]OG!U + FAB,>>X\^"]Y%+SbYk;g/#GB[bu;udHdTMX=0j)e1ITp0@W4JOfL<\;Vb9(qj4gJigqDKNZ + grN$']Qh>JNb==7T2aS>=Zt[k,=d4`fj&oe*8dBKuV$s7a\-Rj6fD.mmdD[7hV2Xr,TP'F2 + 'hZRm_Cuq7"CcpIBl2)nYnq>@9?/Ho<[[^XR]sjF8/.J3X6g5S;5U,-nY`CrfOm$k*>2F9` + hFLqnt+^mp:Qe;LC/i5jCW8E:7On`<=D`u^2%_&SWS/<c[TPcWj5a^c/YF;IN"ogt=s+,lZ + )XII&:r5$P134k/Aqi6`M+NbZIasm_?4<r!B,bWp=Y(N%NKW)GL&&Oj:_Q"Kr`%4O1/P>"D + 9(MYL*3d<hZ,7QeU1CU6askM52+qI<96)XXK*.kg\\jrK_l>T3]*Z(gZV0VkPRKe#$p`#T6 + HguIbWJ7gCdbOD]Y!7F]D5FEN60#.b,%5D`4X=4b#cO9,Ghcn`;IuJA5OZL@&=oB9ghrT<) + k8]<\jj+4ZqC\;1(g.gI8L)-Tp3ReD<XRGK'/:4k&95,N'FB@noF&:/ZbjA7eSYB./^P1no + q(UhVa7O3Yn12#C->lVa]uE5)g$cRW']1K]L(F[&iK:NKdUGbVs3H,#kqS-42R]R7K9`';t + W2Hsfb$YYH7!QZena>qX=9E`FA"eATsX-Eq!,RHChb/gpt8AturHk!QHeB%OuaUJfje.O_( + hT8/"8Q?Kb//G`\kfJc#adj<ZKGtFA*(eX#8`BbBoH-[.+<XW,/fTp5/>P9l"i=696=cu;, + cF%_WBua`6DEnrURf9FT+RTr_X+JSl_?f\UlmjH6Su/K1T82qWY4*r_gJuCH`f`02T)o76c + ?Y_UqT4W^I.QU6j!u^F1BFM\eM569N4GS@S9C:7neS,,kOY_e&"40bWJa/`73(#j\3=Nb"W + =@73tdT43kf:E^a6a`GF/'[+N?Vfu9Cu7B8>[HeD-Jg6cDWc2:qo$@GSg@EpE5W!$V;46!t + Bk.Xue7XXF>NFkAEC;-cbRRCtk*:>['m^4a0f#!e3;c^pp==N'F.J$`N`-8WFF&/?K:TImL + ]lq`D_b]!e^[2!/HiVd3!a!VK2SB5po`Z@)"tPUN2]RZ51;6j_^UIEk8DABj<J[_lHT0032 + r`%`b0@F(Jk9a1XYl3B985ERRlH[sdD_?tdu7/cQVm;V;?GfD,pG?+,[&)3g!qCZFXGf?-_ + XNgY2c"^e?$4Go@d+83YS72';R:`W@u/d\qIK&RfV6l"$4?%bG27F"Zfj&4$+`N><P+oeNP + \b5u[rs6oDL(/\0@m]i7_=<*E$rCE19h8A%>a>STn:,tpFS:HY1C<:&#^qorA^e@bb$<B\H + (9@D?rbLL?F<I6Vm]ii%=?/5rp>od36h-OAU?RPMS1c/ao,NQj]fiCi$<a4e-RnUi/ls8E6 + ?0b>$gJUN>iD12)cQcIT,?MoSDpM^.cYHb"CL&DQF/i18='K,u`;Nbjr`>:q=/>oKZ-1b9Z + 9U9r2Uhn,?%C:=J[Z=!2_9hg71.[I$b'p\[tKdoKb%:N&3%N>2r'U!`=pnS'Y#+t\29Q*"W + 1AW))u^V3/ZBl6JB93Q8mYAdJ]H\%@OaIRaO'_TZs"0Hm[P4R)4h2=qrJi,FlW_Sk@h7dab + 2Bj.\mCUWXs^diGF:/#U9XWCq*0dq,Z1F0.fnY-<>YY`q9)/$m.\4kit#gLI_IF[95`7GF" + A6s[DdlpoQ:^!q2=]IgnJS\V(=_6Pl;4H.Wdji'qG`\OVo]^ma\M_E%lb.U2G<HZPdL!Di8 + cW.*o-Z.6eb[=^4haSo!h-FFECZA]K@pOtIh4%!MHg+;-gePDT<f?>#okNQuX'Qb8<o)fsq + 6OC+p"(5IANf8=9m&?-q_fq(?Hdkuc0eZ5YiWNM.lL[09"/.qLY*pHAg,r:HjeS<q;u,H?a + LAHV>Y#"lsK)nf]E1riUgM')-J9hB-mfF23k\q*k:4ei1-Mo-4<t^k%CKeY)[kWEpVa!X'. + +hBF5bg9J9Re(?e@:@>$GjXr:u2/Rc:O>4*Epc6$`UZ9'U#]0d';1r1mV,hmY[ktK($G*Z* + +)e,nk1#=Hd"!QpIcJ1=L>Y[%Z>:I5I1hn?pl8?^I1fun61uk+\ZZ\E8q`APgi%s5jea#N^ + ']cVj6J[8bCE2SE[^4P3lYBbmjJ;5)[.%VCQg9r4:Gu!E:/ED-]O`A_jYV5D7!^=p<R8\$A + UWrAo4Gc7BP^-,A]9)+_ur!Ta(=r9[gi#WNV:/bb1L$2d*?4Lk%:],c=W%JAt9RsWm,ArCs + cR+d<9E07au&[)J:%[B.TUU^3!6?fk4n(;B(cc1R%4G%;2f73IE3bQJZ?3&\5mod^Bh+hW! + 7$K2VDr;\"L7^?0*O1['NMBTiMcQA\[rN(^U=9?RZUm6'h!OQ&Df]7`L4T(-9-Q!:<&`,!, + +7[RYm83A_%4APW[k+')5S^cMfn"u`G[\6rPAa1hu1Cg3\B)l[Y3`VBr`QQtS2EbfWd_4^M + 4oY_$hEf^3j2P<bE0`oX,Nro#B4QJ!A;t:\"_pg*CHha-f%1L7jRcLH]4DH5[C,/CL$+r/( + =u=ulhu!C%"2q3rp29W:^7t2*lQ[]`UW>Enbe,XI0X?n#\G(`jsn,^[j>-n%G6-SAp+![^& + 67urP:D=f\\5^m2"@Rdq8:T\8DDrXotB31"fV`m<t;fN1fR/+`4D@;D0t$<nuBbh=I20F0) + A.r@-q&.d.$eBG0t*2aCPh0Ns4mBO2OeFrAau)T-IVg?1t0of6IH#kXZLmadHY02-9V[e/] + .ksnP<,t)ksQXZjkDcOPp<\8%#<ptbreCH>6(8"S3>1F[fc!O`2T3^pQbA[=4E",q=+(80I + @SQ:nh'W@!:"/f@j)AjDE.;P%05412$/MaR<c1E5c:BAo[W('[cMc\eL.pGK<SfS(hF$pN] + lA$dE_h\Y.SgjV[_QHkluAW6=.^Ggp02Of`DAc@A``OS%`ilXK$]d8m&"9"K6CUe%:>n@m+ + mNhNJc+0MsU^a?h8hV"VtJ[([XAJo)4a![KS7\1/Zo\B3#=[:>/jK2W2T#o7l(!B0'\N&G* + WoH2XL9]qfNgJ3V+_#Pe]46%cuZ&4-4*I0:V-#E^DWmKbk*%UapFg^nB,)aO\46)5')-@uZ + !K,>`J#VVO\"jfPO&6T,Nc6._;+JoDmJdL@eC)ddX";4!'E'Y3o#U+d*+G';1H3bOl_#oca + g^l=G%+l\RL`g"0(4l]tJP05Z-Nj`A!\clndKgA8"/(1s+>O31^VKqI5YM_$"9[X+J7p&@# + R#_Znh<<C&-E%ZO^Ipsk'&j/J%qY;fH]qmqpWA':e/_AnH=4*+HL1\ed1o"4Q)8Pg_&QLGX + 3A>7s>ROm=IDBNjp=6#jLNg*=t_'&^:H!p)oAd,E<&hJiI.u%ic1r"E-RFYX[f]#hsqhTT, + <`@L1T__&CZiX:_C_)K5``Bcr.f#\Y?8HkM#Ka<@"()2KH%Jf.CZ#\9T_63q(oL,:rC(oSU + 6Jf&/EKRt$q63psAL&)'^+GK/kJes4dG(LN$+``/N&`O(#TS9ZW>+gSFMLlUW+_60?-m<"H + +GG+I=!333#Z`(%>dAqr80Ll_'aPsY0d)0*#Z@=L+p_&=KbW6m'IY+iJeR>k4Zad>l3L--K + \?]++G@u@JeJD5/qO_W+Y,u(KVA`DTS/I68CD/p+G(3h+WQ(GW$*$S+G<o(73I7U#XhYU+V + ')8a<:nB&;VJ7=WiA1#XG&9!XM$BBH[5)&#^WGJe)N;oj]+sap:*PK=V=M=m.!nJe!SZk(4 + (6+QI;]K7X@fTS%7j2V_sgfRaQG+OkuP2e!%L+G2]\1E_<"#Vo`M+NB!A80Gd$$lB$O0;*p + f#VMd%iWq-pBHX[6$Rd.%JdV:I#V.$LWX('sJslroA*>&0JdMc+Sq7:%63np2Jmo!3TRp3R + JdEhJOFdc%+H4NWL\Q[W+D<5;J"[,D(4W$UqAt-\-i,3g,,i(.Nh>Oorf<]9$3$'ZkpcUql + fh#BQDQ&+@"5%dqJ(MWkPB8/-Y_jpTW"dbLjuAdqN??-BDS+4.I)efWiINDY^`]dqRV0WkP + E*:/8H`\[&p8&fRL$dqVm"-BDUr?0'g[R^9B!^!.V4cq[.hWkPGqE0l1VHae.p^rlUl"\c0 + gZh<R&I1e7F6J$d8n;<'N.@pI\/m>:hr+76?4g`Pq2rn_tgo75dZa8:aD\Hi"rJ%:@3S:A* + l6_s!.cI)XXTC1\;miV!!rp_*!-h?jl%o_7JcY3>B"8qs*oB8EbYl?p!./b7*r.'S!!?^M: + J"U6LJd;,ZK.&GZ+Ts'EL\_`-k[8n6U&KfPqAt>=JIs(o9T"W%.3IcXJ"kp$N!K27LFCOh, + D:0"L\a.Ukl?4/+o[T/qF6;j+XJDPTKgkLs%5ZW.M)0Q5LR@I92TCU-02k0#PqpPl'QstJc + ;*nqJ78<\i$AgjIHt"s%_VQ4V.2[5L]-%:]pY^8&Yb-PX:<Nl7@F`iVoVXqN;rc;FRQr0W( + )oTHEHHJ#X[kW<`9s+6oRpWhiguQ%H@blHFaY@K*D7qRRd6nl;aPJ?Y=`a<0^fJ#o@CZNp? + P+6u7!XX0pRQGVE!lYM'QiVp=lqViU_P%Ce-d(5Q_s';DuGRsK.5M)S.?Gl_h9uZb>(\7\M + li_gB62n]UqZn;1."AJCg;B;1&n8cWMN@Hb5M4?_@tX`@&,&:RR1giVbc$#sOoEN/q^ruW^ + ji[?)U0/+3+kqW,*59C5_pQfBT3Ir[$I$,>'j$h_u,H(nhem#UKD;+EN_8)^e0CX/0Er`ZS + kk4g=pC]D<129PMuL;#Pg](c.0J9[een9q+r0p8:Qmjr`,IEKlJ^s`jkaa=U4b7+6B/FQDZ + :q>g&UXY'nW_Jc8u2q0X:Gq9qB+;X3(RYBAt]J!f3oA0%_XG7Nlo46LqZ%2l!"0-Gb5Z2SN + /q6,(I1$CbJW:cb"fJhjgi/dJapR^^0HuG;A^6d8ia8+7-k?[hrkN)R`ZhT#Gkjsl,dQc&_ + !.XJJ!l0$o!oR5Y+6W9GTD0W6+J]d*&8DXsdJed=q@Oh5:(Y8J8I;(Y.YUEHJ"e[sM+@CiL + +pI_6YLHLU!be?khLZ_OoCC#$p]W2)C._LP`eQ59-<CV-q*j.'k4gYMfESdO7^.NdgTZD&X + "q>Lt*Fh@W<LSb^ZNmjW%d3GE4KH50)1\5L_[m;)/VI88/Y[Uh#E^j8DZ4oeo%am$!T1>"h + Me3@>PDs&Gim=-*#a.-2/?PnL)t9#Z6Ded2:XA,Tl[3Fse=`4D:unS+'WW^#(Es'%8h@8(B + t18\U+>iYd)O7h*]VMs&oo4Djaft+o<qY_N%rc-44brR4Om%)V9LQD-Q5M2LuSo`b9caip; + kPHJGm$*"*H4*"e71,`Q3eoLgrlrL\3?RVTh6YffctLlsBXDl:&HXB1#Q5mC[%46TC/d`\+ + Xh.Org6V6B\D-'2^ZK-\.AF]:T=RbDXH;TPbO]+#Q78oPrbj'G7RZqnR?M@riB,"\Q><5Q` + MLS]/fum=fXu+XcAt$f(0;ZSUgaCQ.il4B5Lu!_4%RIHGDWn"^rH8L9VLCk</&KD9^29HR& + O3fip*'hYim'B/JhdU&SdX'r69h_UG(I_KfM@s0];LfYA=+D%E'-5;4d@gT,U<TTg)!-liK + -Z2\gH7EW0&M@j+c2M^6ns14P#ls6Q$%'JkK7W@^DhCH]nY=(^5=03XAGa:S_L%;s?7O[/9 + Wg2#f>T`_6s54a5(pG2u9kh="O8K`F0Q_ArGXXfoo`lRorYNI3DF-lf4JYrXN?@qV'&n:;, + p]?=<2ufjO8NLHnZFg8P*6n:Q$Y#Or]eIa%jK1gBp'6Hd?gX.-KP*"Pia70b0,KZbgHHVo' + TkRF&+MD2<qnfnGg`NX#<^Ead^pE$":0QJ*1)*SnG.tc\u_$Z5N^-oG3,,e/EsQQ<qf!GlQ + 1F6V1ua/#?D?5bfnA9p!U\dkq"IC/gV$C19K/)XaW%m>dUC?"-McT!bJ5b+H.8L\pc1I+S$ + ;_,T"m<.Dp/ELSGY\LP%.MSB-CVK7`sXJ\Ig-V1AD'\gZ1g^<1e9($k^c8*Ymh/1e$.fssR + #2U_lYpYpq_eS'6Wo$GpHYY0ZXo^U9#(4]'ZffuJBADHu]&C]tiX8k<X'gGF/j:mCJIXTI- + lf^p+QPotjGlpDW&hI;5.RnbjiC3Z$`8WYY(c2N$EeE(mWQ5kHG$2*]eI+_LlU]BhMJ;qM= + -g)DOuarU;)Ms^^.aA"O?=(dd)i)NU.RD0#g\)b)]<C_T;eq8HeG"*psO!`(;#gaWe]$'^n + UKmu1Y<ltDV7E>!0sPqNWfa^3%[@`ZqVnd0@-9UM15TU7:0'X'E_0079JT$,6MoS);sagC^ + LcC><oS53I!Y@=&@B$Q7mcO&b.7Pa^pq"N#7TM5cdO,@MPNqk7FU+IR`DkQpn0)B<A)Qbu5 + 9g$o9[%rGRV%LAik-iel<r?]ACl3!Jm::'nB`2[lDJFc@X`u9(I+StnWFlF7k6fl$\CiI"s + /NAFC:\GfUb3+Tg<^80k=2Rd9&$*Hg[2lZlKWP-o-/%uGAYk3_`$>KL3TVW",dY7CDS6JmW + ra@hf)2nLUaZ'<8^9fi/S6Mb<gWX9."NpI]aaO0Q+;=r3fLJis6(R:,rRfG(Jt/.'?$kmRm + ioNe>N@KFV0Q/mdZoU:R:.]-q(M"Bst`Gmd9bLWdu!%YdM,MWjQL^*oMcZI%jWXQg:l%?(. + Blif!oZAe4[l`fZjB]-_to^%D'm*<uhbV5,03A>@-OY5Z*bXdm*:m+TE<,VEuYo^nV5fUo6 + n:bcLcOgg!J<gV"Q;8Q)D^+al6HR?"b"79X7DAAS4V^Z#RLI"imn0&[:A$>RbpgNSZZ,UEd + e6IN(Q@^P9_C@uG+VQVp[O-fC'N&VPk`B:q%9(Cl6Oem.&,%`BMkf+VNCZ>5h#*h)m)^Wcb + CGQ_]3:-*3[O*n'5cGd\fRp*O"3<n)#05oc@k0E&$_YdI@/JoPmb'WlH>+n,FLa"!D56+KE + M)1(aO"'`h2LF]'3^7q3_s,9h(RG;(Nl&i0V!h#gC0GqqSddR+-BUBF44hbEto/c[m#<@+k + P-0Nl,0OZ;IA:AK2[8%k(Ed$H[hZo<o#L\3TZA/]`M[5+h#g8$VP*ZJQRgG7LKX.>`86IF( + V^g&o.gTo@9>H=G]*je:$dunJZGsT!R4Q_./J-3bOOCm=U?[p"lK$+u1?f9hm#BH`%eB9'. + .%O]..$BP0M^>!Ym2u1$B`dN&JGrm;]:hj*l[A,1/T8OOXDp+:GWE*Q.%Z*;`bYV5*ke,a_ + ?/[O[h7U9/R$:2,(<Ddp!QN?PU\b((A@Y%p([X>[VPk2fWt!WSof+I5is3T+Qb&msOmdP5' + c5),m"BMBP"mT/oiE3f5XQbqpS>XW%eU)b-SAO1?4U]PB19V6*_IZ-:c#AGm+irDVG%&)>c + GN?1mW*g>sCDsl8p[3'>]+1(t"ciDcDh&qdc+OgtW0G<,m"X1)h+nQu6O<cTC.3d7r6RRL2 + E&U//k6'aW">WOOE_LgX;$?Gi"Xh7mCHCCV&LL6g4)egZctb!6q'T![-]iM%OF"A'2WN5Aj + <Os9ZB5FbOQA0^jb,9:&>(FOU?7Q9k2]So0X3-M[--qikX9nO:r=iK`p$=D8heXEE7HP=]. + NO./hl4BYiNUf\Ei_VlpUFU;Ypufrf?XQ&/,9[8IlAk6Vrg/&MEQP1E@(6+]5ED&l/^4ZS) + s?1K)O8'5njn1I2]G78rY,'TY"RZVqSP=&fbu'rBe&o48[nBUeU1(:.url-C.sjS!M/3"L% + =nUif`LH*EY3>%<4;3IV-QI1t\q2q?GnYJ:K18C,3U[PNmm7-uZ_-<,B>Kp5S'@0oQd9MQL + er=Sgc#fnLfVn1dfMV(hWhj$ZWnC+9+:Y!F(&4kIWnS.!gM5PPMW3D#a!+7&@8ngeQ5_&Ch + ]oQU,Rs'KZq"Tt9&F_dA!Bl='NVQ%>=Irn"u]1FQ;L,s,=`MR7n<eRMer^kJE--SB(V!o1l + gYdP3#T4BCqa.1n`u-UuntdB_8KB1pZ;K[ce@?C%T5V1rSViaQ[L-C?tI#G.-\?hbEg\:,^ + &V[`M:qb`8"9_JoBhNn4h"!H'auDJnVKmd2`pnPN?[;3(Sf%g+Sr!E++F;Qg`I0,ZRt&Q># + 2;pQm,:G4R!+]Pos<:<$dDa_f.0[,YjF,sH>eS0+_D00]1FL?=7l0WUEr>:l)ped/U[q/\9 + B_bMqq6Qsp24o)4X`q%UUc3idb#:DP=Su+?e^)KFF4FO%f[eC$f.l5iF6?i8lI[cTfTGc3F + 89.Kr7R//g%#;RF:2H_%bgC^gJShqF<+br+P]d9goC$UCAU@7j[5BuYcp1FM]$!I*s@ldhp + >4h<^0$=6K$Eb7Q*kf2GUY6D.RT6#?5nZ'ROFe3G+M0B#l?4$\m`F;(7N+\^l;B/n!g^Woh + L8Ba_Z<DLF%\K"Y3X]rm=Y1=#-MX\BS99hqNZQFfl4a%d$P%[?2D&FjT/o5->Xm1fG7eGbQ + ;!lPT.mZS@QlrS*V>jm^Q12d<92Zh$\%e3IWnZ7dk/<o^$.l=F`b-rS<%m'=r>kE4n<OXba + mo*7G4]Z:?<ik<tF`R3GIruKSF]Etdon@P]LnOF"d;P-BF/&KT/U(!i>#Vb2PIAsS]3@)*C + AB_,8mRXg_PYqQ*Hf\S),>)dVZ(_qHMLle(UX4-msE`*Eu2^o[JtWbIWZIS!S.d0R?)dlP9 + Us3,Duc_=7)G8o9shXhiLOhlSF&H>dN&hA;a0P12aLFa[[joJeEUC(aiprJY!L<B6i`oW(3 + HKTkJ`GKW&OUd'IG4"bin1TWlCMH4u%E)2@jll>YJBbQjl*lG4AlCoee9ZM_SLO\a1_UiR& + aRSSf4/#?)`Djjsi8P>p806!@qN(If_&OCE*H&YCRVt!]+RYQo,NK0>`ohfDqXPKl)Gg:W1 + FNjK@;i8p>$Wq6XX0\@?]#0[#Vcjm^XS7-HbsM;E8Wu)iPB4gqO3#lJl'+,qf!h87pS.X*p + KcHT55AJK=^\8!"dYARQIH/+$H97fGsOH=6(*8+)]b<1-(*+0R1_0YPVlna4.4S_RM&&X;G + +5TX$mspRlCR?c4:*H't!`JS5rVK:iPF+>FcTU8+&GE/jZpj0:jdjSog6hYa`+&KnNF%KTr + NjbItDF<D.R>9A!L_Ru`;'abGu-L=4_hG]QTkUPHE2:2[`TcGR6i2i-&9m4eP,S%FNG8FBY + U:tebYHc^2NY>NrY;E2,*He42K08qbGN,4]l36tP@do:SCb5:Xeoi$l,@?,D@bh2;`>Q^$j + T2uP=(U%hoqQ#^%=SNJepj=$C3kY8L_-)*&qA^lG;m<%M.m'7YGZrq@]&?lk6^.82`1$(XP + MMJPj-9t2YFJg''D#O7!L>[Qflt%n2no>s%q"+9?kaDb>8`eedbHe56?h.,r/G-bQcV2LZM + C,%LS)^)1!3]`@s^KfHUUB88]rr!bAq=)(/qVG_.B.U-bEYSgL8=uK?Z02[[)&g<0Ms!R=i + \V[s[FRPc8?NIt[XskF)KGRKj5tNG;`&C6Zu:C[odDf=C[#U4!ojG/r#L1PhSL]/9?3pm%X + \27rXU:q38t(oG9abLC_4;AT;G34Yn^&Z1gJVU7K>(DkX])cTl\^:;jp%m?jk<N(bRf9\AH + g\l3+!B3+E<r<9V[<:-nKu"R,_-NIOh46QR*Ea6t=]lbJ\KK?>b%THW>.H6&26k&=^TI+JX + uo!4gdN5%lWi8n>nc1&>4n.>W7Vog58UR(3s/gEBjVPX?X!u+2oOG%a['"Q!IGbngkB/N.= + KA7aRCde[Nin[-U]o_Z.u*BgHV/%!Qs.eA6cNmftkkD;b$]&SCeq-RpTcTd=Spdc$O6g(3r + JpICD1#T+5A'<2Z@MXgf.3cZYZu&,"!Erj[PGTBg_Gg'G*</KsUPS.T<8=MYabLa'P=Y(A0 + 3MT@!E7g)gX'ei'E&Pjs0.A2Q#,*E5,JgdMc719bo"AciIe-I7A#b6Jni/+BVAsWWo5n`ZT + Zk4ffJgDOr3$Ls#OflM5&4CmX*<\jJ&XJ4s/dR>d,%-4bN"HR'6U;9f6mN?LI"EK6L_q<;# + _0_-&(!]1&GZGl_%0ZS+m'&TJfWd)Cs3IV"?JgYE'oj$j.q8H+GTY7\d30(_$uJn>S,Eg2! + prjL`r>qAqCn.L/&-g`rn+_$nt$R.L9C5(SHK7+`[imlG3j)6Hg"G"=s5>KkMW1#ZQBii.W + gX&>K@V5md$IGKL1cJeK8[\03Bs"=0Xl63ng/JhdTU^rRXSJd?$4KRsI`H3bW9JbfWo+G&e + `*^`I@G(Kri+EE&=&K1ooTRjBS)PDYU#T:V&+Cp'.-m2oL"nB/0(Ee9D#SnP6>_%D080Cf^ + "UH5GJcsM*#SNe]+p\dRJJ>&7"=PBXJck3Z4G![@q?RQRJD(8<+Fq\_Jcc9$/qO/G+=_sEP + F;a`TR`12#bZ^$pjrP1+<5t6W#uq/!H^@."X&=f#Qu9#4Wo=Va<1hA!/Ma&9V?nK#QVZW.K + <7EFX9Qi+6W2#I\;JU#^t7E+nU@.-mA)3*qd)MHQ\*D#^RVKRL"1@80QuE*XEqGJfWEG#^2 + kr@L.+LLJeD"g;kGaJfNttb^phCq?V*aLDgG<+GU:0E*Z!X^4I<F+hE7EQ^S1sTSCl#CnQO + "#]&>=+fp86W$/*k)L+:KBcr.f#\Y?8INX4[a<@"()2KH%Jf.\E#\9T_63q(oL,MSS(oSU6 + Jf&/EKRt%$H3dn$L&)'^+GK6&Jes4dG(LN$+pNXlkTU^jTniIaJ"dib,`3eedJf)ski)N%+ + 6`h*OWWg7\<A3F;I"^JVtseNVFUJrJ#:9_EOMc:id@FAl3[Ha+6kT[U`\l!rhaVVEhKB]a8 + 2fcWsAL.J#eA$]uI,]'$.C28,CY`XbZc.J$'%Qjj(#eZLGO\a85X^YQt%.J$=_*%G%cm;]* + P18,FK[ZA8<.J$TCW2;YZuo0C\[a88JY[0QS.J$k(/?08R)PA&_nmCE5P+78%dh]M7ero&4 + L,E1\DL\mBe\]=T?J%A/IW.2D9Ha)m!Nrf7KTC3BknfR<Trq$`meGp+gmQLm&J"JIpI>@Xn + +6Vj;T?&('O9,JKL`h2?EW1QFq@"J03.IV-5(o#l(./@HJ"a.HLPP^K+6\N1U.AUIO[:NdL + qnM7nc"K&qD9;XfRKZPIZBQM5"J'>+HQ/N5LM7c8H\o;&+l8(&opf@8Q^J=;>ujdqH>!*E. + =_Crg4o;@SDWH2%T?-5LX$?9uHoh&+npIe"h"Zal,B1iVoH>qLB[Q#_/d=rh5,DLlc@#7O[ + @D5LbMh;M4p@&+qV@eC9X[MKr#J=YQf)3iO4dXFI7tri>,fYuYVi>`\Ps5LnEd=/5_$O7e) + hef:ttWuY`PdJgHWqTg8L7";<nrj>8mf9g>bD6;@*5M#o8>\!_QO7gd_f1>pIF&@+`p#<YT + qXblqgjcMirk?GLr?(A)Ej-;`_,s8.@0?I^O7jJVfQdF*1XV&a<\DBokl5.FrK!$569j-?s + (&JKPHpKTb?9Z$Acr""O7m<Qfsq&p1f9gMepbtL,=<V"/;B9&RQnl\s!"69MmXn+eQTRfCM + e3sP&^In8,4ZOD2GSWL=FrsF)E@8r18u?Ibbs4GAf)#^:3h8;oe]2+6?56\47+iS7@S!`Ir + `,1&b<Gq.F`N;9V%u39Qh%FW]`#J!Z;s?JR--FUkD%3p0aW8,8&bjtqRTpM0(9_n(&Pq;3( + ;rb':ITc`EVik.dCnt'@:H,ddPRkanZ?DGtqmq(n"f=q")./u9er8bRnaSHuWm![3rp`5Lr + G/sF7Ia?RB^UO(>i!]WLU\skIoA]l01^\eq3XA"Rr]ea8s$1)m!l9+5#,(#uKFi\@O7Xndd + ('*C0V/qEW*'M%KJ5gSr=k=b<^4uJ2ho]E*^f.B&/!Rp8#-#)`+Y&A@U)WanO=q&nc"bCqG + W:A=tN1a]bht.@SC;116;(R)C%@[NNp2Wa#N4Pa81''l0^[SM"r-g"G2_u&OhcR)F)`!MNK + YP8')Vr,h2&X;t+'hadFk1eP`JL&r_=@+o\SKqR2Y%SlNqd?S#cYZWP-DA.S?u/nMu6QdZ" + E9M(&KL\fdJl[!,9R@?"pN746%<HeuHi'5hXgRD,fE)%k(3N"Y7+7'PgY\DcOkBufkF4PZB + 62niYq\UFAC48shs$16<"e_riJ$PdIb6RnsTp.0bd2FB$BWF6;m.c(;!X2'76Ukc!.AerE7 + nIDV;egEQO-1,Jf8';YVGtsK2G.j\af.:;j8PY!qL[O-X[FT!,c8'Ps&,k.:2nJsW0O[&j2 + _+!WtfBP3G0pFbB\/Mj8Q>bC=-4U1T%:O%)][Hs'2V$G-;D/gK1^6B&37^YSIS_=D*T_X@] + HMmlZ*PlQKf1X4=MQo\Z/t^d%2AS[7dQo3*B5FO%Mg+82GZ>0$(0m<ReUkH4grqeL'9bQrb + 8nGJp2,!YK)_mm/s$pff9K2@LM+87t_h)hYE+[t$O.$b^2qn%(@%HE3Tiq"BoEtCk?lb0dA + ,K+riOjZirMF7C@?`Wu<,/sRTBlu,L1&lfD4pd3'VZnL?igjSPs2%l:$V./gL/](F;)/i8i + VZ'!jBRV]b$@``62ui4BLTo8_,DhBB.*5NU;n,:*_Mi!O4Eg:=H_$\jBRb/A^n<5Mb.Y8M2 + FOgQ;l#U/nO.0bdnU$efX^;0]kC+2`!5c?]5&-O8R\#Z\7_:\]oma.I9:j`d5t!qL6cH!m$ + ce"s<[\6ti\?6YL@uB$BOu&,drR[)53R)K(TmRR*kjI3r\iP`G$P[Amqf@&@e!=;)]cg@_: + )DD_I*l`uGP>NW]"/deJc9oN+r7`qa67]`,KY.tEZ*8>3Y):5EEdApLU2X/c#qRE)R\t,;& + ^mfEdgN>%Bi2dgTX?6tORH:oX`h&(/Sst0<gOC:)J1T+</Fi9j39ReCp:+;TT:4<&X,.?+M + BDGJ/YW:u_?2d]qmcNbXo\p4+ptJ@,WSI,\Q\/>)X/CplU$Mu+`!Q"iYep$)QtD<3Vjf.$M + >S]pED,`&hBe&F/CV%.PKL+3ghP1W\:rq![B2u,<N(BCTo%9YqV%s0WI5s8O0mk5eCeB,Wc + S`9=bh<]0!nF,dS:KnPZWT:9gQ54<d\.g/GXU?9DCn4DQ,eZQpj7aqfWQ-4A$QMIWrlAA%_ + Y4UPmd)_WPU0dbB"(W4fO)qQlLFL-:9]r?`L]A0a(Ho'K)1]1]G$@tA[6E!7>W)H1*CZ[%/ + k;8Wd1qJYpj6IUEO/WNS.3YW=6uOq;X>N@F58ooY$C]!s=IVrd[B'!Mn[U+`GW"Hn2=k3?W + hl4(VoQtjS6KO=lDpG<Xdl/"Med%8X90t%d47f:2W2BZo5Hs@\XenqSYL7bX)tgU$nM_D/1 + KR;OOUb7HU/"ZSs%4;.t4)=J%,n%/E--$"ID)6osdqT6(6;qU=RGuM4`gc\@`k7Z3%/XTK) + KH\HF*/&dg6H$TUKV\Pne\C?Qfbl6.sOOSbKW]IPW*)D;^B3Umuu"//'Xp*(^U9,j\$A#6b + Q1b[!$YO&\YU+X$`X@%mJ,;TKrX08:>Ye(l<0Ub)-]Y?O+5J(F76lQ[_6P<'S\tjtj`*4!& + ]LO6r^dO*s7%.".b#:%]bWJd)4CcE"lQ[^f,u"ciV>JHKbYp9cA2:gJ4T]:['@K<r0IFsu9 + q0\2$eE"=>Vg,;1Q:0RZ?\UO?o,rQZg)tQ!K]JYi^QR.W(TRX>NM9Jk.Z4W1ocMAb\J+Ila + 65E2%4B1+H=,5E5)g$Rf%3@/9AQdZbK,'25=BrHX-stprAm"a/Qkp]DKXlr1$FYWhIL(qu= + _G!6?&%a==G8"GB$.Kg8Ul*DD5=J_3MP#frMBaJmt9]"]9hNBl!R5idtI9TUf6kXca+aXe' + r`"T5iJ2eO7\1m']I$ha/R@f_4_5s-B\c"h:ff6<sanq)/X<>Y*+eY'p68YK)7&;$]VClTq + 8pi#/N$ui;(!<QDTp2WF`2uAUXs)T(01mB\$o#jE0qqW&YH+N]I'pPJ/&Q24_gJth,e:g_] + #1O+6b<T8'=,gIZkN@%bR?b\)FI1L6HhPZUi]#08kR<D7a--T7"S2\!`;@]b=&_]7)Dtmdi + ghha@ucYQ?5tu,Z7>l@nf?j9iP+>FB10WdChBi4\9uhUt\>Fga>MG7F^0_icmo`4"%]"7MO + iO,i^9Uj>8'5c<Or+ChCt=Le`k".(nh7V!C4GlpenZ7a\,'j6fD.mi&P%.;MnjA90VQQbPq + 25?)eFKQfY&GX$bl5E_eLqdE"4@Z%er8)sSElXmp7BFA's5U:tY1Mf<LD2\=H^heeQHZ?ib + Et"Rs5dZJH_fnB#G`=hH_#0;A$[fc5gqbh35t$t[%$j1iQU,W`_1L+F>DGeVLlVra8^nbPi + W70n+%cYY+C$'Ar?40H,Iof;b$678D'c`?-omD"b+pLZ[442d/@k!^b3Ub'r@YZ40bPH]9/ + JFt67L)W2+qI<,2>+2'<A^o\iT(5_mI'D`4[Cs^-gtr6h3FZ!tID.\4e]hPak-8<(0bJ]t< + XOe7;-MI*0)Y99n"#bhPq:l<;F0:X';EV<h'bHd"V-e@b<k79nE_CtGPsfYrg&`L:_aX#.M + 2fZi1)(fXhdr*S"'hF8IAR.TFY4QP'4j2PTj)3j>SK]uNIkshdg..(_DdZDc9CX2IM:BHhH + '_4+so2c@mf,XIkXS176pRAPbW\aKIX'rc^Gu)t::ZH$$o4LT/I8Cr5:b-<H4)DuDJP]p0: + igTkK5sMZKi"n+:qLm9bBM%pM,<l&;$20]'7DF.N@_^Vf^j\\D&1eF(YL<n=Zm[+8c2^pfY + QC1\C;VJopSb^RlM0,\LaQ0h'?.j,roch3J=A8*@TVn.CmAI\_O=@>qK5s/ijt+3\pKaRef + B7X1EsAdnQuD?*?<.YZ$7\,?;$'F?J;FZU=+C>AZQ.Had4=5hh_s>H8H"]=gm\79eipg[cB + &X2D48_6OJE>W^$G"\r<6:L%tbgkAV\P%Iso/]DkV4ZlkID9g[[cb4bReYUZkFjdUsgcaHO + ^%4KpCI,ZRj%a+FZut*0Ms!9_lFs!P[,c&1rG&_Rm`tcJ:CV2!<GtYjE#UBK.EhD91L*.lp + fC_r=)22FI/DNP_q1?V[S(4'")"Y,IB*`j2S=^Od^E6r\$l0R8<\(peV1'iFZ4,r[t;P#R` + 2b:Hq>Q2fZb(3h%VgX'j1\U+$CDl,T0ICLV^B`;8&8mbDXd(R*k1%dJD`\"-L_fP:fS$/n: + 0WFJq3Wle3QM3O>6ubFU@=VCt<0\g4OA4fM?pW`(.>dl"5U67gSa!5jLL3nuc#*BDk+3kHC + ogJpA2h*&!t5u[Zj`&5,*-+d,4]Yn<o<)lB2NCLQ$^Wa=.>STld,tkmn9\`?:V;4nPFAgWs + c:(ILeMYM"6det7buJ4jeT3Q9]idL_?/6f2h)/HNe6ouVin\0R?$0R>/7h"5k?Xoph6gh.K + PA/i9id0I^<TBslBL-NE@H%jf(tkI*-J7;;bqG-hOJmA7I+$,W+D3Bf="mj!R'TK!n[-Pha + ,`R":&$e@UF]@jua%(G%KRIj5tFp=LMpO#&<'2Njoc<\15kfm$TF`E*5NZ@"b)QSdEg(h</ + =C=h],gl3ujG-<^=pi@5Q)e1009Ipm(3kR9+JIY-O]KOMQp3cm3iMZ7@C\1et\gC"2E/A/3 + A,ZDShB`,\#mZC_;'&o_+gVtdKhNqI4)S@\j@g8C^'uN.]:HXgel0Qj(L7he0/7X@b1@@0Q + >;GJSgTsqYh%MeYr8:jM60cUBA2Ih&L.,kbLLb47h8W"O:#9YkC+0h`[2ug<h;Za"<PKb[C + TZ^[-$$E"p9i2Zj]1SAUL:jC@VcM@AXd7BXT.Cp!Gk2Rh^nrf4U#1b[qpKdd"V5@SbT8Jb2 + 9<0hn9M,b/J2Qrm;J\aYj.@9$H3>(%!UVB(["NC`59fe`S7bflN*<l](:l$g2;ekC"OeN$R + f0T4&H]@3m;[1@4E-'iM1M;T9M+52tOd04CZ^@C3AE[N*a[kMbibdqc&&PHJf+MrHV#]-KP + O54.?AOAkb[`$;g2%[1A&]OJQBim./ThXoh#^nk'cbi9l,,u&<L1hlVZ4Od<Bmel>s38D-o + `IlZYr]BC^=M9Am]q5AkSj5Ha5um&67P=sOI]ld!YZ<rm1kuD'2.l/BlgVV\cJK)lc/J0c\ + CU*\?;=@;0"]GB']hdJEFur:G8OZ+=Ri!!hX(8Kr;b^^Y\[)V=8`9S%`[C,@(->Kd#MSNVT + N"Z-!5R)fT+25en;J#B[Il8T!p3%k:>p7O6n3Zm55_t7k[`30M0:8=`2i4/XUTAT^A!ei70 + "/jWe1(jmCAS=p69W(>e"6IC[(@d^FYBhVq^_5[&jqBKGt]/Mca3*U%uADN1jlG)G9,8FF/ + QFKQp'pIoJl\9-kr@\6Hb*gG/DQ0Dm4<-M9jN\AW&<ST6.mtJ\uPgOEG:[bbr<>Sk6?N"-; + rcR&@p$CCO"^#^[@9&q/:%&0i5-%]?XB"tr1`$AiIG!+.g$k$,jE'MFKkFqZNb"u#jL5S![ + gkn,\5*mNE=DF.*->u(Ebi]0=$IEiNkS;\^N"YuEK#<^'mfVNHdDqDlojlMdq\"+"D.3/lu + dpN*J;_(K^>9*Aj^_'<=NPN%d_`'nr8RT->G*@.oB'hi&5InhUC.:0BX)Uo+op)f/$g;Fn8 + A]q.6'o/Y-am&*K^RB=0)L`$oQrUN=\U;SAoE*Z'V4^]=BN^u2EdF:;@U(-oiXkSU<(.=m@ + !@X&`Y1BS9*`/l\n$q2@kLgXZt(k)Z1JVRg@0]WX$!t@N51M@V7"rDiETOCq>;M,&X^qro% + N!pk%JV2lgkSQ2^%"X#qYV9#b'*AA&_"Hn.)?p@rJKS>^4:DAq!5Q[O=8g/#F1I)Kn)t_a# + 5j%dn$"b#%J'[L5i29L)qkMhJ\<1E3#g$c"*hW<&3"tGh3ro,?uF%)Xp40B\ob/86k.HEF$ + SNlkSoZhj+4_5DAX=FEs$?rgX%kF%Cs?,[bu#$)eK<,J[P<X2REpo"):*TI:sQl#18"/+Dh + &T%@mT5^tFf->Rct`J[/["L`7B>`qdF&YVma9LBCsMfIue"?m'%W#%&KaljeT5L`(AeQUi! + 7JX6q2#$[a3Z3FL*AY_58Q=q.HJX.]%@1j\oH3RFnASMEM+D"eaJX&bD;Lt)=),D4pAMOHf + TOf;O;4qJ7L4PR;)*ib:kSZN1+CsaA:*=*$##-4NbcZM\#T57GP/nLk0Hao##"bIuOp4J%- + lF.YOm!Z&JWZlK)*/mN=p@D<A4d%o:T,-@JWRqj$A":p)$`PPA.f)3TO\*.5LLqsr.0p-)# + /ZCBGgD;+CiOu4<S.F#!5e_)!Z[4L`#9*N^t#I=<M+*"ui2bEX"GR-lCTfNG'0YJW2Q#"uI + H43X.A_@k%[<=f<1WJW*,:_L[X]Z3DtT@e'^UTOQmb/_h`k["4,`(pJRKpJM2G+C_>T.Ni2 + h"t<lW(nuS=#T0.aM:_;&-D4gW"sopO<Xs\;-lA%sM!,\7[phl&Lk1@q(kdHr378!R+CY*N + +!>"W"s.<R(j:Ic8/QAuLDb+:)k^WF"ra.CU';Lu-l?KGL+!rCJfr,Q&q?TfqAOjWqGJMoU + 8YX]J"oO13e*pfqEf\-HI>ELV(#SSJ#13^@Xk7fqJ(MWqbhI*VlBNIJ#Gm6MLVSfqN??-Hd + \@\W[aI?J#^QcZ@AofqRV0Wr)1D:XK+qlZleU:rjJHbHKiYV9="&:Y=JHaJ$7ZA!5U@J62n + colr!c%+7+"Ha<0c8B$)mQ_`3.PBDXf@Zj6IrJ$b".:#\#>;cqZom<S]a+75d$gE5h!rnVn + &j*]cEL\lgU\B"K.J%8)HR")[(1SEtnNkt_\TC1,+mN:lerpYB?'?Kc.%q5J1TBE_6T)nq= + L\^RmVqCnhU\K?Eq>VQ##_/L5rdfk$#_K!("sDtLKa7Gf+6ZgVTn32tL\`!DW-Jpu,YUGM. + /u^<r=ok8=?k2Ps$dRQ)'_OcNedHk+6`3DUZ)36#Ppb/kn55:A<;t;E;rM)r?r3KUd*;#s% + :3-/4G6!QP/ju+6eH.VEt3LL\b[+l)HP:`8$jrP'.r3e:4BIrgnoAHlqVL4/`;cTbK8>+6k + ,$W58J.L\d)Sl:OFC74b;Md[hQGFFU:krhtVKU`\lj9<*\FWtfZ\+6pdoX$Q`eL\eM&lKV< + K`I+m*+TGPRrF6B2O?_;ms&k!QB1mrO[$IH=+7!0]XeGa'#Q!:!l[XJf.?_4X1?`"rrH41o + gcsD@s'A(kH4T]92OD;W?]4u7YOVV-L\h2rlkk5VM:08.@h)rV9HoQV.R2Rqs'm;PNR*>?a + 4UhFAE3WP&,&mcfi\8cU]$P+L18B[X#F[$rLFJmH9^*Xs(EYtK="[>dTTjJ,")9c&+V89aM + Unj/QJjZQF>Ad0`NF$r07f`=P0)NASgb1[C3A_5KVj`-c>kT2^[P?>J#0!D="/2nt84iOT- + ej$,F&P%cU_tM_%6nZ4HNMjBR>%EmA+<3L;^39A+f:KD`NGo*.G'/#dY$Z.D&BAF1D2Poo- + nJ!lXFmTo.nGV9Nc]Mh]mbuk!'Y:\iukFhI=UXjb2oREA#rbu3(gO&CCn\/)Mq9Ffr3b/*Q + ^=V$8+-Z>Gce.cKo?';D3<),pp&72^"T]`&#!V)Fr/^IC5L8[*JWN2)5tER2OBDNKU\tFYo + HOTKj<0+POqU/m5!RF#s$Uh3'uK`U%,n9HL?Qj2UJ_#MiTr[_&IK^MBTWo?3<)Ppr?]DGRh + T>%<Jp<Y/>]WNQUgmZMt)*J7S(cB,=65hl+DMD&cS<\Hu=sAdQ9sTn=W;JK-0@mJ#IVl+/B + U(OO>=@.8g)@a822Gl>B,5kp7W$[$[$aUjoDLri8QcYESO';+aDS.O@Ep+6rcRX;P:oAW3s + ]ZJJj0Q(gLoR/^?qra/>JM(tkqb*bneJ$*ej\n6WARWDMFc'c%!f?!u!A,Ul%)8S<\2!CK/ + WJ-E,)F)l!s'dTdM9e3J4m1&bA&J8,&,&CUfd-WjoF?K"H4rVJOT/pFrL4>kEC;4'';Dj>T + oaj?6O8<<+7t#DdQ1"Mg79W;"HfhtqHHVWNAGBfNgg\KE8(Wr4/]IbTXQiB;$oT_DhJ%be@ + M,Jg`(mG7<#Ij_>dO#c!,3`9!9#iiE/aL@rp1dZar3H>3ft(F]H5sR.DZl8,[V7($XPd])$ + )7)5h_srk[5k%eC`QMDh?eh7[h.A1X"1H`qV9S<K7[ha%4J[XQT;kM9h^l/@*Orm]Z6>AN- + frjG>8qS7+ND=,T[\$.mu>QbCc@(?6H[iXVc\31)"EZ%6KS:B?VX**B;/\=QU(8D^c5OSd8 + ]TDt3??CXX;CkB]pU9hR(nVK1U/O[`Ah=Pjom\Xe@#Pp+1T%\15O^Q:_,rHP7gpH1e,4J5p + eqQ/N&;_'"s$S+:.10@7>W`W.$>31'rj,e-:e%h``U\/8dReD<P#f-,QAir%#$4nIRRBi/S + E8#s,uqj:RDdt.4s)a\E6onb8G(J9c9^mf8B0+o5K3A>gJjO']RAr'njl;s."/%FjBU!4>B + ;V`Yde5+8Pq%kWK;=BF]i0N5C8Zr>VO(Ng$1o7nYZJ1IcK@8COqkVc"k88\X>aCDrq52<nT + %.Au:Y/YcItVVP%;KgPaln[rZ&OPd'JJ>s^KA%7M^<Le28EXeZnNMP9fW\3SXF:-7H7ng%? + :tt"Gga?RdC?g!-nol\81[Wh>:#)sCOKccihP4]>kGI,e*d]CaHYrgCmK@ot#d]<9Zj57BA + %(@!*jl7D[>4Ia&9?do#3.4MJLbhnCOHI`7"T;I\;2oN#WB5TQK>&7jm/^r/$+GBCdfsqL5 + pAfk]FINGj$E!k\,k;X4W8Ei/+V(8hQWkcChp#\A+uTlK$+R0"/Qof"icg_6E@oB^4rc-BD + sqO/t8O%c!/Ki5@&[`2OZo0bWq(.dq1[PAFipXD\_I#aDM$a/N+\.9c8<Nq)@Mngp#lN1?6 + \0O&HPR.!#Wl'fe0T(HUNoVo(em)Y[?d$tVO?uKHH9]2JCkah0_pC-]gO*o9qps;V1d*[mK + ape(T(nlp3U!5#)&#,fEVJ)$jUQ%=a#+hWFU=>o"eEp03.U6cSA8Ei*-;A%%O4:(^hP^Y<f + 4']jXa^7aP],iWE%R#!9p"%(po=W@X-*D8-SF+l"thL/F6>l3E"]9C:9Dq_g]q0@:!!H/mW + T$4,0e\`%GKY-2R%t"YnB7Wa.hH#o`U0sHV5k8%K_#Q#2l^hZcCY(;I\U?k2F[%[7Bksa8" + Z3hW#)'#Kq(;96c#J69oEXjKOZSa>CFu39>fGjj%9A$`JbPYptcOL/)dPE3d,)G.b,lkX^H + lNf=H?gkgsN/C']ANh5Mif"Yn0^[g7I#g2I0k.p35_._Wj7.T])bn#a_O,PiTcIu-uhX3** + `+^(,koB-q6LR\F&^4^JN,"R&#$.o7nF8-Okuc#J2Y"n&ndd#\%%*B_TeqfcR'/F>Yu8aoS + BJ6BoSK[AcVYHOba[tL2U>^"mpd/-jION]SdFKPC$bT!L<p8'd#%bsVH!?ZP8T?"TrfT6n" + ==>UhE],UJ3_sc`j2W[+&hd)pc8=#.kjN`uL/`*6-5D$?C!gf):`brR'J>dGh+eq]:ga*ma + 9s#7VbIWc><?s3^iH#:fdP#p?GZg@,U,-VGV%(Ep"$Fg)piD8tAZ.bu=2!qJ,L1,aCJ3s2c + Q"6Z9Z.iR:sq'>A,33Z=-E*"?`dj=Kj-88nX0P7]TnL!aD-STThBEKW_C4R"K#SMgs;M]o[ + N4<OU.56r7E0i#P6Rh>qKbC3h;Q1"Z@1(2hk>$@SNdsW=]ds`2/4c$WONB'#b_f6D^@%ZZE + noru`sraD%S5,&Yj3q2mk6*P05Mnp;Z.-T!>#nIOE1]G#o,/a%l#dP0ki!iXB^rf+VGG7&l + U3CF"G@g<AQ?c1N>==;*)f0,4^peo&[1lZVM;,;ON_M'm!RoWMpX!`:WLu2Qp:l0lK!*Eh/ + D>(R'7`dt"$PK$UFj33eB$nW,[[#rui<TlZbBe"IZnUnX'OUCjM>e$,UERlbPr)fN8+VQCg + &=$02Zr/G#0&^L=edlhPcrN1/iOl63njZ\ZWrlp<N&b>s!pHPdKs5MQ/1'Kq-$?NK`!>H7& + O;K]+*?l%<,"HJoO=;C#/9fGpYRTCE1-FEG@g!E5"B%d;&krMW;$@3@"\U]1NXmHH'K\![- + BMq2N[4o?.Qt(_#EjL*XucnA5X7)_#dTL^c;=mC<^O*_$.>M=mUll;:C=D2$M(KX1:IX3]* + kQi$gZ=+Y)t9<Q:^Sl/MPX*BX]RtgF_pON,[dlPi1lSm-H"d02V<pPk+2qrp>CU0Q@=O[05 + o[&FSXE0p*>.eJ@WD,4J$619i>bodK?-1g%"C1XS?B$$S4'75U,tQuPgBY;l.F=S,&:("6S + ,'4dT=BblnL(<O`9%,Y*hCDX0o(\<7)O*^R7N;.6#3Dl&%Q&b[&T)%Mo3cV&YYGk\YXZJD= + e1\8[JiPpX<7MFZ*,SrX[D\sPB%GA^f.)P]8rVBHK-%.NW\rk;NKVtWr7Uc55ZRJaEX^\8' + 4;FigXZTqp'X2=a[1.c6Do)qlMgrc2Vq7n@['/fe3r1n8Rlj9Hdklu0Ngi)&I'"D7Q+%3DB + T50-RVr!7oiteN].424XbJh89SoBY"]34;^n#Z8X=itc=726BY-0[]9':3/q"+l[qX@(C(? + 5<<5iU.Tk_d<%9Bk$OPNWs^J3:rl]C>ro'pPGm;3R,m-sl=;Zgmds)&PQmSOD\ZP@B.&T8B + un$*r''.7_K,B+AEnI[JFCl*,TNt_7%o!(\a(EZUX,4i8k<;.l2="_]O@rlQi(:@Xo'k_Va + B,>K'2t(ljF+kH2I/#FTpkDXgm1f@,QT=N)d^O,C'<N2!YBSI+)jc7_;o)[t<;]Hp*4<[I' + urI3CAi!h*S&V&2:k$/JGtO`*qePX<TcT+QN+(WX0qN"'FB.d&U]J`!DU/-p'@ft,@M&-!j + jOfZnZ"VhdSE(@V;0>Wu2%`1>f<37.rc42F-3/77GcuIJ-@Ac5bh!E8ldcA]ncI/ib=45.C + 6%\5#TUns&6/RqKp;jmH\0DJNpMWG'e_kB*tCFL6hq\@jT69Fd6p[]<*1Y>"AZ9fBOVBZ!Q + G#4#$r0$_8Kf$;,bb3]i@m;+e"loshIk:mJ5`E)EGY4h>5,4I.'DsVZ:cP&*1)/uu>E:l-[ + <BG2c5+"2ob)oP#Y<`ni/QGk,<KC!Wf/m">a&Ymhp+L,=YAVZF;)ih-Fd%rM'o@)KN;6>>q + 6Qi>eXLatT$pbb)XT[,26AsD]6J81>ITZWk/hmEdp0AQPih4V0BHKKX-MiSHOojW\%.h!^R + $\^QZ<Y=c*r)RK7,b8@-u,=D:#JQj!.2!I[27a3MRj8*L`3bZIf1(M`6007^RHW-FQjCQl: + JMcNgmgSTlW8q:u>-F.QJpKDFg>p4Jts9:qSIBb#Cr:4Bk0#qRUYT_>7sG\\m(nV7h.^`"R + QG/^3NKT8)N%sHKufT_IY6P,RFUq!4`3`-Ktoqe%_PWE.af*/$r`MV;0EA&[R0.b7,I5MG8 + W&H-Jf]>"Ba,[Q6c$Gj<=%B8MrtlUW=0I)jO+jVA"d(O+G$,cc$71iIWN<*YP)V[&/ObibW + NEMEPEX%Ne'4*aDm#L"4df#-q,"$$op(a,Q.,8h$E(*GBg:9f+;o/AHOW6jrBWGl6$\#)fn + CV"l'Sh,Z?_X_<&EGC38T!<Ii5(m%JL"-rNl=)J2C<bcs5Nk97ZiTiVCM`fujV)=_8Ks8(] + 7]3%VR$B7j0EK9VXRbFc7'77nCg._&2'$b_6NZab6aTX;GsnAa]sPG*5<CG)FmNiT_cH(p> + .U=A;"&Fm?_dtmYhM)>*dCd#D?T29d-:tVYaS&^EZ)2g?oMemOL358A$__[\#1[L<aeNLWk + eYi(2o?gP047fD\kAsEt(2m?jq"(K2AZ?J`W_[]O[o2tP='-8C)&sT=3kJN5^KGm"dekOTp + N]qi0j;4I>8],k3o.^H]f`^=Y$",;D/":%gNi8FY;P"P[G=%>iNLpEHS(M0F8pTb-cZtqV; + -9BHP;b>"Ef*G@,-UE()*uO0=$fuZJ:d6S=:cC2.HGCb#UCBP#J_%<O?#;7D-)V>>8ZG'h5 + \N7i35SHX"_FAOmSN[Q#q2mRs-.Oe-N[[haP?QA%q6p:G_D9)F6pH3_dNMeYBYTf?c5]9c5 + 4'8Ka;d@6ndo](`al%j.!])=-rFSTdc[u$PAmQ*p9RS=Au`G[n0Dfm(=]?cD(@.=#(;VGfM + *F3Y*@D3No^/I\=Pt/REDcGP62;@eF48IL[3S5!`^_LREQ#2T4F-$h)Wk8pFr"W=;ZI(cTg + /hoi=)5ZV`KE0&_Uj.hQ[`35K>X*5G`>XHe&ckGc)u32`7<*qe^:Q<;gM/fHB[`Bcge43l, + K"U5Sq)6r,Vjb%q#6_?o/gN$KK3L-*fOlIN4KU[NWbZm@##eZZJ^[H*)SoXgBuRb?,.Ar4B + ?88S(k>AXcbPq9\/)eOTGg#^^,q*8>+*P@pA'KDFlr)=^<ZoS))jB]9#m!'fC;oi)B!"&qP + 8nAlN:#,QmM+DNkSMD#'.^sioPr!be3JYumia;Sq#RXq>IE&>KB0*=j4d^)I_;?i>9UnDE> + ljY*?8&3O!1i*U=8:dMnBW)gr#)K4nd-rkK%1<8)5gXYp)@?\"JY4,uq^`0S"$XNHO>GZ#o + l,JR?tY95h?J/9^s9/?U^ZDg3C(kL8/]8KDh4CNB&%22f`O+Ibtp2k=pAYkRG_[j)3tJ;d( + mkE1DC88"#+J_Ab[-h#$leH+D&6f%(-0g^rm9E^A8%7JX'VS8/Y/,;WPX90J\:iT*$H_TOc + [m1'UC&P.PZg9FR$c,J_CI1,#(#7"LHXA1/<#hZFuda7(hU%!r'tI\:2\(j(=a-l?q)TOGD + 9)^&Rh"r\UmS/d*78/PfeL'SW'$_UpK"r<k?@KmRc#T-NlKd[d7JV<5(9bj=0.L$M.@2]=^ + 7YhmJJV4:G5(S@-(crh4@,_A"TO?1P%*8bl0S+i>(bC5iW#-s4TO=2m#p<W5"pdkX(`n6Za + ;>hHJVY-Z1SA,R"pCT,63[P;#T*u$J>a:jJUhga"p#iS$d9feoG%Tt:k8ZHIirCh#(@\-h& + M!<8/^uLT*Q>'9;#q'#'uqTU'>n9B9bl9SgYK7JXu!Bh,U+\C'Ji(B3GL^+D4DbJXm&ac@M + M,)9ZB[B-IP"TP"lAE1ghIP_#=f)8(NiW#<-[TOum^D'3H5#&GDo]tAoba;M"/RYViZF.d- + .#&'ZAJd,lE#T9.`RA_!jJXL0hQ$o<;8d8fKAi^-+@#,\XJXD62L4P^_)2!^;Ac`0DTOmZu + ?K2;/G_)2p)0CFr-lI#eTOk\=>9ILW#$PSo).nGc8/YlfQ5Q\,=.j,F#$.C.@KqFWW&aj1T + BKGWL?Sti,)N%mao75@kh5rqTBQ+MOR!2k8s?)#C&XD?l$<8qTBVdCRdCEmEh0,kqL!dk-i + /RIW2KKPJ#PNPQDUYHRJs0-lDac`TBaPtXe4nI'X+Sg)U<i6a8456X_7LaJ$%o1j3=`BWp[ + Qmld>^GTBl=P^n9s2rke>e3tfN;kPH6KZ7#MrJ$Q!L0AWrcgH*ZfBDY)H[&<drJ$g[$=66i + lHXb[:kPK(F[jV&rJ%)?QJ*j`u)iE[dBD[pC\Yo=rJ%@$)VtIX(]<^jsmc"06TC3*cnXo8! + rq$/N8aAO;`.+B[rd;c^ocNAPJ"Ml&Ic+r=5Ni7PO7W]BcoD%k,Q.e,oGTs@HlbU&9a[SVr + e:[S)^"9cJ"cE3Lgb$C7&ZXjU=&su#Pp(qkeqtG1&d/@l8M3]m2i&8rf@B]6QbP,J#%)`P% + &0!8Z=j$V,@5W#PqLDl"#:?Z2U)!l<d46NA@AnrgF)gCEMfJJ#;c8S7?;T:9!&4O7`'/e*- + g-n*rZA=SSPR3f+sD/:XVGrhJO(O]#po9TSj#5Le?c;ks:eO7bh(eJslSWh!+hdJg0OqQD" + +`.+gBriJ]e\!61>?)uM-5Loi7=C_;=O7eMtek#gDEoCW3oqJiaqU?VQ>^rl<rjKlDh&ks3 + A?HZe\Q;?%>m(%JO7h3kf6I=%1LYR4<URS&kl5"BrI9n%!^G<Ss'W1,K<UXW_cV`p@KZRcO + 7k%ffXUrk1Z==ueiq/X.0!h1rKE<9;Eri:s(/P\Qa7H>c,]]>+7/'<Za'MU8,GLnN<"O:2N + #o991^<0r.tsT-pPeZ:hf;kWjR#Uek%"a,fBPE&+W]P)Z+#\Xdui-P&NY-d/PJQ]sfpIkhV + `GH>c5+J!Apk<#c!iE,HE.\<dujb5hPn6i=5M(EhfZZ^>f/ER#@dr`t<TG]Z]7d^jX#lJ66 + X0a%?m&+^Y)h359k%dDh3__aU%i;YUNr6RPbK^kX$b'B%%f+7I\5L#;i2NLSs4_M"mT&\Tc + 6i>pSo8GoZ6fWPiRIi\@f_Z/_s#U>\m6;uXrEm24IrG#ZStZ.1#Pme<E!c\4L_U"7F:LOQr + ;[B#"U-$=(P=DZ%`.p(KSTC<+6Zl@_FRN2Tk#d0aH1nG@K),hqC76(dMtWQGn6V>3$7AJJ" + sjZO.n0nM%M3a7-L/)#Pq1;ks0`p.'"(,`*/(]H7pTGrg8K;A0:')1<)l4)P^h\NQKOsVd] + Rr,G]C@n`1n7\GDn/qMJ.-6:6h,,X9eOs&.9#7EG9L,il%nP3SEaWe(/LV!OV9&rKRZBi-> + pd/R1"rEi1]>:a?U[?gCG>cco`Zj6HUQh'u]9M(4!-</,m6iD$9p!#<?I++Oj?>RlOkWd\' + s'Gm,I81*`39MjUSMR*q&,$]%fO4_fe&$=T3U8ikbkYb$rJqK_5X3p:!2&lnK$\fW6<Sj=A + jcNc;#22#W219)%0hfRJeUS@;#d=JNfqh6U=<mS*[FHnJ("1'9^/TdCc((<'5#`Yl0U^6/] + "qr6ASKr;gTVZ.]-2.!oRgM==Zgc`XhpL<bgBPE`I@m(?4E<8,Zu"eY1C%3n@[I&VbGGrj^ + Q@lKoUgGVY"^hN.O1?gJ5SG`NKT)M;/`8,\@N[Q_dG8#^&/iP9f8rlj'-4(mFqjKqEBl9<V + qC$eWqIW*N`*[AaP+7T<=QJ1+Z8-s1[Z1pPF4Fc-*LN-_''tFT!"sF7;5ON[@\knh/>uWqB + Tm6UL=*!b9#]1$S)DXe/r.!R]eU&rk7Yo[8,:'4Z5OZ#T^K9tV7;MmgP4W*'p_*a;N"m5*2 + @WC&au>CZ-&"%[FcNtC5[i=@LZApg`,Ze0id=ZLA8Wqsb(3G^JcC\6VDaXdHQ9(4BW`XPs2 + Xp?+j0UfOd7cD=d%uujNO0Z-3V-,CM@Z=$'mgHc<JJu7VLofgq9N2s3/$G2!2?d3-0-B@+2 + '(k</($o??`r3Ur"^WUrFI%YN->*e;TX'Zuhd$6T+/8Ei/Y6o;54B@L[TODQu)[.PPUP`_k + AO1D7D[]-+JEg\fMD>A=<B%E4:[T!IeY0%NnDYj@.\([;.p+]V$%O5ObB,t$CK4p0ABq3@] + Wu96a3RG4m^GbW42ZgK0K";tdF,Z<)[p$KdqS4-Z_EcRqSkFC2;<P$#kcC!\\+/gp!mD_^c + 6!D?6">S?980K&pT7<f\<-2>U&?sVfq8E$TG*?HUQ;'POKJWjXs+1_5m02G%QS"\Tb?R_,F + OYRR^p#rTo/93Rde23T:t#4Y<!f0=s:(s0Y1..\mkN1MYs3;rkh[7U>)`Q)DJBV0sFnC])j + k%'*t@k$DX)tPOl2o@7(_r&0r2,4-E":6:JMs:-6Tj451UJdi,%B_%hU>,qHkfnl;t.<kN- + U4F13oM^>4[-`-FY(;nBD43fUuB!UE/]btuV/(:gKDDOUt1Ls\&H?26-3@A;u-Z_F>oA(e# + hD>:_1a7E+6t<q\K0D@e-t>gsF6=FikU=(-)ADD7o1q4MVPu;J[4mUu6WH>XQl>7Y)Z*WnK + 3>U_odTF>WYBWaiOZGg?pC*VS+<JtZX]L]A@>_A.`'0*jF=V#bI40]5Us(1!jp$9DOj.5[g + WKlOk?_ALpo\*[o<_cn_br1iAZkI2kt^bqSjS.a<$OoNRNBe$kt8?n1=,"3'cXd;hdSqe/s + :n8Y_-7_htt:*A+8kXj!BHncZK*O[9uF+HkbW1R+Q]Q+:]X/p\,4S>Wol'tL\$0%q0qqAMB + a(chbm6L+3;')&%EUllt!\nj/U\g];d.QX7S3jYnTHNKrU"J[3FP@Li/*'>pD3AA+Z]2CdZ + r'2M/5pRXA6n8or;\_tn]Hi]S46/mdRSC'"aLiEg]IUn<]-&D0,#$J+-)8ODPYa,M?F#O;] + ZO]rgWmc2/LGNl9k2TuZdV@$1FDEF-MuC3"5#c$>r/3uZbgq"abi79hSpL#-gO,Iqr/J\j$ + #kC1kLIhV!#I<MS>#5`i5[hlVG73O[det.84YDr,<S0EBbF`5:gjp,]kKg[DuMF7r.i<S+n + Hp?a^Yp[OA.?`-f>LI@P,&^\!#k!Qr1jYdUTK83:[Hj98(Z#"WI[aF"7aN!UN;$7jfe8A#@ + %bRI+rj2gN(Sog&[%$<gqOrh9"/@k4@9GL-((.i63aa2C-FI>FbRR*qM6+Y^YZ]*#dNXq?r + aoij0&dV)T,0D_eTYr+Y>F%9sV`BkK6B%m1RM\Yu.n[H*9$/-rg@HKkY<r/k6O^4D9X6=G- + qcZZ92%39=tIj4!@%`W6]AQCS@Tq=].egr9?]Olgcct$5>1kF`!a&m)n;\3_aHW*6qU!<>8 + Op+^J'9qQ#oUAUe8k:<D:>)bg]@`PYSMWaLn=r4Lo5r/CR$Me0\_V79nD4C2-1a0rEaZ7@` + (#XP5*JgbXh1c.lW"lsEK`H;4i4Vqg9$/E92^j<u;81hq`iChHLjBIKBb1s>,3jQic?V9[Q + W7bd?#l)I5LQHoq>^EZheFE>2bFO*lj5A6]SI!@l7GoPgj5HK2r\\^SRW]!dfa7EsP6ib:B + !QZG182LFi6j0&;"fl]`2]RW40ZZMLMEn9N2foJ;LseiT%`n;Q\',FCi7pmT'1k>#3$]6K3 + 9EeS(Wh@I\9o2)oG^B7*(e9PakRq/llR?4+>*2H\Kmo[3<MT9Ur$*-Ta[g8FJm!-'Z-%";M + 1N,]:P.,X[:gG;TkfP"/HPDZ,7imdhAZI9<")][R4l?;d6BAPHPX!]#1nee"a6:ffhdi^Ji + rP9FJ@(,s])<6kn->9O(%\C.uj!85+t6,n*C#j23uQbe.@m7-)Y3oZsAhd)?^H`?Ja01FkT + Jcco\A(K=I1HrsBQeO?7aQh9%O`8&n<g;WC5(mNrJ%,k4Pi'oN]R5F!E<9;[eji2S97Z?S$ + SE_rdlTV]B<g-BEgJWjWmjVaG[:F9bHCNLfSMd0Ha(&CV2##TippL>$f51;R'`4o"rQj525 + Q,rU"anZ1CJZ=,:bgBp6FO[H"ude5fL6(u<=--F$b(MC=G72dPn#ac&3&+$fYnHTeIoA+'Y + #][=ToRD'c/iG)*!6!fg==Wc'C?=*mrf2dI!@4'q3PcS"R0ZY#H_#l^1"e-<_-3=sKP(X.@ + DPUscZId_hcqo:nqfW7(XDdgN'@4/g>&XOBV?do3?cK<@k<Yg\T:e!mX1bHnFl['8AogLNT + D)\G0%_n3=ee2=he6bZN"]i8H:e8lYK[7NJ[9jAu;gbhd<Ptg%>:8SIrZE.#*)ph#bb1/r( + ePjsdPL[p[cIIp#eXP72gY5Hqdacmse`5OV,N-j1f%(knegoh$CZ[IUg9ee5?-82A^#%&iD + I*cg:Ao#e>OaRmEn:0[f*q;ZZh:`KU";?#5F$B")uEF=GYc;(2I1W)m<]hDHn,=$=6",470 + D0O"P=Z4fI[>13SN+X]f/l5aMW6R/VpJqHFLhS\(\sVb0)aHJ]UiC/IdfD,DEXLRCJ6?dA< + )TZ]!5MQVl04dGj$"'d,Lf,?_u0g!q=XD'[g5-)!IKY.L/`bc<b`nQJi]\dP6)qkL?KW@sa + <3de:qP5e_7!4oeE98fsWA[*q9YraMM4%6MTc*^L)[nIK&>D=R]?+Mb47bbhq`/R7@m75q. + _qY\n>T-^L.jRO]`4W0KeFgj^"irgna]0q8-C)b1'@T*<ftClRh"*KgMqUncgU#_b1\9Hdr + 8PF(7,;oR5!.k$F6;;TA_jb+^7Aomh.X1um'Rm/)O98G"`<*S;&^82^J/_)DH1"t<``4-^S + >6fL$V=XWnuQXWpX.`)R3l@!io>maC;X9<J)g9AB:m-Ao7Ac/ndNCMIr^a*j0:p4cX.2!Zs + %56%tJ7('\D(#?b8i6/.C$eoo1Chrf]_/j9b;;W_Bc,qc'D8tD^?"r*cFJ\pNGkWTiX5(u? + UWp"UGU:uH$Ffsr2+JV,Z6bTehjs90i-/2ag>BVD_1V2g7.d9[>]Bi&#!ute:b-C@g>SA=G + ][&?6SQ+Vu@q=&o^,Oi:0BtCH>gB0Ub&M04>homgj9g0IUg[P(XCOqSC><CVNj%N(Z"0E\5 + ,I()]2-GkC/3gWlZDW,r:+>,o&Ud[l`O14?<"sg<QBumAT[car`NROrAJ0b[XQ*Mra".1CV + V`CCgLN,70U.7#Ic>,hf`Qi?=m$BB0b=t=IoB:p&38IriE9Ki!g@X*>Ms3dHrOhd=qhHXp3 + "bfjKLRm=#CTFW\.6+uqR8kGAaBj-N)JR-i`BkNeW#r@)Cg/FF7M@<F/1KeD>Iq//qH;]Zo + W2B=IUkMc(l@Ke^M'*iEX,?(`j9BINSjM1-E5MLMtDZ.*kG*G[1(hm8Emm`Z'ogl_`9KZYU + @j[^N6cm:TbAX8M@r5(*oMn$arF;Fo]fr7BDPb=]!8RiD<N\Se`^)EL"CsAsA49ne;ap2!7 + ohfE:52>8Rn[k)93p\eet0;#[S<`-\+'?6:F0ppSl/ln>2Ef`??*LF<HRbC^/np]8%uc7cG + =Ljrc,#iCc-WW7ib\"*_9&G:fbVW%0lACM/8H2hi/!#SIAl*_sG\s=KN-:^<YX0CcDoA;+> + FhDUMZ0/m0bDB-Pt!%3+\P$"mm,D2k!*<dA*12XS1'F,ggph`>WB'2ji);Pk0^-K4R`Vc)W + TDE\s%>GgV$12)%mmWG[S?*@1LY\p$Ukf^6ph)f<84*7nXFNu8=*[oMZ.J3W0FU^b-2O<@c + ;f>[OF]L52[oVsO9m)Jf@p`DX[E/$\39i/&n)c]3Ais(B4YqQgFsYO9^!^jX60bN-lFgQib + [b[0fQNP5<_fm+^MDDBCLk1t?1hsh#.EUSiO)\FcQ2&\2S)s+'3?IQhKkpd>kr1'=C/`ZC^ + k[[V=*Hk)sf]gn_RX12]ljQJoVV"Ak+'3T8)!8$eTpOhmR4-[V=+fC;D7C=PkU\m1e4PdGQ + p$\7T^-NcC\h0NhI3D.T%#FJ!E(+)R?$dLS4X5205sgiJ1AF-NV?jX9lSUJdYYD@REF+Fl\ + p5R7(=#U"^(i.:)7FrLPo5m)'ke.=DOJd*?KGT^/q'nQT70L2->,m4Li!YVFS4pVXM"(6Z# + +>.F4"[N/C5XZ.o5(Wg.J63p,#Qpj<!)Poh&;io+e7quER">89Jj3Y(a<U,b"FWQX0Ls%nm + q./7TT<2"dKoGr4K^A.N"P"OGJP<OW$A_Vm".:VNi42#$NtQ;*:QHT&^-2d3?X>A,DlccJi + GP?7f3k3"E)$pROBCu#hjkg@#]se?X!YK5oQssU_0N5Ji'-[(aD?QcelPVcphg`R07*;)-j + *b-4%\E1#S".S.UY^@R1iM7MHGehL[F(MteLm#efiG(Q_)@&Tn4]_&"1A,2NU6Jh:Ag:YZO + oJegm#@Y,@,+p_8CKlRH"TS6h\<PdlB<.Yi5+]*b)nA5H0+GD9N;BUZ3#Z4!'+[Ubp#U)B` + '@C7p:8!:"#YgtFdKiOdkTMX3''LJiJeG?j#YH4mRKuJ-KT)(G&dTX%Je?'I)M/QaU'O2\K + Mi(DTS,_EJe7,h%"]%h+UEZ2F$^-u+G:(-5Tk^Widq]^+Sp[#L`lDC%o_Hn4J7>D#Wn]3[0 + hKqW$(;U%VR!GJdsVh#WNrZH3cGPK5EAq%>Z.XJdk6ndnq6?63oB?K/*]fTS"OoJdc<8`.A + CG+Mh8)K),a++G/ka/g,c%Jq=A$+L6S,#U$<^+G-m).\MBf#UuEuQ)]EC-m517$0WM&D]jX + H#UU[G=pQEZkTH%?#m_Z6JdBMAjF;uA+GPIR80EP5+G'Y#+/"2U#TfXijpH\FBHVDK#:L^7 + LEM/Z#TFn;WX'LcJY"WK#"TkGJd)K'?]cI^EX3GRJRSm"j_,c9Jd!PF:kAi6+AJ=JJLUp<+ + FtF:JY5OX%"FrUq@nFQL\`$f+pa>[N$%8orf&#`iVnl[klLdGCM=tdPU2+]<e$sdqI"fM8, + ?nKVV>R!SL99qrh#hJ&cSLHl7r:6De`1;V^`%O"K8?C_>^PYlJ_`GEGGWoZ7Q=Xc@;rdqUg + ;"a84_DY$BuM].XQNrk4rinc$<Glk066+7(pi`%aqq+FgZZq]pZsL\iWPZNp@bh_U5_5ggb + A)?/),m6Ua%+73M9f6Qb9AD/sIqegnm8,IO\\&\Asml4&eN9!!Sqj)`Ba8;NZ\juXspH$U; + [-g$]qn@Qm8,LAW]Z9ors,U%D4ibA7&+epJc`mF6"8r*.oD&KLnc1pG(k82UrdkCO$6SIcJ + "Yd"KHU+(6ASbR&+hVAd,=pk_u1,WoL(pk,VVX-TbSd1rej;C0H]N"J"o=/NJI?iLa_L/,N + OMBdKokDKDd#*oT2;c<)?/C3@H1!X?Y.3s%<Im/J%K`5LT139F6P2-=kUjdn'L5KDd_>o\_ + s_P]0BSffUXXr'/Zos%igr5nEVo5L_N?;$naA.-2^=e;4-&KDeFRoe8V[e<!UdGu,tVri!m + 6VB>)rJ#]4AWsAL(PUaLP.n+DAe[YW\6iC=%omB!T!<6/!a^Qf4OL#2gb9-%0J#rbN["nM- + +7!*=XbF-k(BFJ>j8Es.ouKAL0`PDl8TcZ)gq4Gj73IN<J$3kk^.8%sS1F8^YSIGZa86&_l + m.(bZ2VX2q[]8L7>\9M0#ks/)B\<fJ$JPCa@H+PTIc@lZBeZYfjOhkj8G@+p1?PBW;gK%8Y + !,qHI(fk"X)kOKol"q5KJZ\,%LP.[2,Fc)REO]9l[<K;>s/-q'g,SKsJ.1db<GkD'pS+SWE + >fgtS$9D[ksF2o:kFb%Uf(mL@"B;R0?Gqi)]ZKR]:Br`NKiO`IU1bdk2Dk=_cR0&ulB\i3% + ASO9E"Nk*aYOoAh1q2KQXc.fjsG4/`6^GDY_c]@ZanQmH]Gu$0X4U7Wr8,9J5k1/c\=0hPV + led'P%"FdErc-!SaaDF"oY.fgqql\N+6R0aS[&0<?aKET0CAbRp\oKZq<]9e]RQOj%09j1$ + \>NG#G:PcJ4KG<K!8,]6)ZdKT`cK)A,QaqoIgNE/1H9l[MQgu@Yr/%.3IcV)oH?3%jCR1Lf + "I!O7[`_dJQOknLc0,pnJO$B`CZar@!a!V\UJh>Dob80ZFgD5LUJL9V_PB`e_qZj(rXo0uZ + 27o^4rmaT#%Ui]G2jq]Fl-JPdZj7?@*[5Lb(:ORb"naS@&+<9X?\j8DfrGqCA=jIVSKMGYl + 9riF0:[?VAr<Qa!%/7k?X=JPh)O7e\hA]26JdfNrO8VjfFqV*+XG%F@8Rks2ce!b'RJ$.2u + ]>sd<WCtNS:$KJRV\8tNli;O>+o];*9^&%2\p.""jMZiN'Hc[DJ$Fk%4t#FjTG.`a11C1)# + Q$!E'HVtTg)i^rSJ,X'rLOPnI*cuQ6YNSBUpRRs880(jC/%<b&^ij6g?AR5eA@V32TJN`M) + -LG\:;u=HV`CkFJqVBUpnbO;<gkKWJ+6J3-q8tS7P["eR?S13jr6cH#n&Erijs7b39omBJ: + bA_n,C<>H<HuG-9E-R8Y_Mh>mSZFnWS_B8p;Y8ZO`;7"<jI'k8;sf<OK1i4]6lALt6VZVR. + `g!c[<?\&0`<g(p8L[P-.=lhe#!.W`2ASj$+#CuO/r1DUa5OJ-Z\56?:>Z;Jk:lHP>pFbU` + peM4aOrm(?Q5L51Z$*;23/8;u)5C/P&BFb2]_A9K`1,DAdTfZlpW!$d>ON>:c2((IIPDB1s + +#&0"cY77"=Ed(*/FM&_>$M,a-cIPPT#==6iRVSgcpU*9Sp]F>trEas,(f&/X$fW(b1eOX5 + t2u`n9;l8srV=<U.>$EmT<s4H#?`e@Nap7;8lLMEgZd;Tb1UA`\'W\n7W8bF*]2Agt-Tf:q + tG$hA:ur7.8mG&X!NX#[E(+[!gEGgBOa5>S9OTNM@BTO\!hBT3`nBMOP!9[TA-63!bQY*Wf + 2"&2Y4O[leU:8Ek:;A$T9eoaD5C\5TMlLJ;`>?8).9u<M]/Tah^k.[e=rhVRpL/bT3LiH0G + A@VK=E\3e5D4krEUoXedXG93u,6$>0<njY.Ft2KpD9+JLb]f&nY=F8La,&R3:>R@ehJ3UIC + DM5uoJ^X^hod?o9.kUM2[->mI?"lG-fhY4kd<*\i[=N\CL2NaAq5eX#OXR&N]aeL,e,6NjJ + 3FLkW7fUP_<hBKW\]MY%373BY*D@]4c$DA7F`#Icp%<Lo\mYmYj]>OQfErMMp\UbOH$ZUl3 + Ns^W=L38Belrkj,2&lg,IKN$+/).1`T.O3Z7m8I35U%)c!OmV*[/XAG(==H^u)<:9[Jmf:A + ,9#iAUnE"i`.:D[^KU0i@QOb?EmjOPV/BR.:b%[%1V8i,q6Ha)EbNZ8(%o1?P<qWQBS?1G7 + m,Jn#C7Xg2cKXW?C$s=;M"h;Upe;*gXV.;qP%G5jU(<^@8hAE51AZkdBZ`B2n$8`YStscHe + >BCum8EjS?>Ks]*:7-N%:n%Neu+8^W"It>B(FQWk,ARcro0q-lCMuFUAq6nEXK,q/Y7"mU= + sPpX@GUYdM1G+;VR2E!UANb9'7C8b'-S*h(UOdLPE#G38On+hG*5;.h[/d)^MQZH]@n+.k5 + p^146533URC90P%P'k-X=:iWI3[:+6E`@Xr6/J?CdomQ0CtLpuRp\8m\la>W,i<=,^nKSuN + R/n0NpB'->!]-qF+ZF&eNHKWS)$gZ#mbLJ.]Neu&F%-uu3X6b`3U.[,9lEK3^#g0r=cKg/; + ld!<W/0'\O,`_<<:bL2`E<O19$H*5\mR8VnNpREp<0F=g1%+n%Y5[oF.)tLFa)`s)$!d!r) + &'*-QL'_j0.*%S.e<+'asiFpZW-P<T_&h$bGhYg.C,F]<1E>Z(@9VBbhem$BOO\QpCVr%.I + >B[nFu'-pb.C?/InGu(HJ[`U!K,%dA53J0%1E6BTK7DW]\cC]$t1EqpE:Y&]SV6b5@CIr5Q + tZ$?4R5D&r"a-njO#Drbiam/F9Zrt4nUdJ2B"*?XbM+><k;cj$PqUtW*egB.6QEZ5%b*d// + @!\u,)B5n!QnD+Q*,Al3mYWF*!59qVQ,]H7!YY'7=:9mC--#cp3YZiF:eKue3IPPUAP&1EO + E.:c-[E&FtY^7beIjc][-u4'Z15uRfOU2:L#tpBA/m0Y6?:/\..ZgVZaCd"7Yq&YXLN'c9: + 4DD)`9="P%$JjDaJUUDdk,Oj/Z?33lhZQ\jUP2Q%[-1<P46;$k:^fK0<k=,kkQn`16?P`&< + dP7dh%Y*'ZB5`0sMZPnK*m6,0"O$n8g5O`H)\K2\U6nQErdho0X3@HPC:bo$9*L00!2k=#I + 6dR^6E<'4hqXBUc8AbmDKN0lo9nG;lMU2sfn&PD'iPM&;G8T<jX+M?u:_QT;=>Tokqp&"<> + .Wqp=])XTN]#+HQm[i<Z)C9P@JD,Ac&bgjR6r:/;81"^@5h#4M9rT<PI.Z6KMK)X0es"092 + PPWsO!%fl.+HQmPa$1^Y&KssbFRU-LD7\L8,hulS!g5,:dP,o$2$6`:",E'Bb6m*Cm3I\^2 + _[rP&5bj`!sO\j3O3&t&nONB)$[5b4>Ls_13Z5@0*fcZ5-fkJ;Mdq>70qrb#r7hREghYZT* + b(`$7Jm]CT?NWD_!G^7I[c:Ye)FLM(C?u/9&UcONP9/`p'_Wl3+:Bd+p;gf]s+2lX\U"nF& + "elKiKbm)8oX&HORbr9_l=mNj580bZ9a%du+l<3[T%;'duS8M\[F1D)=+OYk,i(@fj=ng0b + >;b7[e9UO:+'baR^8Y$TT[8d`/(,&H!F)&qf=S;9-p.XR,d=!thFSBd0pVo3QnW,[fLA9/` + A^R&0&YV6X.lrfl3n9ia&[;-%[9@E6qied!'>n$K;d5I1>K4ci$?#fBaO]h94r)O1<S#djk + h&i&?5*'>8uDX5R&a6TX0;t=D63gq'4;Lj?qn=BPTaGTD.*e?!qmJeO>fO-,=@bDhNfZ[2D + 0=l19rM.i"B/MCH5oU52ctf-E\>r<`6?.-K<I$j"#+].sBsu6R_@oB(V-s1m6s"QY4g:KbU + ,iOK1ukE=4[e9,<dc:4Z'(T1d7j9FKY?/t":dT"d1j^Q,8Xo&f73%r=oRlgD_FNlo5IeADd + GmB[/f$qG2/9^](R1!]N3'cCpi*:Pg/DtPB@<@GoX3E$G1'GhE][hi!302skR<,%b"XKqI/ + 7lE"oba17Hoj[V,FS9;YFA1unmr^U.HI*I-cu4U4Z^CP)@9FCX=\kSkQZ$$L20W&qGH*q*9 + gkfK^njiE4H3J@[D+j^_`_jN4giNtk3G2\LtAb[*qSf5POe`Nqd+:CfsU34<Ui>6Va/f05m + L%K9%<sl*8E4o@.YgT1b.<<04E?cGk<nuO?l8$mf\q27$]\uc2RrB"XV_c7CGWRmM,qD)^b + 8U7b1R0%P%dE0dmfG8+pLb/jTcG7_"b'\F>o!N`ui)SS0jRBPqU![&[m(F(m/B$eCd1E5bK + DV+`eGl#>#6db/Cmdqa'VlHnPV1@&a5j_T&&lnJ(uP5T5SpMG$Km?%V?o+,^r$#XkomdV._ + 9OD]hAJ01_n<#A%G6LmR#k=5j;caNsG8//]96&98'fAR'F\Qn[72>8a2K)ModqolQkB$6?N + qI=4F`R42K(kIeFZ"_mFbKOPPkaV`FtFdS2er1DX*6-S)_F3se%:d0Kp'p)ePF38WbH`Ueu + (Hr4j&DAOm-/>;0r%>?7M]&=^QO/AUG6bg5lfulHbep*3GWU@&iI>dOq^^j$O1VR5.%3fpQ + <m*Ik@nA!d@ea3fF!@q:r=S&b&ME-5`Z+.UCaJl%57Qn=l]1S,A*j`$aObG0_GWk-hSBZn) + ]d_*5="&#]HL(_gI\7qXM[>+2.CUeS_B[qmbnSG^hUM0=VYlejQPGDn-M3/Nj\=oaDVkpis + n51\)XEf_F364(mE9rddF%XR.I8inBNDj,'f\NM=BrQ5_p!IaP3hDmenJCpmO.*5DGlJWt> + EF0GOP7TqO.R>/Un]TDGB:-do=8&2]P;^B*(j@t't^Vo3I,bef!!`X)Y8889%V`l51rk]&, + 3:e\R)0_Hh%NEpVfDp(OXn[6*7m'%E5V5K73G/h,#l_].\WDPs`g^"ASEm\Y4MtrI>S\J5B + OYQ:IEdA"0i>S*O4bH,iEXb=B+g[p*@5FGHEmPF_93\N/bCRs1IV77p<l$LVuF3)Q=AR-66 + >kaRX+\74])B2#gN%@`o(RNYD:,u,@,_)n]m'^_Ypo:q6t]6Zb=qF+4a8Ar-XV%jT=;^&!$ + -H;K];ENL-Ge$`@)\^O@^,X*0QQ#H-:@ii$W*%XC387G8hXqibF,sOHeRrt9H,-m\Wg.e.e + U=J-"i6Y<=IQo`g;,g%,HQ$W_UY?^'=X-+J]$3r`"fba3Al(E9<PVS`AaERHs*XsWBRen?2 + FSJ4D@%3]-(?u?T`J9(&>+4(U92BZ.sstr.cJc-"1",aVGi;;EM3!40r1a6l_sIgHB%lVaV + K(7<u&BgIo_U91F)#[5l'SN[]P/GCgBW[MEN#<bk790Y#oq8R$8-QpK#eHYAr>K\?7KH\Y7 + As.FUDcs)^-'Zm%Jc_69k\c!=[eDG']VkU\Mlkk@MpkKC7[;DHjD:J`+)o&2YRdSh#;)k;6 + 4\9R?9t_>@]i-`#PqB]*>>m[l1gB']S*ALj+4enB^D0PC[8X$s=fEssNa)Tc>Qn0>T['&:f + b[@a[o'tFZ]G]QOB%4#MA=ihBA1!GG2+Rr4gT@$dulSfP&\7So>SX/iB4^5*?+0I>4'9DbJ + d?=Y>aW?[G-s,<,gMn5F8k9S8BBq%Gs0_hj+2C3u_RTKpVPgaL`fdglm24Oia(K@[s-[fD3 + R95N9+5792X[H*Mn&'7f^dJM;#M<`dLg>=Xud[JA4%DEi`[M1XqEc.7$_)f]N&FXgU@8iqI + HoVp.l\%#J)+:4,3rWN6p5go-YZjeMoJYaK'3#YBnOc$s&&2\bD*<SdHd?4bR/d@2aU0qYk + 9FVL76U9#&1aEM81kD<mBG_Wh#(N5[cd4K7%/Bug^s>u9)<M-JJXt_3C5`Se"$/]mE&3^ej + '7/*+D1Bd\d!#W^s.rs>R]-b1u"[8L`)cgAq?@XAkU>V`re%]bV1gW$3jjgQ_7pB)0,pc`k + ]bo1<^03""WK+AS;r^##p/<i+4JK%&3nQ5frLNG,ba@JWh3e\/?f0"!k\(&2H?VN<:BnTO^ + S2%L,7NOEg7M":Tb^+$dlN1$;.54+WEbA!e+n[f[Sb`m?HA$u#e]q4M4G(rcb6JW'Kr0m!h + .!u=/@Iu"rA"t>+W#T-<fK[:VA&tiYW"qdM:'GuCS-l>4#KBO.7JV12<"qDb`g'/!/@*Cle + K*W;HJV(r[.Y326=p>;+@$1^"TO<FdJV!#%*.`[>(`7gTEV]kC+CIeG"<_)7OF_r'(^bhEL + _p@FTO8B:!4Tfos"-lajL>aCkOJh+TP*6gIE]bMoRWV_)=W3Ko6LUf+D7\YH6?jh#'j!8)< + -4=#T;KMS^\P^G+`JW#'HSO;?h6ja;N?USELj7JXj*Y#'(i!)?t1(B*ni^<(In@JXa^u\q- + ?9=pAi:B$pm"TOu%FCY$QEXFZh=)5r+TFnu;V+D-K8BHUo8OF`h@)4H,EL`)M0R9#a\A>!O + $#%O<<27S4)W#:DBQtR@jJXAAW#%/Qbq?C:LAaSE,Q\ZN&JX8nFEe0Png'1cSA[2MDTOju+ + JX0seA:^$p).A8mAU4P^+D#9l<Zks[0S,K[),c$N#T6F"TOfk_;P7SF##V%)(0H-P-lG:$P + NWlIR\43V##6:Og'17oBIX@ATBJlGKqIRHOGBPYRP')aa8.Q@UM'EaJ"u3'6`d(t.Sc8$ku + %GGTBUY#R%NW2rgN4G\oO@>kPBRUW$hFrJ#K:ANdn#ig6SV8lC%XN+6oj)X.S\!riMgXmhi + 70.iQ]_XN11cJ$!A[g4-7&g>]ZGX1J"SY=JHcJ$8&4!e7G&>7/9Q/6a0FZ,c_cJ$N_a.Y"c + &gG7$[XSYJ:Zq(!cJ$eD9;Lc*'>?]Xe/ZJa'+76W<gn3uerna:7s1%!sDC^m"\Hi"tJ%;KS + Sq"=!qks/!Y.M"-TC1\;n"9%TrpcWL.K8qRj3i8"C%3;.^jht2rd@<4pE/S\#+r6uJ'\N++ + 6X8cTQ0s_8,<T8kV`pDoHJt8WYloB@"4lTreF#?+!9^$(8<WXM:"pI+6]qYU@J5A8,>"`kg + gfMFE3Dhl9QNV!.Ue!rfK_I7j$tB-D\#;PL>iu8jiP,O7]UL'$=L<M.nW?&cS0<qILc5Shd + 1-esfTos%W[p3KNgt5L[.B:F#g$a(5%=e-^mOl4AHDEW2\&qMQH\1k2J"%]!'mPuAq+9Fpe + S5Leos;rdgQO7c!i'e6+].^X]*_>^LUqQV.-b^ZZjriP9S\Q<P=@#su25Lp\O=JPh)O7e\h + (0\sclU>QLor(++\GobXrG@Vg].t/uiEU/`FH?+A5M'$;?).@BO7hNk(Rk#'lfESVp%Uc'q + #=_HrIL%'$T]+d$"7X4J$@o2`(0\<+7)sVZ#Tc_B?M6(XF64lp-_-u.0!i<rKNB:<^58S$> + &SCRBpo4c%l0V+7/?DZdJcua<NqmD%35HG*:9EJH$f\r/*?)SCF"&<bi.YXV*r!8Vd*iC^k + ft[T:]->?bkj"8n]#np&qoK62"UiOq1ipeqFn:*8R`_)N5<iS7(aENV.&&+[Y'b9N3k:0Ge + $V`<iIOT-qcr4<L1nEA[AVKEBJeiL\W5KlCm0gklY4#^^;S\r$_Npt:(o/JtYnGb<U%H0E^ + OReuQbVd<9fFRRaoU^ukHLGG4^"9i7L\\k1k8Eg(-d;E/;s\qY\Ea[sYWpF^oR:`7r4f`;s + 53Y;+6TkXT'-O_+@HQfO?*Ug_>\q>q>_W$$4=U?0a=<3*eVO!J"\%bKa7GiKWpUR6E"#pTl + MD#ka6joJc:P#X>G\Dl5i=VI#\I.3ZmSTJ"u4c&L'V8M30hH,f0JDL\ai)O\RFGOGan6l<T + >4M)$E6c9KcSs%S.E2b(m?)rlluNj7G&Vr@WJ#Ps%5Z1:.N.1%/n7#4`.rCRUn/L.'-Ocj` + c9?ESWWJC>K+6ok%alu5C,rDQc;Q3q4olr^OoWXVOc<AD:F"UL$s&m8<BFjd40I?Y7R'RiE + ba#t.f+@seKDfjc$(j':XOiptAU4m[lp'+;s'J]VDpCAd3Tj*#@0?I^&,$l&kB-9dPM1C[W + V"49q]6jGJq-Yn#=3#d$))GmQk/n$5M;kFU(gL`;2R3WB^#dG6oh(SqF=+k4&BZ+W/_JL7+ + TEW0W%gsYdPHf9F6h>D1hhZe,"[OS!?AiKc$XFdJm+EAPR2^%]GYEZr`c:s/Pa(XgpqN=,U + L+F//`>elpC'>pH/IL&f(OdJmHeSTV+'dFqZs-tXL`s0),#_:VhFnLQu)230SDf\7KY?CTE + LL?RJ6#J<:feXWtlOn)ZhS9,79miV7peCqCsrG?Q64GTX2&,U'XXi(Eof'N8UW#e1k"i@d9 + )@JiHP(Jd;+!:5<kZo^<$)'6.6cb-$O8HJ3Y6Ep?d+\&c,]+(4rT_(_](e[,NI9/08r;U-r + *QN#'k4<F9,J-k?s(<tn4[H1GW,lIf\;(CZ?T0-i.'^E22<FKI`(G"7O\WV5Og?R`A0VIil + +$Y'dT4ipraRcBgF.%b-G'*i`2';Iun[jZ'IBf@k=U$5Or,Tan\D6bT*RiQLr<Aq.D;@gqP + [XNac;;b&%[ec^Jo]D4ED;3%uZg3f!]WcM?UI:CR$;(pb-QA,ei.9as@$%Z+a*WL$Gts.f4 + HPG2#L9/FS97k!$pdu>;B;C7f'RWbMP>+M_ZRU4T[RpX_L]3.%OBho[j5].M,Tki6NYNec1 + WNHJ9'lB&l[T-@K'ktcJLp].1C9%rmX"hu%<!5,De@,4`*I>:;MS)34F</PI/+MMu&`B`I% + 6'^9\#RFhHH7.cILX2E*n,Wjam^kGnMiMj3(`eQ>14RNeK:9;%g.\2j,5LX!A1ka39^2uqi + IrV#d,'PXumph8e&=7k+N.GTc345H^Z*^RkED3Y50$>*%X,H*P)UMU'gUg)Yh2XV'9-@0=i + R8g*sV$.ls`3'(IY01,6"#Xs6RE,?qC9UTpShZEUo'0\S]P@731t6G%j_,[1s.CV,hk]VMm + IZ&2:2W_Y_h=?Id+]JCWUCEY!N`g.ji]Se'^j!Q/E.7G3"VDHK&_IbR_B/9Zk4X+Z)1G^B< + 2(%oR7B>%<1YB%.Fu.!Z4i)t<dX/[f5c<p7Vu,G@1ZG?#j0Wi^1m3YYELf:FN4tFJ5,s]$o + 2(ljPXaD+)QQgp;t-cCY:6Pn22SXsRp*R)T,W*M7r)EM]3dGuq5RT5.XZS$3Q*gKA\[6+*/ + ^mhqe7%nC-WuK*<NSg'5e3LD`7e'X-)$bZ.V&qaYuk8^p:`s!l>ulGmuQU2ma*sETes<OZ2 + Ok2uA-A6Hu,0ccKCE+%q;IA/MF7q(6-G319_)X,FgBg7TA>am5!1>ED/ai1Q7mTVI__6^9Z + B-*DP+/t*D5R1;6XS&1ofTp"o=URr-NTK3c>Y?E)&H6PCA,!&r*__V.aP5`WtWZoqN_f@FU + &i([g3NusM0SI&"&ii#uZU<a]UY?:%qmN:>\%@ScYqed'<5^l88itM96us6AlPn'+_5/[!] + KAim!`q-&brg#N4G6M9@U??l?bF3k4O_SE6S0X#0.)%nQXeIW4BSpVDR3ej]lAQcK@r]B4" + "f,:$^T4X51JU@C-r&1d'e^,(i'8j@3WM.!nQ]Hfq?>ke<R%RNkS7qs5aWD)EGp54!2Or,< + S8EBbF`5:Nm&3h8.'>K:5Z$3U%CKD<KL^IP'qa0YZ51]48JAN"@S2Lr/"%"UY]cU]Sh83@# + G8^kaa\".Vr5^\AQN/8RfMC[rK8A#@%bRI+rj2gN)Sog&[%$<gnlTm#D\-%<(;hGQZ(<LY7 + aas4YPSqT=)P=qeXc&)sbapfPq*FqO64*uj*$S!+,>(!*b"Ce>"K"M%Va>d0+\\jfdMPTX. + n[H*9$/-rg@QQlY<r/k6O^4D9X6=W-qcZZ92%2e`&:8'kJMYJ_i(Xl7(Pae]0j.h6d#hK/$ + qt@[?NL5bS3@e,"50^6d.qdUm+<QHbI&`a?0c17%DCfXNMo#bXB\"7+tg4lQi=^cp\Aj73' + `&,h"N[A^*nK9jC^nC2-Ii18`j[7@`(#XP5*JgbYCAc.lW"lsD-1?o.]:4oF<R&X#UOjMk0 + \W,1V9FQ^YqMT1iR^64OP\r`@cm69$:^>Z'*ns6[V<_"*1M.?-I47l$7[`;VG7r.i<X8"/+ + ?a^Yp[OA.?`-f>LI@P\6^\!#k!R&7kYg=>*5W`h@jFoj(L/;B"^k6\:KSdL?MU8DJ5g+D3, + `Y.VO&5Fq_%>?e,a,u#PFh]:_,Q]9@Iq<UdPtHd8XkNroG^B7*(e9QakRq/llR?D+>*7.\K + iB03<MlA,g'+43IE27OUXpA.8$-Z\^W.?knctA/^!0,3\2sG5p8l@1.s2R\qDo'Uc$>,2,d + bh]%"8hK<IYI3CC`t_plApbeD!e^Vg1=`"N_EK=T2f]+ia`9O(%\C/)p"85+t6,ofN3j23u + Qbe.@m7-)Y3oh@QE;*;C)9e94;4]/li<P8ue9lsI]KiU?9>!6SL9tX_*c!%f^?C6CQc3.P# + &q3S$@a6f?W$Go\A)k:&k<<UM7Z?S$SE_rdlTV]B<g-BEh!Wb+n(,Z^<o!7Hl*4:cSA.d<[ + DV^aF`^E5FZ'DH:T\g\-$Uo/rR[fW5Q(Q5blHAMCHsCda@1VU9n?,FE56O88<&:!Q%`&0G! + NZ`aOQ)Ch2+toHbff4/=h_NZkM*PJjEZW=Uc-L)hqKI(tgqH=\@=4c'Glh*mrf3;=0f4'Ht + "<UKPhcg"dm`CaM/qVqMS-=rf"O`%&=QXBJ=Kg0H8@*%s?0YhG'j>+IB/F>LLcs'!SGg>/o + !KXe6RY03lM>9,cZ/N^R%4PNk!U]!B]$pmo$\jSuu<&M9e6bZN"^!pLfe8lYK[7NJ[9jB8C + gc\?DPYaKDdG/S8>^]I3lr:Y$em,=Vgq?_$6s2ZXg>)'u>l@hhS6`h74l%VQ7MXFe"CkIAf + 2`pE5"4.*7G9/\gGHi`?.+eJ^#)T=Pg8ic56UL6C[tNuo@F-;[B0&Q/G>R'pSp%F:Rbe-[< + Ks9GgFiMcfKLLn]K2[YVr7la>7Z`?%AtsDmpF9[jo&C9"m5_G0%RG/3Sfj;gPpkOLO&(d2e + 1n.tH#1O&8L>d9=r6Kbq7H)HfKI=]HD#]c:1'*?[Kd/aJKY*25GKjB9pm\QbCmCRD94Te=N + X3R"Naipp8No=>=(9)GBeQ)QF;VE0+33gHdF7BKKeX@n4,>6Z9*NNt764ki?2_u2c'D*M6O + \D*!/gR:Z;Wu"0@]Y")4e8;s"ID@s._,R8J-'cA'6c_B[d(H\6giFu.gWrSmd'F2)1F(@39 + \I*h2r+!b4cA#gj4iB9?!T<o4mcT^?!o&q@5M5#ehcF-IG37XgX^0)epZCUMblU\;<6QlAF + /fn>OaRkRpK'9.Ga.4@\MmgGcF57=)+[?b^CtCmSE,Njj\k5k$MIMdcLrB==.M7ESBPC$J8 + s&?a8VQHk0>VC#AW"?j2P"'GS&,ct;p:XY+SG1=kB*S1U$4dE:9XCnTIaGi79`kG0D,mX/F + ]'Be."g+Im6=rZZ>/m<.F@@AG)9JY>)L>h!F@I:2\SZcK:3]d8!@QocU40uij[4q;%bSq/R + Q+8VUPY>R(BjF04`\1#d*od^GZ7_Wjou-+O25V.]76S`W(-/7XU;_i1l:sL?(8aOFd-??Ol + CL>u6f1?Xi3YtUc;R3tp"?^T8^<f"5,I)T]2-GkC/3`djQ(6YG#-]O\`Fjnf+V@Q>?pL=ki + H@N2@K@>-GSZ-m8och5O2tK/b!?+C?=gajno8JAV&`E#2a8'?[BEPSb^X?qU!LaXA7!sh%/ + E0Ol-)#/B.]f7a^-PDp`W\_39[l:3,9@Q8lf'\DGiqY'2l9GZ##s69a.,jq(Ec&Q33R0#lc + ,74DYF.cFk.DB9WmhAK5b)D@uKiPdQ\e?r`F!D@=o;g#:J<pA?O2e^FK0Xd!?f'[5V-r^;Z + 6o2FC(+X)n]K>IM]E\"BIP93/`'hM^mrgJN_oV)m:2/ceDlq)jKi2EG;raW-n)c`4DEV!S4 + u86#A-H1J']3FHi3W\Uec,ha?ER<ZjMkutE0db>V;1RK9AT$Cet0:hk7:>n&8Qshl]cGUV/ + Yb0'A"TGa*,-lNkTLTqJh18lihZN(E1o/)or6$:_iNI-1]DGo;ccKneHc'I=pmGph!0Ak$8 + AWC^oaMM=Q@Xd10omY:@pXd,66go%)7B-SK*R#4i>TdD%HpSp#0Ef\j^k@+?FYioP$l38*s + Ng'6Bl/q,gpIo;kg6I+OnB0Y*m0%u'?iN@kqDMD(BLEa2r@J<7N$O#H03FXX5m^Gg;`pII5 + -Zmr.>DH!`VN^Z_nl/C_l#&-H7eL!s<b!2?Faj*q78;fB:Ldlan$cP,PuCqbrF<"*4[,ZAG + ,7X:!8Rli>npUZP<S\G?LUu`lIT]gFkHDbY[j)9n>0be[S1l3hq"pfWF$1ef!sfNjRFS.cW + :feIT:Ao^"6U-jb<&@QGCi()d`5Cn]o&HrI3*NJ*^J5AeT,q,mS$=$#Gl\nkFkc`J<fnr+: + S.AsEp>U$?ZpNH2JS=ROR.B$sOodrOgmEr;Bn<L)ra10JfW8bUe6pQesi+^)h=i9kp%Ap_s + ,I):Wp=slF92(Dd!i8JR)\e]mR"8j&;ItJko\3(<;"9cOA&3r?E#R5k]@":cj%Pn4g5l`T* + .2Dk-P"B2Y#Q+?'rIR6VO1BWMo`TZY*tUrTiX#704^a=A,L-ScTtqd(7t_K3"F!ceNn>S^# + j[('TT5JR&^^`&_&Ufl/V48hJiM\K-mOHPi3gB?n4*$^]**"W+H<lUC'`LE2B\!+r"6%6C; + CgM7\1e0dXj;`N<gan,6VXF)6cS@&XNW3B-</#,9dE6JhaX:7P#.."C]+`:dtr3#f)$Fi/? + eCpN$ID5o4K/e.Ha)>]CmEGTtiI[=TtjYXP&oAHZ,O(*.'4^'Lln.q"7U,-Sle<C%?R777_ + `l@LIXMHD'c#buu"^9C$7&O?Oq_%Y/c#Yq%GiWr8OK[L-"_'gH\JeI8j/:nM=OpFZ&KUN0< + +G>\3JeA>4*eG!F+W>qEOYR22TS-2K7%f3$?@iaP+Uir6W$)Fu&96,(5p1gf#XBMbr.]e6a + <:>2%u;A%Je(b"#X"c4_?`5rK=%e5%]CN6JduH:jFRjt&dUH>K6de^+G4L]JdmMYeq+?%+O + `@oK0fi"TS#!*18'7FrdkPl+N/j?-m6>o+G0Fq0-Gl3#VI6Oh'R^]80G3i$O@lY:*>.o#V) + L!U'N3@JsB)_$7I$iJdLW`SQI"dC'Z./Jm&F+="#2SJdD]*Ne.PY"c.YaL`hG(#Y6(jAfu[ + ,#To^jnd$;0J`X%d#A>6%Jd3\HEH!%O\d05tJZ8to+G$*7Jd+ag@Y+di+CBF;JT;#3TRgPX + (#Pr4<.Y9%+AdXmkTETQ+Fu!J&g2`D#SCMo+@:Y_#Tu<_"3;THNZ`l3#S!GWdKg9BW$!dG! + pCaXJc_kn.@;6.RKs3BJ;OU<B.+lDJcWq:#(iNrq@J.MBDNNrU$)7sVBT]R/rcLedJf/ukk + Y4>UtXNnPU/ir=F[0fqI-ZV8YU$l+6goHSfd4erh(@u&cSMBW\T[4.ED:RJ#WbMUjoD"qQ, + 1I*&=n(/'AP(Yb15)rj*^462n86lXqiZ/dmj/J$,^Gn:.W3qY5QDa85ne0ME]"`?4G<rl-& + HEW4$$m$DV41<dWmcQDN<rm2bS&cU3#m5L'T2,.RcfcTU<rn8I]Z2WN#mFSMt2pMMYiud\< + ro>0h;?#]"mWZt?3_lHSJ%Fh?["#]Cqn.Ek#Q)L<4HD;Fp)iJ!J"GWuHjBK<+6V"#T4ejd& + (1;?"8r1[oE7D*+TF^Er<*Z''aBb/%RLFtJ"\UrKnoLA+6[BfTu^,eOTH^pLnK6lEW1iNqC + E`P\::7ZEf?-T2Fe&BJ"s:JO,*Qs+6a&\Ue$Z2P!Vc4M*QQdnc"c.qG\R$=F[0'ZBg[5?;( + ZeJ#4t"R>:WP+6f_RVT@2TPCdgM_u2WWo^G)od/QmorBChc!?RI<KM]f>J#JM/UBgXU+6l+ + @W?M8;,[-L4$>E9Hof>=f!<6"crDF1!9L%&qS5i1d=">HnX@N,o+6qL.X+C8QV-:N5b5l$& + :l7OS3<*,+rFM&_RkC"Qd9:<cCle7n5M"Ke>GM.8O7gCGQQ"sjl_Sccp"2L\GlM(prHXIsl + Sb*@q-Rq8J$7i1^dn8(+7'\kY]9ZZB3PaPX?DE$p*;lTW;g>erJZg22F#j\r+#)IOg9!+ab + TaB+7-(YZI/Zpa87TbXNd3?G'6+'d/RaRrL]/q#XOn(6YPj5V6ngB70iW(+66k0[3i!+)Uh + r,D0V>/dULmbq(j,Re:3[*f%QU7E,JCt]/O2Z5KZOs.;eUg\+]s^gae/!j_TF3dJd5&CQ*9 + D8]j&+0]iafs"5Po\[glakZo.(FRH!TQneSK8,7p_m^_"47r7T6_3H,)>^r0(rat!`^3EEc + j#i*YC.J*#+6Kq[ReNEFSs.ZMcXH/ZdJe()q8"09%I_!n`;(K2k^<\(J"8=nF^K4WIP8tB^ + N]8J:FQ6*j8APap\b)b,R/f2.KpoVrdMo`rIPSE$,K^s#%64*6)4A`O7XY&@0@j/d%V7AUc + q#j#ld;&r=[!b@1=Be3/:>p)3=E)5LI"@7kk2j6qE:M,#h0*j8C6aoTh_iCf-'%;Cb1l[2+ + qXs%B-c09>bC(h3\ZN7"@W7\nm*dtn$!EPaZT39qUFb^5Cc%"G3Qrh8B]J<5p46qF9p,8@Z + f;^;68aXJG\AA"=oEct3XZ2UdoqQH-(MGm-(<@]A)]cZP;J#j7]YhI7=QEo@PbIMf'#Pujj + lVN)5Bn\6Q/B=/7/nM1Orjdg\kTB,jBh]JG2<N-;Rqpr3YG(s1-Oeq'PF?SgWS'?M@/jZQr + J45uj#q%fq4Da%I^0"RaG9X<TQCNn:l5uT.!6#3KDh8Mp2NMLSJS%Q#*(N@Matj.&o#8_P# + ?$keJb87,Qs!k&o(h,.?u`+[+_$KVV'WPks$RB't]P'LJ_eJI;cMAWKgAeiWoEYW`;p:39m + YLb=QPl,Q=jrqSMFNrF@QmoYA&3s&uI7DKZN,\<uk7mRR5!Y8-?:49pFEbo*F),Q>P^CCt$ + IK@$m#gtfZ+s(&4-QEq*Qn6*)`F5KOgZkePI553rKcKX4KDs2])gL"c)"9>lc`;-$M(-h3: + ]XQ6W#i$+$J^@XA+86i;gpfcYY&YCIYcN?140*MlbVFoSE>G;dG!GF)j1Mjm+[dj1OA[W&+ + 8<MEh`L-<U6YLGWFd`Cqtkm4%KhYeMZY;jgD\-3$c0>:36*!aT$utUO+[H@@B;I3U_Y%Ll: + "=ddJo&C4t2Y8:DPE;8ucFks2J0i)bN[nN`E[&Q)"@$A.40S-([P-b9:FJl$,G`AkpJd8n# + q+Wje</bTHXr/nOCc2!1B>?;'!i&,ahDZXi'c=hTD@AedBtrcQN^k'>98pr40"*hU@M6"it + %5q"(:AW40f;"=R\oT#-0Zr]mW$9$9'faQ?@IZ_#F:=Q[#*n:%a<>(a0fVtIGD%u*>CI3BM + S"@-g:$/30]m`q($\[/T4iLD[)7#/Qb]9hUX+rU7#<LS5o%N8#gFCWoMV<3t^bMt0gktB@C + @ZSKqZ>$pGcfc*B9odbR^$fqhWLor.jB=U.XS3P"V(Z_XpDAsf!K)DiFB=TVsNC.=FZ6:J' + KT.mP'1Z1q+kO\#:A/,R3=C0]]9nK?KL4%Tl'c>ilEiKr_;/la7([E/*e&]EihrLjm#K]'* + gfkc<KqX5o-'m0q:1MXI.PLq:A-^;,ielR:'EC_Vl1*0'C):G0_L%a;fRr534KmA1`gkn<D + 88<N78OtQ6'0(b?&pr4aJ`i2AqASU_<%`bPTa=1TgcPjmn,4]Q9Qcu%g%&Xf#2OP(:b:/t) + WM%Hi>4fq@oaK-8bgr9p?=6Q<SM+U#M;HPbiqGnnpPJP:blXOI$D:1PAP\>[Dj&Mj,19(1q + ?D?D7YIPAWmc]ee'G=qVP9nA]%"a*eITG@D,tI"`b_j&VWQ=)ERr^<in!L;rT]2W8s(0SJ8 + e59fT5O%-Pi_eqUoL.fr^kH._Kh[`?<F,FH*NZ:_^$E>-7?:ga?jlE$VULGctb-h.&e-Xks + 4r$@.OBH-P\6Xmk4E8?um<ZKJmY,Egu&$O*RtI>^`F:)JG?*9%NG[E&-P;Kh'`$KE`t#O?P + abC:q#7"W]TjNs"!#X5e^RcUJCjm\qSLg7Ot@-6NNk:Urd/&[4db_Qa^8+)2sd)<X(SA'fP + l(k3@m\:5,r/8c%N"3'cm^2;AkeW)1_@lG+B^G)gcO[*4O6eq^:>Cs!i9jGN`5s.@;\ngN0 + ^ioV&aX+o/8m;)#aI%P''t(5%#1'>B^uIKnkhZoWIDu=K(DF@o8c$L/@Lu5^7$]I?4Tg(0k + ANX^<O!%p'K%<:MCV]m%+XY3"L2)%sn!?LsTl<d.<FqaqFL\Po6\HU.m't:SOU]W7+'IqU) + PE#+liQ[i;N^C@AnW;9&N.=T".`D"5sP&_?nMhYi=^f*upFD1!f$koT<\+"%^DDtP3Upi8% + cX%f,<1()`emf:cL!>6/jEZ5%B*s'Dp!Xe.8;C_g30*9QWG]G^H8!P=G4!YA%,Y+aXM]d@E + :B]*E"VOj`Ea#fieKti7-;\0#:hI+1*o^(>ihP65Ed\1uJ:Wl;#Vq5BBIO4fLub^9.?7FqY + a[*RSqW?*$<!o3P-0PFZFf=G/!.4jd(:h7M_%NTM3?$jP0XQbdYb?]^M(/0d+^/ah_%IC/r + UF&P4&n/o+),k%nnJ>cI4I"fMQVl0X1p<koDK5&M\8>P0k,cmeH8B-LaH:&sFs]a^$]"1Gb + .P1WaJIb`nI#7help'U):Zdo+?qRl-=02:5Vd$*?*ZbaYqS(6`YPaibJ/jS!M/2t(crOb#K + 3KfH(33:Vtg0p&'uPgPPTq3.QKk'7kDWm`F\4"<SGbsNG080a2/*#$@TL;+_3b<7Fdr??F` + ESUMti,94gr\<X9B)qq2Rb2J:+,uF7Du1Xfruafh+HQgNcjFkk%]o''gQEQ2ithae,m#nMh + !cfL6U)el1F&,DhG?>kULtik73o64hlol6"-4ai=!c@$i=KBY0P)T8BdW$;-STNfE--VLGd + d#sj0FF#"9SpmNsO0sK<ggM;O[uK9*re:8a^3uDJV`sYmU'09+H@XNe0d,_[I0u9J2M;Y*_ + g:eI=:e9hqYscE9jHk71DU:2[fVjR3U7q%%NDO0\ito*#[S$P7,BmOm`Y:@;'N(GX;V1'p0 + #;'RiY-C"$Ma-A(C;)IgJ3A^#bnkUbmO"e_?;&&V%<6moHO%<R*@ho_j<UX'+V?%J(FVciY + S^W!'Z[iqWm2.DRpWnIP%u=d/P<"bl3Q`L+&YD*]U8&<u=n/Ut0s`s$7/N7Q4>jHL;97:mc + Wfqheoeqpe]BuaF$<UQ5)0#"b*`2"o[rX,???-QZi\qQ#@CF;F;,4dckA]^])f>H65C"s:! + 3TTd3BDE6T,rPD;bSVk9Mr76rkm-NV<RXr?YK)7<Ug_XpkQ['"$4\[4lB-%OVK<F_.q*AaV + Kh1kTCR-"a35#ki<#0UG@SI7^ktjtNOlP-&E)X(_..kE*(6o"SnG]kR,SkjZUV;UK6dcYE+ + #l;6-uZK#`-iG8)Hl`f[@$mTSi.1_`mm83m[p>&P'i9jY-:tFinQL)T<*H+^S&lg)nod+Q1 + &JGZk1Tqm!;aD)i3qCZfo-Leabc^Q@5rGi8bZ?@>Y>Fn5D"ZC?<gPsMcY6Gs7or:H=,d(pF + b'6aO*.jgFnLdj<KhTkQD2oudgrE>#*A]H7<c/>V,aarZc@<ScZmTIr9\$mQ,]`jh-B>lr_ + r,gPODf%M-^kk?:Q)DMR*9tnCg\F5h5`t(&lrg"$s@"FuB]1D8tAZ/DVfS@B0Icc/U&9kcp + F'Z0h,>P#1'%2.N[Ji/S<p/eqo=B4SAaiY6<B<-!LGG.,bG8+&MG<bY*jD+MrH8JZMA84Q7 + 0T]PTQ.ZS8UG)X&YFQ]s@kR5jRbLl$]OY"eD^@nYC:8$lmhWi;mCWm@UDS7\5_ebS-Ct/+D + o_E?Gr/c%$`%_WrNp@98lVTS/;/Z8.[eWeb92[<anBVb(D]$RI%l?8jEH=j6<C_'%9(VRPo + M]+;[97PC>kLs+orQtjXQ(*u6MBqt=*IA?[nuhn<EN=)TXS1RELCuGRi3$0G4hDh7ZDV5[a + Yhpe9Nip3B%p\3ulCTeeaI5GF+Q%bh#YKf;b$\EU]sZX^3KZQ?!&-H#5g(a*^c!XV]/g9&Z + .8-XdmPIHQ6N0K!;WRssOqRLhu!)6&,K_j^'tA/Vk,q7V>;:?!sFieqH>dXJYCdq27(K(># + 5\2?i.S"?p\BK>[;LhE?AZ"Z6"KntMWE5QEO%u,n<Ths9T3ZX!3a.b9NCcX)&RPBWLd-VDB + m;+q]'+Dg*7rE-EMN]+$(p?f\EM`7]E*?n50ft>Z3:`1uo(mHqR+E&h,E;PQR[E1P2`$KJQ + &dtoF:W.'O)WEj"#u8@OI'"q)RVT-)lpB2d^^LsEN8lG.6CZaXRj'+0ticJ_l^8g>I2_A'@ + i=Efp%WUW&[X;HM*PIWBVtls"0A;(U]Qomb/3Tg3X9q=3!U$[fL?ZZ'Wq,D980P/"#fZZ?@ + ==PWO?D6%97_ZWHrjfDS,t!4/.\J<XDkdV"+DCpeL(7iPHZq9MRV3=$*Z[MdhP(3&@(P3#n + bKA#VR)=^<Zoa8<XBc'cA3*/b?>.o9>L,?l(FN]E>o=7tE9mCkVfQt@1TnkPiLiW0EZMMGj + O\`TsM4-e.DW_T!mCX?5MRN*Ed3.p?c&6mUnG6]og1^$2fl7NMEE,5CO\<ET+fG!/W&7SRC + rsG<O&d0_2]A#AD!.eJF25A`OB$c)&W6@2(QfWFFt]1"c^hp6_id,2P%m:,S25B<^N^)g_p + ?0$e\/nD_*+-LVqb-53q8IoV8^%A?2S2Z).ggW"[H=4QP[Q[HP'X*Ish'EaBK[5PUV%107F + 90ZCI7j1d>Gr0n23XhcZjFq5XZ\5@aVtA2IecX&7'iD7(3"S@lnMQ=8#5f7Mf.[T&=4fK#O + nj0ojm8f1&jGY5T[IEtrZ96Q`5=C%S[NM+eATb,P\2R1XF[8"*?\_)>)::[*`l_;J^dWWsb + ]<?'UZS6a8:g:Q\Pmc'i)8%lt]R<:gI7l?-cVf#$;RjPA(rXN7DnYg,^,89UCotFbDfSiVE + gu[!R-+'$lW-"5S:-*4rJA<k7DP+>^t!kL*LBkkRlO^kFrVOV=(g6NVnuB7=r]+t9g;gF]i + rFV_mQkCgd-1riKQ4:D7iYL]Ml!+dB>:jYB06;]O=$PAKTY/?J>_)p%-3Z&$Y[>YrmG#S:M + k')drXM@5KQEHR4,$Phl/'6eS"5)`(t$V.2>Z@s^@h3O%GP[72%DIN5t1gqU5i;meB+[<-c + ']Zited3uV:B)?5c[WTjcS[S0]jq`YC<f+;Q9qS-[s$Qi/k]e9i#_djR+G`!n&Hr;&_%7/F + r)sATJfeBUa<BsWHB>rR0LNbimfY^ETSHVmdKjoG*2&')X:X=n2o,sM6YuT)Ck<S`L8Z8mN + s%:*%.HV@&Bb23<1nt*+c6P6Jf$"W6MqD.">7LuO@%cl#[2fq@"jC[?Jbl95mjh_U_'F,.: + /[$(a23O:P'7aE'e@PR04hP$!>7l-4!.o&`A=U+Vud7,!cKR650u`TRm^tKD6Sc#X*bM2/k + k:&9S*q_$:oM+PmA^Jdl+?80H6.";sK00L:@'?c[g,TRtf=Z3VuE_$*Y$9Ft&('>Xh-a<6c + S,_?<[JhJYd6Ndrd"7SSJ&3KB5#9\T-+DM0"r4rIH5e74/+FpHt$:'Ci-@u:i+<lC=&8DIU + TR_%g#,$KU#R/*O+;BD.-m0(Q!:^C%"!E+D#Qc-!*)qLi80@uWLo:/`)Fh!15_#EI+o6d4L + `uL7TSLr$I%Z83#^aZ!+mae%W$1AV*bZ_Y.A2HR#^@JIH3e^fL`tK(*JbliJfRB*dkdYP63 + qY*LGB-Uc3PT7JfJGI`.AsW+i-=7LAD0o+GT.eDGZ-4[XoGh+gQ\=#U-BATSB`XC7p<U#\h + `n+f'].-m>78)>+=BB-;qD#\G36=pS\>L`qq5)$hCGJf*%<#\'H]+p_VML(Xc"fE`XNJf!V + oI"E0C8dJ`GL"Zf<+GIrD>Zuq,DLrYF+_lTEQKe`YTS8O7=J1A%b^pSn+^BU6W$,8p'mGN@ + <?Quf#ZMq#4nO=?a<=0-'Smo%JeV<:#Z.1J!XMSpK_?C;'<!'6JeMf@1kHB#ap:Z`KXqF^+ + G?mcJeEk_-@uk$+X<8FKRsJ"TS.=k7\GEHCk<74+V]M?-mAkH+G_cOKHKDTre;NYG*Ie,8> + 7efU?DA0J"qeq4Fa.3qF.N^M)%nn+6cr-QQPICrg=kmU&LNuM8FA+-jTTtJ#Gm6LjuADqN8 + Ij8n+<h.YmktJ#^QcY^`]DqROSGb6#Vf/I2-tJ#u6;fRL$DqVf]%9;:dc08KDtJ$6oi!.V4 + Cq[(fWbX3)b+7*_@a<0c2rlQ>LZ2VskN70c41e7F0J$b".9RjGTqc&'QSnhT`2GLIUg7RcK + rnS[`iVq^VmK^D`30#eZJ%6s(R")Zeqk/GM?YcV+3tB`PJ%MWU^jj!eqoF9"hs'>f8$M_0+ + oZjZq=GclfRKNErdLMSr'/7'!?bhMJOfPB+6Y,&TY^V[T^!(T85Ta<U&Kd:qA^U@G^lFgre + R7_,Xf_I((^%<5LFHM7Lnr+,A;=\dD@pdkjX(siVno_.RH[_)'ogcP!@B&s%1-,-kGsG5LQ + ?.9$(Kn-/nii8,?U8l%jhd62m:-qIkiPWAZ*aj?M+Ls%\4F3tLuQ5L\!Z:QaU#-j9aIL\c] + Hl6(STU&LelqMlZ_6:@e!.&E0Ts&10@:(R"[5Lfc6<)R.&.V2GVQ#Qb'U]":*ojg;;T`8'@ + Tj0+EGd!DEs&^NE@Lr-j5Lr+"=]43j/ENP3QE^BmU]#!>os?s7i;[$1+`K%[aLVWQk9'#gJ + $-We]8-7P+7%'cY=7fl(Z>=#A,Ulfp&I>0&H?-jrI[kB&AjfE&0L7$J$C0r`<Z8U+7*BbZ) + RH;)"Sk\KDgpnp.R^(5lYC_rK^9W>g+(L1hQphRud8b5M=upB?^X?1cC6=g.P(QA41p01&a + UFMbn/J=faKX\CV$8s!6Y&PdVpUfipOPD/H\hPEGi>a8%l9D99CKL@j@BiCb9S1k1b[r`!, + AJoK!Y`AkmT=3(,F+6AH2Q<,EoS?nT(:3"Pq1&bHKq0*qBjjCXe9^3WsXEB7;J!cAt@bm6Q + G-9ZV]=3+T9\BA$U\rHN2h^^m6cs\83Th=NrbP+#Z[.[,lb/XnpKmaS3+MmGO7SD-?R+c_: + U0XXj/P>h\GnW8r9_7#kl)[Qr.!&foT/Up5L4$C4n'3g5_p-W+ES)XU\t.QoE%8(*#4'e@L + YWE4U7()s$C5o$BOg4$"5)-Ki#&k6KCa'd5_.p0[^iVG]FC)gc\-CFW@/"r/?Er1*;k!)%X + @AN/,h:+#i-r%u^.?LUo5^fE2.C"CsY-ORp9_-7^;aif&YI%Rrh##brQuN/)9d7ROKjUES6 + E&Wl9I6_tY1N(8^ppub+6R2HK>=,UR?1)tPT)%J30N/%`q*#RWP%K(C.L@R)=\H*QWb_D(2 + hF9t%Bc.AEA2Z2\:Q['HCEk"'PqoTD)MlIKjeQEDZKa1`.*-(6,\/_&.P_m_aCaS1A2=gZb + K]7lAS39!1/X.ScM?U$,9`#)L+[r%"8lUQ+bkr1(5C3L_&3Xj(6!tHN^cA2)%57IN.p7H(O + BL-$`u=GKuu.e)M:m\,\/KhOL<U7VIUnpArMG0Y1<^Q=JI$IN.l_hf+Ujr$JflaKjlePHN= + ukXbMdg8hq,#+W1W8QAgMQ1).>fBhi2L.++-NgA>E1MA0SL&WiX>kf?P;,\/9H.P_ZnaA)) + uA1"d#1(u(W9Ht]6]f31q'$/-dn#cCO&Wi2G6;)ju3Y[O+Jhdr9+W1RR(6!o]1(g$B)$mr' + N.b7J7RAC=#_Z_3q!T;<Lr_oX+UQ7N1J1,'$^@D0"3V:<J4;j)R%kf&bn6%c7R?X9UEK<W& + Wh>%kf>l]+Rk>B^IIGsM&?OtA0!^L:MgBY3?o[,eN0r7%LC-7oqZ+;]';$[W5pl?,\.h@OD + =.Ga>EUdA/Z&ABC5Z;V5#0UN.WL$mg^'M"sd^rHgcH(BZMk%,\._(.P_C1a=__5A/<RS>4L + gt/GUQ%((lX0o)<0LKk+^/;34cKre@eT+JasJO/DR[SJ_S&A.uXk1't\2)$J8tN.P4g$!uR + ."J9jrJjM3urrEu?Dhl^B`T[+>-fo`jRIblOch\_Rl$YdqomXC%q]BJ<ID<>eIeVat+,BB8 + 5KW_N2s:,]VtGMRg&$8Cn,=ELq0tWnrI;<Nru^G&J%tgV#RC~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps b/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps new file mode 100644 index 0000000..3fa36c5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-ps-level-3_expected.ps @@ -0,0 +1,134 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Tue Apr 7 23:58:53 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 53x53mm 150 150 0 () () +%%BoundingBox: 37 37 113 113 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x53mm +%%PageBoundingBox: 37 37 113 113 +150 150 cairo_set_page_size +%%EndPageSetup +q 37 37 76 76 rectclip +1 0 0 -1 0 150 cm q +q +37.5 37.5 75 75 re W n +[0.75 0 0 0.75 0 0] concat +/CairoFunction + << /FunctionType 2 + /Domain [ 0 1 ] + /C0 [ 1 1 0 ] + /C1 [ 1 0 0 ] + /N 1 + >> +def + << /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [ 50 50 150 50 ] + /Extend [ true true ] + /Function CairoFunction + >> +shfill +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-width_expected.png b/testfiles/cli_tests/testcases/export-width_expected.png Binary files differnew file mode 100644 index 0000000..f05cecd --- /dev/null +++ b/testfiles/cli_tests/testcases/export-width_expected.png diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.emf b/testfiles/cli_tests/testcases/export-with-filters_expected.emf Binary files differnew file mode 100644 index 0000000..ef5d7d9 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.emf diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.eps b/testfiles/cli_tests/testcases/export-with-filters_expected.eps new file mode 100644 index 0000000..a1559b3 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.eps @@ -0,0 +1,122 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:41 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 150 75 +%%EndPageSetup +q 0 0 150 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +q +0 0 150 75 re W n +[ 150 0 0 -75 0 75 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 3 + /InterleaveType 2 + /DataDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> + /MaskDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 1 + /Decode [ 1 0 ] + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> +>> +image + Gb"0LYml4K!5lV0JGlC"dZfh?MWBs[8C#%o^E!2kgZRMR@eCIkJqo97<u_Pg/ll>!.!W7(I + Dqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=ob + E76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3 + ^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aTh + pGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^ + i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJ + qo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6 + Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W + 7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m + =obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;> + eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`>< + aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!V?]6dS>#~> +Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.pdf b/testfiles/cli_tests/testcases/export-with-filters_expected.pdf Binary files differnew file mode 100644 index 0000000..c3df07b --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.pdf diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.png b/testfiles/cli_tests/testcases/export-with-filters_expected.png Binary files differnew file mode 100644 index 0000000..d988a05 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.png diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.ps b/testfiles/cli_tests/testcases/export-with-filters_expected.ps new file mode 100644 index 0000000..13f6215 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.ps @@ -0,0 +1,159 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.15.10 (http://cairographics.org) +%%CreationDate: Fri Apr 10 23:27:41 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%DocumentMedia: 53x26mm 150 75 0 () () +%%BoundingBox: 0 0 150 75 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 3 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 53x26mm +%%PageBoundingBox: 0 0 150 75 +150 75 cairo_set_page_size +%%EndPageSetup +q 0 0 150 75 rectclip +1 0 0 -1 0 75 cm q +1 0 0 rg +0 0 75 75 re f +q +0 0 150 75 re W n +[ 150 0 0 -75 0 75 ] concat +/cairo_ascii85_file currentfile /ASCII85Decode filter def +/DeviceRGB setcolorspace +<< + /ImageType 3 + /InterleaveType 2 + /DataDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 8 + /Decode [ 0 1 0 1 0 1 ] + /DataSource cairo_ascii85_file /FlateDecode filter + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> + /MaskDict << + /ImageType 1 + /Width 200 + /Height 100 + /Interpolate true + /BitsPerComponent 1 + /Decode [ 1 0 ] + /ImageMatrix [ 200 0 0 -100 0 100 ] + >> +>> +image + Gb"0LYml4K!5lV0JGlC"dZfh?MWBs[8C#%o^E!2kgZRMR@eCIkJqo97<u_Pg/ll>!.!W7(I + Dqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=ob + E76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3 + ^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aTh + pGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^ + i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJ + qo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6 + Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W + 7(IDqo<iF;HpLOt;>eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m + =obE76LPs\a*"!`><aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!.!W7(IDqo<iF;HpLOt;> + eQ3^t*\LK#E@?(A=FJ/^i8J/<'o.BrMq(lK$6Cg#?Z@K=\6+0uU#=m=obE76LPs\a*"!`>< + aThpGdpk(`M)5K@eCIkJqo97<u_Pg/ll>!V?]6dS>#~> +Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.svg b/testfiles/cli_tests/testcases/export-with-filters_expected.svg new file mode 100644 index 0000000..6b40fb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="offset.svg" + id="svg11" + version="1.1" + height="100" + width="200"> + <metadata + id="metadata15"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + id="namedview13" + inkscape:window-height="480" + inkscape:window-width="640" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <defs + id="defs5"> + <filter + height="200%" + width="200%" + y="0" + x="0" + id="offset"> + <feOffset + id="feOffset2" + dy="0" + dx="100" + in="SourceGraphic" /> + </filter> + </defs> + <rect + id="rect7" + fill="red" + height="100" + width="100" + y="0" + x="0" /> + <rect + id="rect9" + filter="url(#offset)" + fill="blue" + height="100" + width="100" + y="0" + x="0" /> +</svg> diff --git a/testfiles/cli_tests/testcases/export-with-filters_expected.wmf b/testfiles/cli_tests/testcases/export-with-filters_expected.wmf Binary files differnew file mode 100644 index 0000000..830da28 --- /dev/null +++ b/testfiles/cli_tests/testcases/export-with-filters_expected.wmf diff --git a/testfiles/cli_tests/testcases/export_hints.svg b/testfiles/cli_tests/testcases/export_hints.svg new file mode 100644 index 0000000..87c06f5 --- /dev/null +++ b/testfiles/cli_tests/testcases/export_hints.svg @@ -0,0 +1,7 @@ +<!-- Note: inkscape:export-ydpi is actually ignored, see src/ui/dialog/export.cpp and src/io/file-export-cmd.cpp --> + +<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="190" height="80" + inkscape:export-filename="export_hints_drawing.png" inkscape:export-xdpi="111" inkscape:export-ydpi="222"> + <rect id="rect1" x="10" y="10" width="80" height="60" fill="#00f" inkscape:export-filename="export_hints_rectangle.png" inkscape:export-xdpi="123" inkscape:export-ydpi="456"/> + <rect id="rect2" x="100" y="10" width="80" height="60" fill="#f00"/> +</svg> diff --git a/testfiles/cli_tests/testcases/filter.svg b/testfiles/cli_tests/testcases/filter.svg new file mode 100644 index 0000000..6111da3 --- /dev/null +++ b/testfiles/cli_tests/testcases/filter.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="230" height="120" viewBox="0 0 230 120" xmlns="http://www.w3.org/2000/svg"> + <filter id="blurMe"> + <feGaussianBlur stdDeviation="5"/> + </filter> + <circle cx="60" cy="60" r="60" fill="green" fill-opacity="0.1" /> + <circle cx="60" cy="60" r="50" fill="green" /> + <circle cx="170" cy="60" r="50" fill="green" filter="url(#blurMe)" /> +</svg> diff --git a/testfiles/cli_tests/testcases/gradient.svg b/testfiles/cli_tests/testcases/gradient.svg new file mode 100644 index 0000000..3f5ab8c --- /dev/null +++ b/testfiles/cli_tests/testcases/gradient.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"> + <defs> + <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%"> + <stop offset="0%" style="stop-color:yellow" /> + <stop offset="100%" style="stop-color:red" /> + </linearGradient> + </defs> + <rect x="50" y="50" width="100" height="100" fill="url(#grad1)" id="gradient" /> +</svg> diff --git a/testfiles/cli_tests/testcases/lambda-background.svg b/testfiles/cli_tests/testcases/lambda-background.svg new file mode 100644 index 0000000..50b9fb2 --- /dev/null +++ b/testfiles/cli_tests/testcases/lambda-background.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="150" height="100"> + <sodipodi:namedview inkscape:pagecheckerboard="true" inkscape:pageopacity="0.75" pagecolor="pink" /> + <rect x="0" y="50" width="50" height="50" fill="red" id="red" /> + <rect x="50" y="0" width="50" height="50" fill="green" id="green" /> + <rect x="100" y="50" width="50" height="50" fill="blue" id="blue" /> +</svg> diff --git a/testfiles/cli_tests/testcases/lambda.svg b/testfiles/cli_tests/testcases/lambda.svg new file mode 100644 index 0000000..ef3d688 --- /dev/null +++ b/testfiles/cli_tests/testcases/lambda.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> + <rect x="0" y="50" width="50" height="50" fill="red" id="red" /> + <rect x="50" y="0" width="50" height="50" fill="green" id="green" /> + <rect x="100" y="50" width="50" height="50" fill="blue" id="blue" /> +</svg> diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr Binary files differnew file mode 100644 index 0000000..ccdb02a --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr Binary files differnew file mode 100644 index 0000000..4a74dbc --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png Binary files differnew file mode 100644 index 0000000..94c3166 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png Binary files differnew file mode 100644 index 0000000..b3ee3e4 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd Binary files differnew file mode 100644 index 0000000..a526a70 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png Binary files differnew file mode 100644 index 0000000..43ba022 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx Binary files differnew file mode 100644 index 0000000..ef8f6a1 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png Binary files differnew file mode 100644 index 0000000..5f1bdfa --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg Binary files differnew file mode 100644 index 0000000..02e1b82 --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png Binary files differnew file mode 100644 index 0000000..aa5ac9e --- /dev/null +++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png diff --git a/testfiles/cli_tests/testcases/multiline-anchoring.svg b/testfiles/cli_tests/testcases/multiline-anchoring.svg new file mode 100644 index 0000000..0af70d6 --- /dev/null +++ b/testfiles/cli_tests/testcases/multiline-anchoring.svg @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="200" height="2200" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + version="1.1" + viewBox="0 0 200 2200"> + <g id="grouped_text" style="font-size:40px;line-height:1.25"> + <text x="50" y="400"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="50" y="600"><tspan + sodipodi:role="line">up</tspan><tspan + sodipodi:role="line">down</tspan></text> + <text x="50" y="800" style="writing-mode:vertical-lr;"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="50" y="1000" style="writing-mode:vertical-lr;"><tspan + sodipodi:role="line">left</tspan><tspan + sodipodi:role="line">right</tspan></text> + <text x="100" y="1200" style="writing-mode:vertical-rl;text-orientation:upright"><tspan + sodipodi:role="line">أبجد</tspan><tspan + sodipodi:role="line">أبجد</tspan></text> + <text x="100" y="1400" style="writing-mode:vertical-rl;text-orientation:upright"><tspan + sodipodi:role="line">right</tspan><tspan + sodipodi:role="line">left</tspan></text> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/cli_tests/testcases/offset.svg b/testfiles/cli_tests/testcases/offset.svg new file mode 100644 index 0000000..caa96e4 --- /dev/null +++ b/testfiles/cli_tests/testcases/offset.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg"> + <defs> + <filter id="offset" x="0" y="0" width="200%" height="200%"> + <feOffset in="SourceGraphic" dx="100" dy="0" /> + </filter> + </defs> + <rect x="0" y="0" width="100" height="100" fill="red"/> + <rect x="0" y="0" width="100" height="100" fill="blue" filter="url(#offset)"/> +</svg> diff --git a/testfiles/cli_tests/testcases/path.svg b/testfiles/cli_tests/testcases/path.svg new file mode 100644 index 0000000..57c27b4 --- /dev/null +++ b/testfiles/cli_tests/testcases/path.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="1000" height="500" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> + <path d="M 10,30 + A 20,20 0,0,1 50,30 + A 20,20 0,0,1 90,30 + Q 90,60 50,90 + Q 10,60 10,30 Z" id="heart" fill="indigo" /> + <path d="M 10 410 + V 490 + H 100 Z" id="bottom-left-corner" fill="firebrick" class="corner" /> + <path d="M 910 410 + H 990 + V 490 + H 910 + L 910 410" id="square" fill="crimson" /> + <path d="M 910 10 + H 990 + V 100 Z" id="top-right-corner" fill="deeppink" class="corner" /> + <path d="M 300,200 + h-150 + a150,150 0 1,0 150,-150 Z" id="arc-big" fill="red" stroke="blue" stroke-width="5" /> + <path d="M 275,175 + v-150 + a150,150 0 0,0 -150,150 Z" id="arc-small" fill="yellow" stroke="mediumblue" stroke-width="5" /> + <path d="M 500,450 l 50,-25 + a25,25 -30 0,1 50,-25 l 50,-25 + a25,50 -30 0,1 50,-25 l 50,-25 + a25,75 -30 0,1 50,-25 l 50,-25 + a25,100 -30 0,1 50,-25 l 50,-25" id="gates" fill="none" stroke="royalblue" stroke-width="5" /> + <path d="M 475 175 + h 50 v 50 + h 50 v 50 + h-50 v50 + h-50 v-50 + h-50 v-50 + h50 Z" id="cross" fill="mediumseagreen" stroke="darkgreen" stroke-width="10" /> + <use href="#heart" + xlink:href="#heart" x="450" id="clone" fill="red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/pdf-mesh.pdf b/testfiles/cli_tests/testcases/pdf-mesh.pdf Binary files differnew file mode 100644 index 0000000..8d4c29c --- /dev/null +++ b/testfiles/cli_tests/testcases/pdf-mesh.pdf diff --git a/testfiles/cli_tests/testcases/pdf-pages.pdf b/testfiles/cli_tests/testcases/pdf-pages.pdf Binary files differnew file mode 100644 index 0000000..758c2b1 --- /dev/null +++ b/testfiles/cli_tests/testcases/pdf-pages.pdf diff --git a/testfiles/cli_tests/testcases/pyramids.svg b/testfiles/cli_tests/testcases/pyramids.svg new file mode 100644 index 0000000..30ac82a --- /dev/null +++ b/testfiles/cli_tests/testcases/pyramids.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="185px" height="100px"> + <rect x="4.888" y="5.333" width="175" height="90" fill="#fff" stroke="#000" id="rect_misaligned" /> + + <rect x="10" y="10" width="80" height="80" fill="none" stroke="#000" id="rect_1" /> + <rect x="15" y="15" width="70" height="70" fill="none" stroke="#000" id="rect_2" /> + <rect x="20" y="20" width="60" height="60" fill="none" stroke="#000" id="rect_3" /> + <rect x="25" y="25" width="50" height="50" fill="none" stroke="#000" id="rect_4" /> + <rect x="30.5" y="30.5" width="40" height="40" fill="red" fill-opacity="0.2" id="quad_1" /> + <rect x="35.5" y="35.5" width="30" height="30" fill="red" fill-opacity="0.2" id="quad_2" /> + <rect x="40.5" y="40.5" width="20" height="20" fill="red" fill-opacity="0.2" id="quad_3" /> + <rect x="45.5" y="45.5" width="10" height="10" fill="red" fill-opacity="0.2" id="quad_4" /> + + <rect x="95.5" y="10.5" width="80" height="80" fill="none" stroke="#000" id="rect_snapped_1" /> + <rect x="100.5" y="15.5" width="70" height="70" fill="none" stroke="#000" id="rect_snapped_2" /> + <rect x="105.5" y="20.5" width="60" height="60" fill="none" stroke="#000" id="rect_snapped_3" /> + <rect x="110.5" y="25.5" width="50" height="50" fill="none" stroke="#000" id="rect_snapped_4" /> + <rect x="115" y="30" width="40" height="40" fill="green" fill-opacity="0.2" id="quad_snapped_1" /> + <rect x="120" y="35" width="30" height="30" fill="green" fill-opacity="0.2" id="quad_snapped_2" /> + <rect x="125" y="40" width="20" height="20" fill="green" fill-opacity="0.2" id="quad_snapped_3" /> + <rect x="130" y="45" width="10" height="10" fill="green" fill-opacity="0.2" id="quad_snapped_4" /> +</svg> diff --git a/testfiles/cli_tests/testcases/rects.svg b/testfiles/cli_tests/testcases/rects.svg new file mode 100644 index 0000000..3d90ef1 --- /dev/null +++ b/testfiles/cli_tests/testcases/rects.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px"> + <rect x="10" y="10" width="80" height="80" fill="#f00" id="rect1" /> + <rect x="110" y="20" width="80" height="70" fill="#0f0" id="rect2" /> + <rect x="210" y="30" width="80" height="60" fill="#00f" id="rect3" /> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-1364.svg b/testfiles/cli_tests/testcases/regression-1364.svg new file mode 100644 index 0000000..d37767c --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-1364.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + xmlns="http://www.w3.org/2000/svg"> + <g + id="layer1"> + <path + id="small" + style="fill:#00ff00;fill-rule:evenodd;stroke:none" + transform="scale(2)" + d="M 0,0 H 50 V 50 H 0 Z" /> + <circle + id="large" + style="fill:#ff0000;fill-rule:evenodd;fill-opacity:0.5;stroke:none" + r="100" /> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-1364_script.py b/testfiles/cli_tests/testcases/regression-1364_script.py new file mode 100644 index 0000000..0d3b12a --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-1364_script.py @@ -0,0 +1,31 @@ +from lxml import etree + +def d_cmp(orig, new): + """ Compares the original d attribute to the new one. """ + orig_list = orig.split() + new_list = new.split() + + if len(orig_list) != len(new_list): + return False + + # Normalize the final 'z' to uppercase: + orig_list[-1] = orig_list[-1].upper() + new_list[-1] = new_list[-1].upper() + + for (o, n) in zip(orig_list, new_list): + if o == n: + continue + numeric = "{:.0f}".format(float(n)) + if o != numeric: + return False + + return True + +document = etree.parse("regression-1364_output.svg") +layer = document.find('{http://www.w3.org/2000/svg}g[@id="layer1"]') +boolop_result = layer.find('{http://www.w3.org/2000/svg}path[@id="small"]') + +assert boolop_result.attrib.get("transform") == "scale(2)" + +assert d_cmp("M 0 0 L 0 50 A 50 50 0 0 0 50 0 L 0 0 z", boolop_result.attrib.get("d")) + diff --git a/testfiles/cli_tests/testcases/regression-2602.svg b/testfiles/cli_tests/testcases/regression-2602.svg new file mode 100644 index 0000000..0611017 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2602.svg @@ -0,0 +1,9 @@ +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" + width="30" height="50" viewBox="0 0 30 50"> + <text id="parent" style="fill:#0000ff"> + <tspan style="fill:#ff0000"> + <tspan x="10" y="20" style="fill:#ff0000">R</tspan> + <tspan x="10" y="40" style="fill:#0000ff">B</tspan> + </tspan> + </text> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-2602_script.py b/testfiles/cli_tests/testcases/regression-2602_script.py new file mode 100644 index 0000000..1a5480f --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2602_script.py @@ -0,0 +1,10 @@ +from lxml import etree + +document = etree.parse("regression-2602_output.svg") + +parent = document.find('{http://www.w3.org/2000/svg}g[@id="parent"]') +paths = parent.findall('{http://www.w3.org/2000/svg}path') + +assert parent.attrib.get("style") == "fill:#0000ff" +assert paths[0].attrib.get("style") == "fill:#ff0000" +assert paths[1].attrib.get("style") is None diff --git a/testfiles/cli_tests/testcases/regression-2797.svg b/testfiles/cli_tests/testcases/regression-2797.svg new file mode 100644 index 0000000..cb62158 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2797.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="100mm" + height="100mm" + viewBox="0 0 100 100" + version="1.1" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg"> + <defs> + <rect + x="2" + y="2" + width="96" + height="96" + id="theshape" /> + </defs> + <text id="parent" style="font-size:4px;shape-inside:url(#theshape)"> + Outside tspan + <tspan>Inside tspan</tspan> + </text> +</svg> diff --git a/testfiles/cli_tests/testcases/regression-2797_script.py b/testfiles/cli_tests/testcases/regression-2797_script.py new file mode 100644 index 0000000..639bff4 --- /dev/null +++ b/testfiles/cli_tests/testcases/regression-2797_script.py @@ -0,0 +1,17 @@ +from lxml import etree + +document = etree.parse("regression-2797_output.svg") + +parent = document.find('{http://www.w3.org/2000/svg}text[@id="parent"]') +tspan1, = parent.findall('{http://www.w3.org/2000/svg}tspan') +tspan2s = tspan1.findall('{http://www.w3.org/2000/svg}tspan') + +# Expect outer tspan added as SVG 1.1 fallback with x/y position. +# Expect no inner tspan with incorrect "font-size:medium". + +assert len(tspan2s) == 0 + +assert parent.attrib.get("style") == "font-size:4px;shape-inside:url(#theshape)" +assert tspan1.attrib.get("style") is None +assert tspan1.attrib.get("x") == "2" +assert tspan1.attrib.get("y") is not None diff --git a/testfiles/cli_tests/testcases/shapes.svg b/testfiles/cli_tests/testcases/shapes.svg new file mode 100644 index 0000000..61ad01d --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="400" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <g stroke="#000"> + <rect x="10" y="5" width="160" height="130" fill="#00f" stroke-width="2"/> + <ellipse cx="275" cy="130" rx="120" ry="100" fill="#f00" stroke-width="4"/> + <path d="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" fill="#ff0" stroke-width="6"/> + </g> +</svg> diff --git a/testfiles/cli_tests/testcases/shapes_expected.emf b/testfiles/cli_tests/testcases/shapes_expected.emf Binary files differnew file mode 100644 index 0000000..4bf1faa --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.emf diff --git a/testfiles/cli_tests/testcases/shapes_expected.eps b/testfiles/cli_tests/testcases/shapes_expected.eps new file mode 100644 index 0000000..fe91e4d --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.eps @@ -0,0 +1,109 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Feb 22 20:44:27 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 291 220 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 291 220 +%%EndPageSetup +q 0 0 291 220 rectclip +1 0 0 -1 0 220 cm q +0 0 1 rg +0.75 0.75 120 97.5 re f +0 g +1.5 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +0.75 0.75 120 97.5 re S Q +1 0 0 rg +289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5 + 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5 + 289.5 53.078 289.5 94.5 c f +0 g +3 w +q 1 0 0 1 0 0 cm +289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5 + 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5 + 289.5 53.078 289.5 94.5 c S Q +1 1 0 rg +64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785 +36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551 + l 115.082 172.207 l h +64.5 214.5 m f +0 g +4.5 w +q 1 0 0 1 0 0 cm +64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785 +36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551 + l 115.082 172.207 l h +64.5 214.5 m S Q +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/testfiles/cli_tests/testcases/shapes_expected.pdf b/testfiles/cli_tests/testcases/shapes_expected.pdf Binary files differnew file mode 100644 index 0000000..bff07b6 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.pdf diff --git a/testfiles/cli_tests/testcases/shapes_expected.png b/testfiles/cli_tests/testcases/shapes_expected.png Binary files differnew file mode 100644 index 0000000..3e81da4 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.png diff --git a/testfiles/cli_tests/testcases/shapes_expected.ps b/testfiles/cli_tests/testcases/shapes_expected.ps new file mode 100644 index 0000000..9037026 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.ps @@ -0,0 +1,146 @@ +%!PS-Adobe-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Feb 22 20:44:25 2020 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%DocumentMedia: 106x79mm 300 225 0 () () +%%BoundingBox: 6 2 298 222 +%%EndComments +%%BeginProlog +/languagelevel where +{ pop languagelevel } { 1 } ifelse +2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto + (This print job requires a PostScript Language Level 2 printer.) show + showpage quit } if +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +/cairo_set_page_size { + % Change paper size, but only if different from previous paper size otherwise + % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size + % so we use the same when checking if the size changes. + /setpagedevice where { + pop currentpagedevice + /PageSize known { + 2 copy + currentpagedevice /PageSize get aload pop + exch 4 1 roll + sub abs 5 gt + 3 1 roll + sub abs 5 gt + or + } { + true + } ifelse + { + 2 array astore + 2 dict begin + /PageSize exch def + /ImagingBBox null def + currentdict end + setpagedevice + } { + pop pop + } ifelse + } { + pop + } ifelse +} def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageMedia: 106x79mm +%%PageBoundingBox: 6 2 298 222 +300 225 cairo_set_page_size +%%EndPageSetup +q 6 2 292 220 rectclip +1 0 0 -1 0 225 cm q +0 0 1 rg +7.5 3.75 120 97.5 re f +0 g +1.5 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 1 0 0 cm +7.5 3.75 120 97.5 re S Q +1 0 0 rg +296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5 + 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957 + 22.5 296.25 56.078 296.25 97.5 c f +0 g +3 w +q 1 0 0 1 0 0 cm +296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5 + 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957 + 22.5 296.25 56.078 296.25 97.5 c S Q +1 1 0 rg +71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535 + 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551 + l 121.832 175.207 l h +71.25 217.5 m f +0 g +4.5 w +q 1 0 0 1 0 0 cm +71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535 + 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551 + l 121.832 175.207 l h +71.25 217.5 m S Q +Q Q +showpage +%%Trailer +%%EOF diff --git a/testfiles/cli_tests/testcases/shapes_expected.wmf b/testfiles/cli_tests/testcases/shapes_expected.wmf Binary files differnew file mode 100644 index 0000000..1b3fdcf --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.wmf diff --git a/testfiles/cli_tests/testcases/shapes_expected.xaml b/testfiles/cli_tests/testcases/shapes_expected.xaml new file mode 100644 index 0000000..613c107 --- /dev/null +++ b/testfiles/cli_tests/testcases/shapes_expected.xaml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--This file is NOT compatible with Silverlight--> +<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform"> + <Canvas Name="svg10" Width="400" Height="300"> + <Canvas.Resources/> + <!--Unknown tag: sodipodi:namedview--> + <Canvas Name="g8"> + <Rectangle xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="10" Canvas.Top="5" Width="160" Height="130" Name="rect2" Fill="#FF0000FF" StrokeThickness="2" Stroke="#FF000000"/> + <Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="155" Width="240" Canvas.Top="30" Height="200" Name="ellipse4" Fill="#FFFF0000" StrokeThickness="4" Stroke="#FF000000"/> + <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path6" Fill="#FFFFFF00" StrokeThickness="6" Stroke="#FF000000"> + <Path.Data> + <PathGeometry Figures="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" FillRule="NonZero"/> + </Path.Data> + </Path> + </Canvas> + </Canvas> +</Viewbox> diff --git a/testfiles/cli_tests/testcases/square_mm.svg b/testfiles/cli_tests/testcases/square_mm.svg new file mode 100644 index 0000000..b52aec6 --- /dev/null +++ b/testfiles/cli_tests/testcases/square_mm.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm"> + <rect x="50mm" y="50mm" width="50mm" height="100mm" fill="blue" id="square-blue" /> + <rect x="100mm" y="50mm" width="50mm" height="100mm" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/square_mm_viewbox.svg b/testfiles/cli_tests/testcases/square_mm_viewbox.svg new file mode 100644 index 0000000..394b205 --- /dev/null +++ b/testfiles/cli_tests/testcases/square_mm_viewbox.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm" viewBox="0 0 200 200"> + <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here, + so that 1 (unitless) user unit is equivalent to 1 mm after scaling. + The first square (square-mm) doesn't actually have a size of 100 mm. + The second and third square together has the size of 100 mm × 100 mm. + <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />--> + <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" /> + <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/square_px.svg b/testfiles/cli_tests/testcases/square_px.svg new file mode 100644 index 0000000..7467f7d --- /dev/null +++ b/testfiles/cli_tests/testcases/square_px.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="200px" height="200px"> + <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" /> + <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" /> +</svg> diff --git a/testfiles/cli_tests/testcases/stroke-to-path-variations.svg b/testfiles/cli_tests/testcases/stroke-to-path-variations.svg new file mode 100644 index 0000000..2c8e04b --- /dev/null +++ b/testfiles/cli_tests/testcases/stroke-to-path-variations.svg @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="100mm" height="100mm" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <marker id="mixedarrow" style="overflow:visible;" refX="0.0" refY="0.0" orient="auto"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + style="stroke:context-stroke;fill:context-stroke;stroke-width:0.5;" /> + <path + d="M 8.7,4 L -2.2,0 L 8.7,-4 C 7,-1.6 7,1.6 8.7,4 z " + style="stroke:#800000;fill:#000080;stroke-width:0.5;" /> + </marker> + <inkscape:path-effect + effect="fillet_chamfer" + id="filletpatheffect_1" + is_visible="true" + lpeversion="1" + satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="F" + radius="5" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0.38440286 : 9.523512 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="99.640604 : 9.0838863 : 1" + inkscape:persp3d-origin="50 : 33.333333 : 1" + id="perspective_1" /> + </defs> + <g transform="matrix(1.6736419,0,0,1,-6.5532384,0)"> + <g> + <rect width="10" height="10" x="10" y="5" + style="stroke-width:0.3" /> + <rect width="10" height="10" x="25" y="5" + style="fill:#800000;stroke:#ff0000;stroke-width:0.3" /> + <rect width="10" height="10" x="40" y="5" + style="fill:none;stroke:none;stroke-width:0.3" /> + <ellipse cx="15" cy="27" rx="5" ry="5.5" /> + <ellipse cx="30" cy="27" rx="5" ry="5.5" + style="fill:#800000;stroke:#ff0000;stroke-width:0.3;" /> + <ellipse cx="45" cy="27" rx="5" ry="5.5" + style="fill:none;stroke:none;stroke-width:0.3;" /> + <path + inkscape:path-effect="#filletpatheffect_1" + d="m 18.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 L 9.9354434,43.935443 a 0.70800353,0.70800353 106.84503 0 1 0.3617836,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 20.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:original-d="m 20,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + <path + style="fill:#800000;stroke:#ff0000;stroke-width:0.3;" + d="m 33.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 l -1.129114,-1.129114 a 0.70800353,0.70800353 106.84503 0 1 0.361784,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 35.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:path-effect="#filletpatheffect_1" + inkscape:original-d="m 35,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + <path + style="fill:none;stroke:none;stroke-width:0.3" + d="m 48.771703,49.508681 -2.543406,-1.017362 a 2.3539764,2.3539764 172.46576 0 0 -2.28663,0.302431 l -1.883334,1.4125 a 0.50543959,0.50543959 32.220017 0 1 -0.798888,-0.503477 l 0.48111,-2.405546 a 2.4718925,2.4718925 73.154966 0 0 -0.675998,-2.23267 l -1.129114,-1.129114 a 0.70800353,0.70800353 106.84503 0 1 0.361784,-1.194888 l 2.405546,-0.48111 a 2.4421652,2.4421652 140.24574 0 0 1.788546,-1.487742 l 1.017362,-2.543406 a 0.74346906,0.74346906 172.46576 0 1 1.285069,-0.169964 l 1.4125,1.883334 A 2.6458334,2.6458334 26.565051 0 0 50.322917,41 h 2.354166 a 0.66145835,0.66145835 63.434949 0 1 0.529167,1.058333 l -1.4125,1.883334 a 5.8322704,5.8322704 114.08992 0 0 -1.053195,2.35556 l -0.48111,2.405546 a 1.1004247,1.1004247 151.55567 0 1 -1.487742,0.805908 z" + inkscape:path-effect="#filletpatheffect_1" + inkscape:original-d="m 50,50 -5,-2 -4,3 1,-5 -3,-3 5,-1 2,-5 3,4 5,0 -3,4 z" /> + </g> + </g> + <!-- marker and dash test --> + <path + style="fill:none;stroke:#782121;stroke-width:0.3;stroke-dasharray:3,3" + d="m 20,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:none;stroke-width:0.3" + d="m 40,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:#782121;stroke-width:0.3;stroke-dasharray:3,3;marker-start:url(#mixedarrow)" + d="m 60,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <path + style="fill:#008000;stroke:none;stroke-width:0.3;marker-start:url(#mixedarrow)" + d="m 80,60 c 0,0 -3,-7 -7,-3 -4,4 -6,10 -4,12 2,3 4,4 5,6 2,2 7,0 7,-2 0,-2 -6,-9 -6,-9" /> + <!-- text test --> + <text x="10" y="80" style="font-size:4px;fill:none;fill-opacity:1;stroke:none" xml:space="preserve"><tspan sodipodi:role="line">SVG 1.1</tspan></text> + <text x="10" y="90" style="fill:magenta;stroke:navy;stroke-width:0.3;font-size:4px;white-space:pre;inline-size:16" xml:space="preserve"><tspan x="10" y="90">inline </tspan><tspan x="10" y="95">size</tspan></text> + <rect x="40" y="76" width="30" height="100" id="rect_shape_inside" style="display:none;stroke:#333;stroke-width:0.3" /> + <text style="fill:yellow;stroke:green;stroke-width:0.3;font-size:4px;white-space:pre;shape-inside:url(#rect_shape_inside);"><tspan x="140" y="330">SVG </tspan><tspan x="140" y="340" xml:space="preserve">shape-inside</tspan></text> + <flowRoot style="fill:green;stroke:blue;stroke-width:0.3;font-size:4px" xml:space="preserve"><flowRegion><rect width="30" height="100" x="70" y="76" /></flowRegion><flowPara>SVG1.2 flowRoot</flowPara></flowRoot> + <g + sodipodi:type="inkscape:box3d" + id="box" + style="fill:black;stroke:#6b1515;stroke-width:0.1;" + inkscape:perspectiveID="#perspective_1" + inkscape:corner0="0.24645783 : -0.025213563 : 0 : 1" + inkscape:corner7="0.14660839 : -0.032706923 : 0.25 : 1"> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#dec7af" + inkscape:box3dsidetype="13" + d="M 40.189679,97.614397 43.656018,98.235984 53.677544,96.92569 50.12162,96.495374 Z" + points="43.656018,98.235984 53.677544,96.92569 50.12162,96.495374 40.189679,97.614397 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#644d35" + inkscape:box3dsidetype="6" + d="m 40.189679,91.602674 v 6.011723 l 9.931941,-1.119023 v -5.007398 z" + points="40.189679,97.614397 50.12162,96.495374 50.12162,91.487976 40.189679,91.602674 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#fff4e9" + inkscape:box3dsidetype="11" + d="m 50.12162,91.487976 3.555924,0.07232 V 96.92569 L 50.12162,96.495374 Z" + points="53.677544,91.560292 53.677544,96.92569 50.12162,96.495374 50.12162,91.487976 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#9f764d" + inkscape:box3dsidetype="5" + d="m 40.189679,91.602674 3.466339,0.09807 10.021526,-0.140453 -3.555924,-0.07232 z" + points="43.656018,91.700745 53.677544,91.560292 50.12162,91.487976 40.189679,91.602674 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#ffebd7" + inkscape:box3dsidetype="14" + d="m 43.656018,91.700745 v 6.535239 L 53.677544,96.92569 v -5.365398 z" + points="43.656018,98.235984 53.677544,96.92569 53.677544,91.560292 43.656018,91.700745 " /> + <path + sodipodi:type="inkscape:box3dside" + style="fill:#bfa386" + inkscape:box3dsidetype="3" + d="m 40.189679,91.602674 3.466339,0.09807 v 6.535239 l -3.466339,-0.621587 z" + points="43.656018,91.700745 43.656018,98.235984 40.189679,97.614397 40.189679,91.602674 " /> + </g> + <use xlink:href="#box" x="20" y="0" width="100%" height="100%" /> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage.svg b/testfiles/cli_tests/testcases/systemLanguage.svg new file mode 100644 index 0000000..c650dc9 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100"> + <switch id="switch"> + <!-- some fuzz to probe for crashing issues --> + <rect systemLanguage="" width="1" height="1"/> + <rect systemLanguage=" " width="1" height="1"/> + <rect systemLanguage="_" width="1" height="1"/> + <rect systemLanguage="-" width="1" height="1"/> + <rect systemLanguage="#" width="1" height="1"/> + <rect systemLanguage="-CH" width="1" height="1"/> + + <!-- use rects instead of text to avoid any issues with font rendering --> + <!-- note: we don't support the 'allowReorder' attribute yet --> + <rect systemLanguage="en" x="10" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="fr" x="110" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="de-CH" x="210" y="10" width="80" height="80" fill="#00f"/> + <rect systemLanguage="es, pt" x="310" y="10" width="80" height="80" fill="#00f"/> + <rect x="410" y="10" width="80" height="80" fill="#00f"/> + </switch> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage_RDF.svg b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg new file mode 100644 index 0000000..7e1223e --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <metadata> + <rdf:RDF> + <cc:Work> + <dc:language>fr</dc:language> + </cc:Work> + </rdf:RDF> + </metadata> + <use xlink:href="systemLanguage.svg#switch" /> +</svg> diff --git a/testfiles/cli_tests/testcases/systemLanguage_de.png b/testfiles/cli_tests/testcases/systemLanguage_de.png Binary files differnew file mode 100644 index 0000000..1dbfe36 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_de.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_default.png b/testfiles/cli_tests/testcases/systemLanguage_default.png Binary files differnew file mode 100644 index 0000000..67cb9f0 --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_default.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_en.png b/testfiles/cli_tests/testcases/systemLanguage_en.png Binary files differnew file mode 100644 index 0000000..31679aa --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_en.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_fr.png b/testfiles/cli_tests/testcases/systemLanguage_fr.png Binary files differnew file mode 100644 index 0000000..deeb4bf --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_fr.png diff --git a/testfiles/cli_tests/testcases/systemLanguage_pt.png b/testfiles/cli_tests/testcases/systemLanguage_pt.png Binary files differnew file mode 100644 index 0000000..91e5b4b --- /dev/null +++ b/testfiles/cli_tests/testcases/systemLanguage_pt.png diff --git a/testfiles/cli_tests/testcases/text.svg b/testfiles/cli_tests/testcases/text.svg new file mode 100644 index 0000000..5dd1c7f --- /dev/null +++ b/testfiles/cli_tests/testcases/text.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="50px"> + <text x="10" y="25">some text</text> +</svg> diff --git a/testfiles/cli_tests/testcases/theta.svg b/testfiles/cli_tests/testcases/theta.svg new file mode 100644 index 0000000..00cb1f7 --- /dev/null +++ b/testfiles/cli_tests/testcases/theta.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"> + <rect x="50" y="50" width="100" height="100" fill="red" id="red" /> + <rect x="250" y="50" width="100" height="100" fill="green" id="green" /> + <rect x="150" y="150" width="100" height="100" fill="blue" id="blue" /> + <rect x="50" y="250" width="100" height="100" fill="yellow" id="yellow" /> + <rect x="250" y="250" width="100" height="100" fill="purple" id="purple" /> + + <rect x="75" y="75" width="50" height="50" fill="white" id="red-cover" /> + <rect x="275" y="75" width="50" height="50" fill="white" id="green-cover" /> + <rect x="175" y="175" width="50" height="50" fill="white" id="blue-cover" /> + <rect x="75" y="275" width="50" height="50" fill="white" id="yellow-cover" /> + <rect x="275" y="275" width="50" height="50" fill="white" id="purple-cover" /> +</svg> diff --git a/testfiles/doc-per-case-test.cpp b/testfiles/doc-per-case-test.cpp new file mode 100644 index 0000000..c69fafe --- /dev/null +++ b/testfiles/doc-per-case-test.cpp @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Test fixture with SPDocument per entire test case. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "doc-per-case-test.h" + +#include "inkscape.h" + +std::unique_ptr<SPDocument> DocPerCaseTest::_doc = nullptr; + +DocPerCaseTest::DocPerCaseTest() : + ::testing::Test() +{ +} + +void DocPerCaseTest::SetUpTestCase() +{ + if ( !Inkscape::Application::exists() ) + { + // Create the global inkscape object. + Inkscape::Application::create(false); + } + + _doc.reset(SPDocument::createNewDoc( NULL, TRUE, true )); + ASSERT_TRUE(bool(_doc)); +} + +void DocPerCaseTest::TearDownTestCase() +{ + _doc.reset(); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/doc-per-case-test.h b/testfiles/doc-per-case-test.h new file mode 100644 index 0000000..aa25280 --- /dev/null +++ b/testfiles/doc-per-case-test.h @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Test fixture with SPDocument per entire test case. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" + +#include "document.h" + + +/** + * Simple fixture that creates a single SPDocument to be shared between all tests + * in this test case. + */ +class DocPerCaseTest : public ::testing::Test +{ +public: + DocPerCaseTest(); + +protected: + static void SetUpTestCase(); + + static void TearDownTestCase(); + + static std::unique_ptr<SPDocument> _doc; +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/fuzzer.cpp b/testfiles/fuzzer.cpp new file mode 100644 index 0000000..2eee151 --- /dev/null +++ b/testfiles/fuzzer.cpp @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * TODO: insert short description here + *//* + * Authors: see git history + * + * Copyright (C) 2017 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include "xml/repr.h" +#include "inkscape.h" +#include "document.h" + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + g_type_init(); + Inkscape::GC::init(); + if ( !Inkscape::Application::exists() ) + Inkscape::Application::create(false); + //void* a= sp_repr_read_mem((const char*)data, size, 0); + auto doc = std::unique_ptr<SPDocument>(SPDocument::createNewDocFromMem((const char *)data, size, 0)); + return 0; +} diff --git a/testfiles/fuzzer.dict b/testfiles/fuzzer.dict new file mode 100644 index 0000000..c746484 --- /dev/null +++ b/testfiles/fuzzer.dict @@ -0,0 +1,526 @@ +# Dictionary for the fuzzer to "guess" faster important words. +# Contains xml keywords and svg element names and attributes. +# It might be useful to remove some of them, maybe. +# SPDX-License-Identifier: GPL-2.0-or-later + +"100" +"200" +"300" +"400" +"500" +"600" +"700" +"800" +"900" +"a" +"accent-height" +"accumulate" +"additive" +"after-edge" +"alignment-baseline" +"all" +"alphabetic" +"altGlyph" +"altGlyphDef" +"altGlyphItem" +"amplitude" +"animate" +"animateColor" +"animateMotion" +"animateTransform" +"arabic-form" +"ascent" +attr_encoding=" encoding=\"1\"" +attr_generic=" a=\"1\"" +attr_href=" href=\"1\"" +"attributeName" +"attributeType" +attr_standalone=" standalone=\"no\"" +attr_version=" version=\"1\"" +attr_xml_base=" xml:base=\"1\"" +attr_xml_id=" xml:id=\"1\"" +attr_xml_lang=" xml:lang=\"1\"" +attr_xmlns=" xmlns=\"1\"" +attr_xml_space=" xml:space=\"1\"" +"auto" +"azimuth" +"baseFrequency" +"baseline" +"baseline-shift" +"baseProfile" +"bbox" +"before-edge" +"begin" +"bevel" +"bias" +"bidi-override" +"blink" +"block" +"bold" +"bolder" +"butt" +"by" +"calcMode" +"cap-height" +"caption" +"central" +"circle" +"class" +"clip" +"clip-path" +"clipPath" +"clipPathUnits" +"clip-rule" +"collapse" +"color" +"color-interpolation" +"color-interpolation-filters" +"color-profile" +"color-rendering" +"compact" +"condensed" +"contentScriptType" +"contentStyleType" +"crispEdges" +"crosshair" +"currentColor" +"cursor" +"cx" +"cy" +"d" +"default" +"defs" +"desc" +"descent" +"diffuseConstant" +"direction" +"display" +"divisor" +"dominant-baseline" +"dur" +"dx" +"dy" +"edgeMode" +"elevation" +"ellipse" +"embed" +"enable-background" +"end" +entity_builtin="<" +entity_decimal="" +entity_external="&a;" +entity_hex="" +"e-resize" +"evenodd" +"expanded" +"exponent" +"externalResourcesRequired" +"extra-condensed" +"extra-expanded" +"feBlend" +"feColorMatrix" +"feComponentTransfer" +"feComposite" +"feConvolveMatrix" +"feDiffuseLighting" +"feDisplacementMap" +"feDistantLight" +"feFlood" +"feFuncA" +"feFuncB" +"feFuncG" +"feFuncR" +"feGaussianBlur" +"feImage" +"feMerge" +"feMergeNode" +"feMorphology" +"feOffset" +"fePointLight" +"feSpecularLighting" +"feSpotLight" +"feTile" +"feTurbulence" +"fill" +"fill-opacity" +"fill-rule" +"filter" +"filterRes" +"filterUnits" +"flood-color" +"flood-opacity" +"font" +"font-face" +"font-face-format" +"font-face-name" +"font-face-src" +"font-face-uri" +"font-family" +"font-size" +"font-size-adjust" +"font-stretch" +"font-style" +"font-variant" +"font-weight" +"foreignObject" +"format" +"from" +"fx" +"fy" +"g" +"g1" +"g2" +"geometricPrecision" +"glyph" +"glyph-name" +"glyph-orientation-horizontal" +"glyph-orientation-vertical" +"glyphRef" +"gradientTransform" +"gradientUnits" +"hanging" +"height" +"help" +"hidden" +"hkern" +"horiz-adv-x" +"horiz-origin-x" +"horiz-origin-y" +"icon" +"id" +"ideographic" +"image" +"image-rendering" +"in" +"in2" +"individual" +"inherit" +"inline" +"inline-table" +"intercept" +"italic" +"k" +"k1" +"k2" +"k3" +"k4" +"kernelMatrix" +"kernelUnitLength" +"kerning" +"keyPoints" +"keySplines" +"keyTimes" +"lang" +"lengthAdjust" +"letter-spacing" +"lighter" +"lighting-color" +"limitingConeAngle" +"line" +"linearGradient" +"linearRGB" +"'line-height'" +"line-through" +"list-item" +"local" +"lr" +"lr-tb" +"ltr" +"marker" +"marker-end" +"markerHeight" +"marker-mid" +"marker-start" +"markerUnits" +"markerWidth" +"mask" +"maskContentUnits" +"maskUnits" +"mathematical" +"max" +"media" +"menu" +"message-box" +"metadata" +"method" +"middle" +"min" +"missing-glyph" +"miter" +"mode" +"move" +"mpath" +"name" +"narrower" +"ne-resize" +"new" +"no-change" +"none" +"nonzero" +"normal" +"n-resize" +"numOctaves" +"nw-resize" +"oblique" +"offset" +"onabort" +"onactivate" +"onbegin" +"onclick" +"onend" +"onerror" +"onfocusin" +"onfocusout" +"onload" +"onmousedown" +"onmousemove" +"onmouseout" +"onmouseover" +"onmouseup" +"onrepeat" +"onresize" +"onscroll" +"onunload" +"onzoom" +"opacity" +"operator" +"optimizeLegibility" +"optimizeQuality" +"optimizeSpeed" +"order" +"orient" +"orientation" +"origin" +"overflow" +"overline" +"overline-position" +"overline-thickness" +"paint" +"painted" +"panose-1" +"path" +"pathLength" +"pattern" +"patternContentUnits" +"patternTransform" +"patternUnits" +"pointer" +"pointer-events" +"points" +"pointsAtX" +"pointsAtY" +"pointsAtZ" +"polygon" +"polyline" +"preserveAlpha" +"preserveAspectRatio" +"primitiveUnits" +"properties" +"r" +"radialGradient" +"radius" +"rect" +"refX" +"refY" +"rendering-intent" +"repeatCount" +"repeatDur" +"requiredExtensions" +"requiredFeatures" +"reset-size" +"restart" +"result" +"rl" +"rl-tb" +"rotate" +"round" +"rtl" +"run-in" +"rx" +"ry" +"scale" +"script" +"scroll" +"see" +"seed" +"semi-condensed" +"semi-expanded" +"se-resize" +"set" +"shape-rendering" +"slope" +"small-caps" +"small-caption" +"spacing" +"Specifying" +"specularConstant" +"specularExponent" +"spreadMethod" +"square" +"s-resize" +"sRGB" +"start" +"startOffset" +"status-bar" +"stdDeviation" +"stemh" +"stemv" +"stitchTiles" +"stop" +"stop-color" +"stop-opacity" +"strikethrough-position" +"strikethrough-thickness" +"string" +string_any="ANY" +string_brackets="[]" +string_cdata="CDATA" +string_col_fallback=":fallback" +string_col_generic=":a" +string_col_include=":include" +string_dashes="--" +string_empty_dblquotes="\"\"" +string_empty="EMPTY" +string_empty_quotes="''" +string_entities="ENTITIES" +string_entity="ENTITY" +string_fixed="#FIXED" +string_id="ID" +string_idref="IDREF" +string_idrefs="IDREFS" +string_implied="#IMPLIED" +string_nmtoken="NMTOKEN" +string_nmtokens="NMTOKENS" +string_notation="NOTATION" +string_parentheses="()" +string_pcdata="#PCDATA" +string_percent="%a" +string_public="PUBLIC" +string_required="#REQUIRED" +string_schema=":schema" +string_system="SYSTEM" +string_ucs4="UCS-4" +string_utf16="UTF-16" +string_utf8="UTF-8" +string_xmlns="xmlns:" +"stroke" +"stroke-dasharray" +"stroke-dashoffset" +"stroke-linecap" +"stroke-linejoin" +"stroke-miterlimit" +"stroke-opacity" +"stroke-width" +"style" +"sub" +"super" +"surfaceScale" +"svg" +"switch" +"sw-resize" +"symbol" +"systemLanguage" +"table" +"table-caption" +"table-cell" +"table-column" +"table-column-group" +"table-footer-group" +"table-header-group" +"table-row" +"table-row-group" +"tableValues" +tag_attlist="<!ATTLIST" +tag_cdata="<![CDATA[" +tag_close="</a>" +tag_doctype="<!DOCTYPE" +tag_element="<!ELEMENT" +tag_entity="<!ENTITY" +tag_ignore="<![IGNORE[" +tag_include="<![INCLUDE[" +tag_notation="<!NOTATION" +tag_open="<a>" +tag_open_close="<a />" +tag_open_exclamation="<!" +tag_open_q="<?" +tag_sq2_close="]]>" +tag_xml_q="<?xml?>" +"target" +"targetX" +"targetY" +"tb" +"tb-rl" +"text" +"text-after-edge" +"text-anchor" +"text-before-edge" +"text-decoration" +"textLength" +"textPath" +"text-rendering" +"title" +"to" +"transform" +"tref" +"tspan" +"type" +"u1" +"u2" +"ultra-condensed" +"ultra-expanded" +"underline" +"underline-position" +"underline-thickness" +"unicode" +"unicode-bidi" +"unicode-range" +"units-per-em" +"use" +"use-script" +"v-alphabetic" +"values" +"version" +"vert-adv-y" +"vert-origin-x" +"vert-origin-y" +"v-hanging" +"v-ideographic" +"view" +"viewBox" +"viewTarget" +"visibility" +"visible" +"visibleFill" +"visiblePainted" +"visibleStroke" +"vkern" +"v-mathematical" +"wait" +"wider" +"width" +"widths" +"word-spacing" +"w-resize" +"writing-mode" +"x" +"x1" +"x2" +"xChannelSelector" +"x-height" +"xlink:actuate" +"xlink:arcrole" +"xlink:href" +"xlink:role" +"xlink:show" +"xlink:title" +"xlink:type" +#XML +"xml:base" +"xml:lang" +"xml:space" +"y" +"y1" +"y2" +"yChannelSelector" +"z" +"zoomAndPan" diff --git a/testfiles/lpe_tests/AttachPath_0_92_5_mixed.svg b/testfiles/lpe_tests/AttachPath_0_92_5_mixed.svg new file mode 100644 index 0000000..4369dcd --- /dev/null +++ b/testfiles/lpe_tests/AttachPath_0_92_5_mixed.svg @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bspline" + id="path-effect3912" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="attach_path" + id="path-effect189" + startpath="#path167" + startposition="5" + startcurvestart="46.620067,194.49992 , 9.2718385,3.7460659" + startcurveend="25.160036,146.39985 , 5.9416084,0.83503861" + endpath="#path3910" + endposition="0.4" + endcurvestart="222.00032,102.73978 , 20.299505,0.14171958" + endcurveend="160.05734,69.186925 , 20.599969,0.035953764" /> + <inkscape:path-effect + effect="bspline" + id="path-effect175" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect169" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 45.880067,45.7597 c 27.626658,49.086649 55.253363,98.17338 75.110133,97.92656 19.85677,-0.24682 31.94343,-49.826801 31.30256,-72.472701 C 151.65189,48.567658 138.87385,52.666275 118.52344,73.263322 98.173027,93.86037 70.54699,130.85953 42.920062,167.85988" + id="path167" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect169" + inkscape:original-d="M 45.880067,45.7597 C 73.507038,94.846173 101.13374,143.93291 128.76019,193.01991 140.84716,143.43949 152.93382,93.859505 165.02024,44.279698 151.70057,48.719411 138.8738,52.666111 125.80018,56.859717 98.17307,93.860402 70.547033,130.85956 42.920062,167.85988" + transform="translate(-17.760026,-21.460032)" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 25.160036,146.39985 c 4.2239,-4.2613 12.337517,44.00376 21.460031,48.10007 51.80033,1.97335 103.600403,3.94668 132.830333,-11.34675 29.22993,-15.29344 35.88997,-47.85365 42.54992,-80.41339 4.20679,-19.859328 -59.76806,-54.037721 -61.94298,-33.552854" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect175;#path-effect189" + inkscape:original-d="m 46.620067,194.49992 c 51.800341,1.97307 103.600413,3.9464 155.400223,5.92001 6.66025,-32.56016 13.32029,-65.12037 19.98003,-97.68015" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 164.28024,36.879686 c -3.94663,27.62641 -7.8933,55.253119 -3.82314,69.683304 4.07017,14.43019 16.15672,15.66351 22.69328,4.93356 6.53656,-10.72994 7.52325,-33.423746 12.94995,-43.66028 5.42671,-10.236534 15.29351,-8.016504 25.15999,-5.796546" + id="path3910" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3912" + inkscape:original-d="m 164.28024,36.879686 c -3.94641,27.626442 -7.89308,55.253151 -11.84002,82.880124 12.08708,1.23308 24.17363,2.4664 36.26006,3.7 0.98691,-22.69319 1.9736,-45.386995 2.96,-68.080095 9.86683,2.219711 19.73363,4.43974 29.60004,6.660009" /> + </g> +</svg> diff --git a/testfiles/lpe_tests/AttachPath_mm_1_0_2.svg b/testfiles/lpe_tests/AttachPath_mm_1_0_2.svg new file mode 100644 index 0000000..23395c5 --- /dev/null +++ b/testfiles/lpe_tests/AttachPath_mm_1_0_2.svg @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bspline" + id="path-effect3912" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="attach_path" + id="path-effect189" + startpath="#path167" + startposition="4" + startcurvestart="57.683474,213.65264 , 9.2718385,3.7460659" + startcurveend="36.223443,165.55257 , 5.9416084,0.83503861" + endpath="#path3910" + endposition="0.40000001" + endcurvestart="233.06373,121.8925 , 20.299505,0.14171958" + endcurveend="171.12075,88.339648 , 20.599969,0.035953764" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect175" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect169" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 39.183448,43.45239 c 27.626658,49.086649 55.253364,98.17338 75.110132,97.92656 19.85677,-0.24682 31.94343,-49.826801 31.30256,-72.472701 C 144.95527,46.260348 132.17723,50.358965 111.82682,70.956012 91.476408,91.55306 63.850371,128.55222 36.223443,165.55257" + id="path167" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect169" + inkscape:original-d="M 39.183448,43.45239 C 66.810419,92.538863 94.437121,141.6256 122.06357,190.7126 134.15054,141.13218 146.2372,91.552195 158.32362,41.972388 145.00395,46.412101 132.17718,50.358801 119.10356,54.552407 91.476451,91.553092 63.850414,128.55225 36.223443,165.55257" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 36.223443,165.55257 c 4.2239,-4.2613 12.337517,44.00376 21.460031,48.10007 51.800336,1.97335 103.600406,3.94668 132.830336,-11.34675 29.22993,-15.29344 35.88997,-47.85365 42.54992,-80.41339 4.20679,-19.85933 -59.76806,-54.037718 -61.94298,-33.552852" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect175;#path-effect189" + inkscape:original-d="m 57.683474,213.65264 c 51.800346,1.97307 103.600416,3.9464 155.400226,5.92001 6.66025,-32.56016 13.32029,-65.12037 19.98003,-97.68015" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 175.34365,56.032408 c -3.94663,27.62641 -7.8933,55.253122 -3.82314,69.683302 4.07017,14.43019 16.15672,15.66351 22.69328,4.93356 6.53656,-10.72994 7.52325,-33.423744 12.94995,-43.660278 5.42671,-10.236534 15.29351,-8.016504 25.15999,-5.796546" + id="path3910" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3912" + inkscape:original-d="m 175.34365,56.032408 c -3.94641,27.626442 -7.89308,55.253152 -11.84002,82.880122 12.08708,1.23308 24.17363,2.4664 36.26006,3.7 0.98691,-22.69319 1.9736,-45.386993 2.96,-68.080093 9.86683,2.219711 19.73363,4.43974 29.60004,6.660009" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/AttachPath_px_1_0_2.svg b/testfiles/lpe_tests/AttachPath_px_1_0_2.svg new file mode 100644 index 0000000..23395c5 --- /dev/null +++ b/testfiles/lpe_tests/AttachPath_px_1_0_2.svg @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bspline" + id="path-effect3912" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="attach_path" + id="path-effect189" + startpath="#path167" + startposition="4" + startcurvestart="57.683474,213.65264 , 9.2718385,3.7460659" + startcurveend="36.223443,165.55257 , 5.9416084,0.83503861" + endpath="#path3910" + endposition="0.40000001" + endcurvestart="233.06373,121.8925 , 20.299505,0.14171958" + endcurveend="171.12075,88.339648 , 20.599969,0.035953764" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect175" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect169" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 39.183448,43.45239 c 27.626658,49.086649 55.253364,98.17338 75.110132,97.92656 19.85677,-0.24682 31.94343,-49.826801 31.30256,-72.472701 C 144.95527,46.260348 132.17723,50.358965 111.82682,70.956012 91.476408,91.55306 63.850371,128.55222 36.223443,165.55257" + id="path167" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect169" + inkscape:original-d="M 39.183448,43.45239 C 66.810419,92.538863 94.437121,141.6256 122.06357,190.7126 134.15054,141.13218 146.2372,91.552195 158.32362,41.972388 145.00395,46.412101 132.17718,50.358801 119.10356,54.552407 91.476451,91.553092 63.850414,128.55225 36.223443,165.55257" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 36.223443,165.55257 c 4.2239,-4.2613 12.337517,44.00376 21.460031,48.10007 51.800336,1.97335 103.600406,3.94668 132.830336,-11.34675 29.22993,-15.29344 35.88997,-47.85365 42.54992,-80.41339 4.20679,-19.85933 -59.76806,-54.037718 -61.94298,-33.552852" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect175;#path-effect189" + inkscape:original-d="m 57.683474,213.65264 c 51.800346,1.97307 103.600416,3.9464 155.400226,5.92001 6.66025,-32.56016 13.32029,-65.12037 19.98003,-97.68015" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 175.34365,56.032408 c -3.94663,27.62641 -7.8933,55.253122 -3.82314,69.683302 4.07017,14.43019 16.15672,15.66351 22.69328,4.93356 6.53656,-10.72994 7.52325,-33.423744 12.94995,-43.660278 5.42671,-10.236534 15.29351,-8.016504 25.15999,-5.796546" + id="path3910" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3912" + inkscape:original-d="m 175.34365,56.032408 c -3.94641,27.626442 -7.89308,55.253152 -11.84002,82.880122 12.08708,1.23308 24.17363,2.4664 36.26006,3.7 0.98691,-22.69319 1.9736,-45.386993 2.96,-68.080093 9.86683,2.219711 19.73363,4.43974 29.60004,6.660009" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BSpline_mixed_0_92_5.svg b/testfiles/lpe_tests/BSpline_mixed_0_92_5.svg new file mode 100644 index 0000000..ea52e78 --- /dev/null +++ b/testfiles/lpe_tests/BSpline_mixed_0_92_5.svg @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.2"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect127" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="bspline" + id="path-effect125" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect121" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="bspline" + id="path-effect119" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect115" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="bspline" + id="path-effect113" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32.560048,115.3198 c -0.690122,-0.10897 -0.872507,-4.13481 -0.308727,-11.29532 0.504097,-6.402485 1.837886,-18.318873 6.172282,-29.948287 10e-7,0 2e-6,-7e-6 2e-6,-7e-6 2.062639,-5.527232 5.171336,-11.581619 9.950277,-16.948747 4.448014,-4.933281 10.294627,-9.021659 17.156094,-11.56885 7.568782,-2.778514 15.64981,-3.885742 23.951226,-3.998466 7.238408,-0.126446 14.605718,0.456849 22.041818,1.693447 1.59536,0.265304 3.17734,0.557927 4.74451,0.875355 8.95062,1.800915 17.4378,4.412261 25.33886,7.892903 7.26802,3.159879 13.97078,7.079847 19.57224,12.359621 4.85272,4.592574 8.22922,10.221025 9.89028,16.130331 1.69206,6.298629 1.49846,12.448369 0.63134,17.643895 0,0 -1e-5,7e-6 -1e-5,7e-6 -1.13596,6.918148 -3.38794,13.140358 -5.30889,17.777028 -4.73771,11.47329 -8.81692,17.43047 -9.51112,17.14713 -1.14787,-0.46852 1.24576,-7.19946 4.4026,-18.8898 1.24916,-4.64587 2.80326,-10.80306 3.28602,-16.91843 0,-2e-6 0,-5e-6 0,-7e-6 0.3465,-4.589903 0.20008,-9.73446 -1.41131,-14.368863 -1.4281,-4.312272 -4.25061,-8.437303 -8.10866,-11.858431 -4.66798,-4.167728 -10.53555,-7.266841 -17.26608,-10.117684 -7.27082,-3.033926 -15.11707,-5.331924 -23.47839,-6.999581 -1.46397,-0.289883 -2.93825,-0.559174 -4.42134,-0.805472 -6.9133,-1.148101 -13.684992,-1.741321 -20.292013,-1.713325 -7.630389,0.06498 -14.634635,0.783533 -20.93441,2.938879 -5.515522,1.856125 -10.334228,4.908476 -14.03168,8.650014 -4.080697,4.068961 -7.065204,9.159408 -9.305077,13.954 0,0 -10e-7,7e-6 -10e-7,7e-6 -4.582414,9.811706 -7.445472,22.024596 -8.950877,27.767333 -1.808547,6.89915 -3.037521,10.72313 -3.808964,10.60132 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect113;#path-effect115" + inkscape:original-d="M 32.560048,115.3198 C 37.000317,87.199495 41.440324,59.079455 45.880067,30.959679 92.74657,40.825991 139.6138,50.692774 186.48027,60.559722 176.6139,84.732721 166.74717,108.90619 156.88023,133.07983" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 69.5601,173.03988 c 0.615778,-1.0263 17.931099,10.20266 48.5624,23.40829 6.37659,2.7463 13.71578,5.60365 21.36798,7.45597 5.84551,1.39888 12.21402,2.37212 18.40908,1.76856 5.16973,-0.46704 10.42254,-2.08265 15.36792,-4.71663 4.8452,-2.56945 9.35452,-6.09589 13.72029,-10.23418 9.99264,-7.64023 18.05686,-16.75249 27.55499,-27.09994 -4.89452,2.18461 -10.03601,4.50644 -15.20138,6.61096 -4.9936,0.68591 -10.28737,1.27032 -15.76737,1.22079 -3.69941,0.10851 -8.23632,-0.30183 -12.79838,-2.62708 0,0 -2e-5,-2e-5 -2e-5,-2e-5 -1.80826,-0.95048 -3.47185,-2.50769 -4.71792,-4.65902 -1.16967,-2.359 -1.553,-4.71524 -1.3261,-6.80419 0.25867,-3.3956 0.86496,-6.77745 1.81784,-10.08206 0.57772,-1.98444 1.23343,-3.90831 1.92835,-5.78739 0.73117,-1.97708 1.50282,-3.89661 2.26147,-5.76086 6.72615,-16.61315 12.68154,-30.80275 18.69153,-46.401688 6.80751,-17.951796 12.70388,-33.461948 12.78767,-49.662789 -0.0196,-4.185734 -0.35621,-8.026167 -1.85248,-11.098459 -0.99567,-2.163441 -2.60901,-4.032838 -4.52968,-5.175899 -1.12503,-0.761163 -2.89122,-1.188482 -4.89099,-1.766061 -3.05085,-0.812163 -6.23414,-1.407358 -9.36691,-1.944575 -9.32796,-1.593358 -18.96711,-2.65883 -27.19574,-3.540146 -39.70675,-4.247568 -64.191828,-5.642332 -64.102521,-7.3838174 0.04546,-0.8864853 24.598261,-1.8866279 64.674981,0.5964936 8.34266,0.5154303 18.07864,1.2166258 27.8174,2.5498398 3.2461,0.442133 6.67677,0.980354 10.14381,1.787142 2.06889,0.433073 4.55565,1.081714 7.13606,2.4851 3.46662,2.004552 6.28791,5.02615 8.0751,8.677153 2.27196,4.800793 3.02268,9.924255 3.00039,14.815894 0.0732,18.217509 -5.77775,35.148971 -12.60444,53.111941 -5.84399,15.623141 -11.91708,30.351051 -18.51606,46.696881 -0.74478,1.85441 -1.48091,3.68601 -2.15317,5.49213 -0.6392,1.71734 -1.21912,3.40738 -1.70125,5.08699 -0.76727,2.64217 -1.25827,5.35286 -1.46984,8.06976 0.0125,0.69769 -8e-5,1.21972 0.14993,1.30904 -0.009,0.14328 0.34932,0.38551 0.80497,0.7023 0,0 1e-5,0 1e-5,0 1.70678,1.18327 4.69012,1.20395 8.0755,1.41229 4.66703,0.0934 9.50109,-0.42643 14.35661,-1.02996 6.54237,0.57588 13.12805,0.91179 19.54773,1.21515 -7.77449,13.01231 -15.02517,25.00563 -24.52407,35.53194 -4.8635,4.46824 -10.1313,8.34548 -15.91177,11.26469 -5.98056,3.00976 -12.35823,4.74546 -18.6799,5.14341 -7.49844,0.42695 -14.63312,-0.87336 -20.88913,-2.67551 -8.2029,-2.34178 -15.73145,-5.65394 -22.14165,-8.8238 -14.42476,-7.12719 -27.588969,-15.65715 -34.455591,-20.28734 -7.731739,-5.21354 -11.751365,-8.35844 -11.455649,-8.8513 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect119;#path-effect121" + inkscape:original-d="m 69.5601,173.03988 c 32.06698,19.7331 64.13369,38.4798 96.20014,57.72009 17.26692,-22.69358 50.32007,-68.0801 50.32007,-68.0801 0,0 -47.3598,7.89308 -71.0401,11.84002 25.65396,-29.60068 30.69967,-35.42265 76.96011,-88.800134 C 212.21467,43.017298 208.2739,25.821213 205.7203,14.679654 187.6151,13.750904 128.76045,10.732717 90.280132,8.7596458" + sodipodi:nodetypes="ccccccc" /> + <!--<path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 19.240028,134.55983 c 2.676567,-0.11471 4.582256,42.61524 4.573663,102.71993 2.596804,-11.30953 5.384677,-24.85184 9.455512,-37.28121 1.960778,-4.25447 4.292005,-8.80931 7.586206,-13.04555 1.15189,-1.50947 2.623053,-3.07253 4.525091,-4.47458 0,0 1.6e-5,-1e-5 1.6e-5,-1e-5 1.475255,-1.15191 3.509254,-2.03546 6.025999,-2.33649 1.070407,-0.0419 2.075934,0.0365 3.005483,0.21474 1.224542,0.23484 2.313499,0.64233 3.242871,1.17283 1.986568,1.07603 3.558401,2.32964 4.811833,3.52733 3.525944,3.27846 6.428781,6.83382 9.131055,9.89634 3.719164,4.18241 7.380774,8.04993 11.317753,11.42771 4.780397,4.10554 9.882091,7.49436 15.224384,9.97396 6.657386,3.12419 13.923426,5.02496 20.875256,6.4069 8.94702,1.76354 17.96255,2.6602 26.02259,3.2465 0,0 10e-6,0 10e-6,0 36.67138,2.66124 60.62772,1.71791 60.68256,3.27174 0.0188,0.53302 -23.48286,5.28899 -61.04696,4.44336 -1e-5,0 -1e-5,0 -1e-5,0 -8.28377,-0.18521 -17.63399,-0.74003 -27.21118,-2.29585 -7.42289,-1.19403 -15.42742,-3.09182 -23.201292,-6.48922 -6.278316,-2.772 -12.209517,-6.54019 -17.659802,-11.11625 -4.481653,-3.76617 -8.518821,-7.91834 -12.408742,-12.25255 -2.942584,-3.25556 -5.64442,-6.57588 -8.490279,-9.15888 -1.025315,-0.89851 -1.884438,-1.64794 -2.663297,-2.01115 -0.310291,-0.11465 -0.550179,-0.22362 -0.694181,-0.27856 -0.109307,-0.0417 -0.163097,-0.0521 -0.150986,-0.0104 -0.04019,-0.0988 -0.403802,0.1708 -1.003926,0.50121 0,0 -7e-6,0 -7e-6,0 -0.806699,0.53271 -1.608082,1.4497 -2.504853,2.53144 -2.536398,3.13855 -4.509309,7.05435 -6.473808,11.08954 -7.173572,11.28625 -13.234943,23.77301 -18.66461,34.80756 -5.2264,-61.41696 -6.973196,-104.36608 -4.306349,-104.48037 z M 75.480111,104.95979 C 74.743254,103.17028 94.447047,94.323703 127.01452,82.764792 l 0,0 c -0.24911,6.505951 -0.41284,13.42022 -0.5188,20.854098 l 0,0 c -0.7459,4.13262 -1.52475,8.38786 -2.3342,12.75111 l 0,0 c -0.25794,1.39041 -0.51898,2.79178 -0.78306,4.20365 l 0,0 c -0.0734,0.3926 -0.1471,0.786 -0.221,1.18021 0,1e-5 0,1e-5 0,1e-5 l 0,0 c -0.002,0.002 -2.27319,2.22465 -2.27491,2.22633 1e-5,0 0,0 0,0 0,1e-5 -0.022,0.0819 -0.022,0.0819 -0.003,0.01 -0.005,0.019 -0.008,0.0287 -13.32555,0.83383 -27.702744,1.68876 -42.54612,2.51672 -6.71456,0.37453 -13.313451,0.73177 -19.762691,1.06976 -0.05488,-0.0361 -0.110389,-0.0726 -0.165251,-0.10871 -0.15571,-0.10245 -0.311409,-0.2049 -0.467098,-0.30734 -0.607351,-0.39963 -1.21454,-0.79915 -1.821567,-1.19857 -1.7e-5,-1e-5 -3.4e-5,-2e-5 -5.1e-5,-3e-5 -0.06163,-0.14082 -0.123213,-0.28156 -0.184754,-0.42223 l 0,0 c -0.233463,-0.53364 -0.466294,-1.06622 -0.698484,-1.59771 l 0,0 c -0.004,-0.009 -2.478266,-5.68742 -2.482293,-5.69664 l 0,0 C 50.146665,112.41484 47.65569,106.6347 45.26573,101.04118 l 0,0 C 42.035427,90.812207 39.082447,81.578469 36.201546,72.866477 l 0,0 c 0.0383,-0.06406 0.07893,-0.131962 0.117223,-0.196006 0.110834,-0.185274 0.221636,-0.370492 0.332406,-0.555653 0.43265,-0.723209 0.86482,-1.445563 1.29651,-2.167062 l 5.3e-5,-9.7e-5 c 0.162702,-0.02132 0.325149,-0.04259 0.487338,-0.0638 l 0,0 c 3.82e-4,-5e-5 1.843961,-0.24026 1.844343,-0.24031 l 0,0 c 2.244197,-0.291307 4.437072,-0.571882 6.575536,-0.841358 l 0,0 c 7.338914,-0.924805 14.036996,-1.7189 19.969406,-2.367501 l 0,0 c 8.295838,-0.907 15.094403,-1.529489 20.054314,-1.827045 l 0,0 c 2.859059,-0.171522 5.107178,-0.235076 6.678971,-0.18292 l 10e-7,0 c 0.82733,0.02745 1.467281,0.08696 1.910316,0.179661 l 0,0 c 0.226487,0.04739 0.401512,0.10345 0.5238,0.168336 l 0,0 c 0,0 10e-7,0 10e-7,0 0.06178,0.03278 0.110102,0.06781 0.144799,0.105121 0,0 0,0 0,0 0.02404,0.06075 0.03978,0.09126 0.0496,0.106562 0,0 0,0 0,0 0.0097,0.01506 0.0136,0.01533 0.01396,0.01532 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 1.8e-5,-1e-6 1.4e-5,0 1.4e-5,0 0,0 4e-6,0 -1.4e-5,4e-6 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -3.49e-4,9.7e-5 -0.004,0.0016 -0.0086,0.01886 0,0 0,1e-6 0,1e-6 -0.0047,0.01758 -0.01028,0.05145 -0.01454,0.116637 0,10e-7 0,10e-7 0,10e-7 -0.02159,0.04615 -0.05684,0.09431 -0.105592,0.144456 0,0 0,0 0,0 l 0,0 c -0.0965,0.09926 -0.245906,0.206286 -0.446953,0.320838 l 0,0 c -0.39327,0.224078 -0.984148,0.476947 -1.763209,0.756757 l 0,0 c -1.480088,0.531594 -3.639404,1.160431 -6.413336,1.87383 l 0,0 c -4.812233,1.237609 -11.474184,2.729714 -19.648524,4.410113 l 0,0 c -5.845526,1.201666 -12.464454,2.499621 -19.733424,3.869656 l 0,0 c -2.118083,0.399211 -4.29136,0.804541 -6.516777,1.215393 l 0,0 c 3.75e-4,-6.9e-5 -1.82956,0.336856 -1.829186,0.336787 -0.16088,0.02954 -0.322023,0.05911 -0.483425,0.08871 l 0,0 c 0.348316,-0.708491 0.697026,-1.417734 1.046181,-2.127825 0.08939,-0.181804 0.178817,-0.363663 0.268269,-0.545578 0.03214,-0.06533 0.06252,-0.127114 0.09466,-0.192446 l -8e-6,1.6e-5 c 4.09871,7.01018 8.436291,14.18854 13.192289,21.948898 l 0,0 c 2.54657,5.523985 5.163827,11.248055 7.83496,17.137905 l 0,0 c -0.0041,-0.009 2.565268,5.67073 2.56114,5.66163 l 0,0 c 0.238551,0.52866 0.47748,1.05853 0.716776,1.58958 l 0,0 c 0.06308,0.13999 0.126182,0.28005 0.189311,0.4202 -1.6e-5,0 -3.2e-5,-1e-5 -4.8e-5,-2e-5 -0.574858,-0.32698 -1.149874,-0.65404 -1.725048,-0.9812 -0.147441,-0.0839 -0.294891,-0.16774 -0.442353,-0.25161 -0.0523,-0.0298 -0.1042,-0.0593 -0.156503,-0.0891 5.507048,-0.27514 11.110923,-0.54368 16.80896,-0.80569 12.587309,-0.5788 24.790403,-1.08687 36.322373,-1.52785 0.001,-0.009 0.002,-0.0188 0.004,-0.0279 0,1e-5 0.0102,-0.0793 0.0102,-0.0793 0,0 0,0 0,0 0.002,-0.001 -2.15222,1.60453 -2.15025,1.60306 l 0,0 c 0,0 0,0 0,-1e-5 0.0834,-0.3923 0.16672,-0.78378 0.24993,-1.17442 l 0,0 c 0.29927,-1.40484 0.59729,-2.79881 0.89396,-4.18147 l 0,0 c 0.93099,-4.33895 1.84869,-8.56641 2.74963,-12.66802 l 0,0 c 2.50287,-5.611875 4.79154,-10.956394 6.8812,-16.145936 l 1e-5,-2.2e-5 C 96.177824,99.246699 76.222838,106.76356 75.480111,104.95979 Z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect125;#path-effect127" + inkscape:original-d="m 19.240028,134.55983 c 1.480267,34.53312 4.440006,103.60015 4.440006,103.60015 0,0 18.746959,-52.29368 28.12004,-78.44011 9.3735,24.66613 18.746959,49.33314 28.120043,74.0001 41.933903,-1.48027 83.867053,-2.96027 125.800183,-4.44 M 75.480111,104.95979 c 16.773622,-6.906944 50.320069,-20.720033 50.320069,-20.720033 0,0 -7.40001,37.000053 -7.40001,37.000053 0,0 -57.720081,2.96001 -57.720081,2.96001 0,0 -22.256486,-50.123627 -22.256486,-50.123627 0,0 57.776538,-9.076465 57.776538,-9.076465" />--> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BSpline_mm_1_0_2.svg b/testfiles/lpe_tests/BSpline_mm_1_0_2.svg new file mode 100644 index 0000000..50e2803 --- /dev/null +++ b/testfiles/lpe_tests/BSpline_mm_1_0_2.svg @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect127" + is_visible="true" + pattern="m -4.6686329,15.186464 c 0,-2.76 2.24,-5 5.00000003,-5 2.76000017,0 5.00000047,2.24 5.00000047,5 0,2.76 -2.2400003,5 -5.00000047,5 -2.76000003,0 -5.00000003,-2.24 -5.00000003,-5 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect125" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect121" + is_visible="true" + pattern="m 3.7627168,9.9124731 c 0,-2.76 2.24,-5 5,-5 2.7600002,0 5.0000002,2.24 5.0000002,5 0,2.7599999 -2.24,4.9999999 -5.0000002,4.9999999 -2.76,0 -5,-2.24 -5,-4.9999999 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect119" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect115" + is_visible="true" + pattern="m 3.7627168,9.9124731 c 0,-2.76 2.24,-5 5,-5 2.7600002,0 5.0000002,2.24 5.0000002,5 0,2.7599999 -2.24,4.9999999 -5.0000002,4.9999999 -2.76,0 -5,-2.24 -5,-4.9999999 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect113" + is_visible="true" + weight="23.3333" + steps="3" + helper_size="1" + apply_no_weight="false" + apply_with_weight="false" + only_selected="true" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 36.322765,120.23227 c -0.936517,-0.14787 -0.916132,-7.06428 0.644812,-19.00566 0.790971,-6.0609 2.113658,-14.090749 4.36854,-22.57643 1.643575,-6.246521 3.986562,-13.627998 7.943392,-20.644712 1e-6,0 4e-6,-8e-6 4e-6,-8e-6 1.50518,-2.679568 3.394294,-5.433371 5.849275,-7.946393 2.028618,-2.103194 4.63217,-3.997424 7.821952,-5.224976 3.652531,-1.291941 7.22682,-1.681503 10.521585,-1.806467 4.571637,-0.239393 9.114761,-0.09197 13.70399,0.235547 9.429848,0.665593 18.959455,2.031531 28.762505,3.924793 1.47011,0.283922 2.9315,0.576807 4.38316,0.877076 11.31188,2.330636 21.95082,5.095051 32.1021,8.614968 4.25651,1.472209 8.38481,3.073314 12.39173,5.02157 2.82822,1.317787 5.83914,2.972561 8.59021,5.496769 2.28334,2.220675 3.78206,4.839285 4.63055,7.461254 1.00181,3.065655 1.35792,6.081315 1.38737,8.843139 0.095,7.311274 -1.45712,14.135941 -3.03754,19.67945 -2.16304,7.69247 -4.91786,14.584 -7.14882,19.64726 -4.45908,10.12788 -7.75664,15.50489 -8.59463,15.16286 -0.838,-0.34204 0.91153,-6.43006 3.91964,-16.86088 1.47267,-5.10856 3.52618,-12.299 4.97259,-19.59643 1.05147,-5.400119 2.0978,-11.717142 1.63796,-17.68674 -0.17948,-2.229344 -0.51495,-4.419386 -1.27119,-6.292922 -0.62705,-1.523421 -1.45787,-2.9231 -2.53438,-3.793876 -1.54096,-1.424746 -3.8016,-2.438602 -6.47269,-3.700134 -3.59603,-1.617642 -7.41291,-2.967042 -11.5126,-4.290934 -9.77188,-3.146536 -20.01244,-5.657863 -31.06833,-7.914827 -1.41715,-0.28812 -2.84106,-0.570772 -4.27038,-0.846367 -9.54019,-1.839488 -18.660182,-3.235563 -27.632644,-4.017901 -4.372137,-0.37756 -8.512613,-0.612967 -12.548145,-0.497386 -3.068922,0.137525 -5.697753,0.2425 -7.828256,1.008032 -1.601207,0.477125 -3.178804,1.60451 -4.65576,2.936129 -1.800347,1.656417 -3.347015,3.758872 -4.754052,5.954867 0,0 -4e-6,8e-6 -4e-6,8e-6 -3.694028,5.793924 -6.248665,12.529426 -8.283009,18.386491 -2.686887,7.792286 -4.794788,15.750708 -6.289079,21.44012 -3.00733,11.45331 -4.793339,18.16058 -5.729856,18.01271 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect113;#path-effect115" + inkscape:original-d="m 36.322765,120.23227 c 3.109,-19.683 10.213019,-64.675119 13.320019,-84.360118 32.807668,6.907667 107.794536,22.694376 140.600206,29.600043 -6.90567,16.922334 -22.69237,55.599775 -29.60004,72.520105" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 73.322817,177.95235 c 0.615778,-1.0263 17.9311,10.20266 48.562403,23.40829 6.37659,2.7463 13.71578,5.60365 21.36798,7.45597 5.84551,1.39888 12.21402,2.37212 18.40908,1.76856 5.16973,-0.46704 10.42254,-2.08265 15.36792,-4.71663 4.8452,-2.56945 9.35452,-6.09589 13.72029,-10.23418 9.99264,-7.64023 18.05686,-16.75249 27.55499,-27.09994 -4.89452,2.18461 -10.03601,4.50644 -15.20138,6.61096 -4.9936,0.68591 -10.28737,1.27032 -15.76737,1.22079 -3.69941,0.10851 -8.23632,-0.30183 -12.79837,-2.62708 0,0 -3e-5,-2e-5 -3e-5,-2e-5 -1.80826,-0.95048 -3.47185,-2.50769 -4.71792,-4.65902 -1.16967,-2.359 -1.553,-4.71524 -1.3261,-6.80419 0.25867,-3.3956 0.86496,-6.77745 1.81784,-10.08206 0.57772,-1.98444 1.23343,-3.90831 1.92835,-5.78738 0.73117,-1.97709 1.50282,-3.89662 2.26147,-5.76087 6.72615,-16.61315 12.68154,-30.80275 18.69153,-46.401686 6.80751,-17.951796 12.70388,-33.461948 12.78767,-49.662788 -0.0196,-4.185734 -0.35621,-8.026167 -1.85248,-11.098459 -0.99567,-2.163441 -2.60901,-4.032838 -4.52968,-5.175899 -1.12503,-0.761163 -2.89122,-1.188482 -4.89099,-1.766061 -3.05085,-0.812163 -6.23414,-1.407358 -9.36691,-1.944575 -9.32796,-1.593358 -18.96711,-2.65883 -27.19574,-3.540146 -39.66297,-4.242883 -64.16989,-6.070118 -64.102521,-7.383817 0.06737,-1.313699 24.576611,-1.887969 64.674981,0.596493 8.34266,0.515431 18.07864,1.216626 27.8174,2.54984 3.2461,0.442133 6.67677,0.980354 10.14381,1.787142 2.06889,0.433073 4.55565,1.081714 7.13606,2.4851 3.46662,2.004552 6.28791,5.02615 8.0751,8.677153 2.27196,4.800793 3.02268,9.924254 3.00039,14.815894 0.0732,18.217508 -5.77775,35.14897 -12.60444,53.11194 -5.84399,15.623139 -11.91708,30.351049 -18.51606,46.696889 -0.74478,1.8544 -1.48092,3.686 -2.15317,5.49213 -0.6392,1.71733 -1.21912,3.40738 -1.70125,5.08698 -0.76722,2.64202 -1.25827,5.35287 -1.46984,8.06976 0.0125,0.69769 -8e-5,1.21972 0.14993,1.30904 -0.009,0.14328 0.34932,0.38551 0.80497,0.7023 0,0 1e-5,0 1e-5,0 1.70678,1.18327 4.69012,1.20395 8.0755,1.41229 4.66703,0.0934 9.50109,-0.42643 14.35661,-1.02996 6.54237,0.57588 13.12805,0.91179 19.54773,1.21515 -7.77449,13.01231 -15.02517,25.00563 -24.52407,35.53194 -4.8635,4.46824 -10.1313,8.34548 -15.91177,11.26469 -5.98056,3.00976 -12.35823,4.74546 -18.6799,5.14341 -7.49844,0.42695 -14.63312,-0.87336 -20.88913,-2.67551 -8.2029,-2.34178 -15.73145,-5.65394 -22.14165,-8.8238 C 104.8093,199.9638 91.645089,191.43384 84.778466,186.80365 77.04296,181.58757 73.014928,178.4655 73.322817,177.95235 Z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect119;#path-effect121" + inkscape:original-d="m 73.322817,177.95235 c 32.066983,19.7331 64.133693,38.4798 96.200143,57.72009 17.26692,-22.69358 50.32007,-68.0801 50.32007,-68.0801 0,0 -47.3598,7.89308 -71.0401,11.84002 25.65396,-29.60068 30.69967,-35.42265 76.96011,-88.800131 C 215.97739,47.929771 212.03662,30.733686 209.48302,19.592127 191.37782,18.663377 132.52317,15.64519 94.042849,13.672119" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 14.571396,144.74629 c 2.088762,-0.0895 4.582272,42.5008 4.573663,102.71993 2.596804,-11.30953 5.384677,-24.85184 9.455512,-37.28121 1.960778,-4.25447 4.292005,-8.80931 7.586206,-13.04555 1.15189,-1.50947 2.623053,-3.07253 4.525091,-4.47458 0,0 1.6e-5,-1e-5 1.6e-5,-1e-5 1.475255,-1.15191 3.509254,-2.03546 6.025999,-2.33649 1.070401,-0.0419 2.075923,0.0365 3.005467,0.21474 1.224549,0.23484 2.313511,0.64233 3.242887,1.17283 1.986568,1.07603 3.558401,2.32964 4.811833,3.52733 3.525944,3.27846 6.428781,6.83382 9.131055,9.89634 3.719165,4.18241 7.380774,8.04993 11.317753,11.42771 4.780397,4.10554 9.882092,7.49436 15.224385,9.97396 6.657387,3.12419 13.923427,5.02496 20.875257,6.4069 8.94702,1.76354 17.96255,2.6602 26.02259,3.2465 0,0 1e-5,0 1e-5,0 36.67137,2.66124 60.62771,1.71791 60.68255,3.27174 0.0548,1.55383 -23.45957,5.28952 -61.04695,4.44336 0,0 -1e-5,0 -1e-5,0 -8.28377,-0.18521 -17.63399,-0.74003 -27.21118,-2.29585 -7.42289,-1.19403 -15.42742,-3.09182 -23.201293,-6.48922 -6.278316,-2.772 -12.209517,-6.54019 -17.659802,-11.11625 -4.481654,-3.76617 -8.518821,-7.91834 -12.408743,-12.25255 -2.942584,-3.25556 -5.64442,-6.57588 -8.490279,-9.15888 -1.025315,-0.89851 -1.884438,-1.64794 -2.663297,-2.01115 -0.310292,-0.11465 -0.550181,-0.22362 -0.694183,-0.27856 -0.109305,-0.0417 -0.163095,-0.0521 -0.150984,-0.0104 -0.04032,-0.0992 -0.40362,0.1707 -1.003926,0.50121 0,0 -7e-6,0 -7e-6,0 -0.806699,0.53271 -1.608082,1.4497 -2.504853,2.53144 -2.536398,3.13855 -4.509309,7.05435 -6.473808,11.08954 -7.173572,11.28625 -13.234943,23.77301 -18.66461,34.80756 -5.216697,-61.30293 -6.395111,-104.39085 -4.306349,-104.48037 z m 56.240083,-29.60004 c -0.633787,-1.5392 19.107365,-10.68593 51.534421,-22.194993 0.0613,0.06153 0.118,0.118587 0.17931,0.180097 0.17106,0.171676 0.34228,0.343483 0.51364,0.515421 0.66127,0.663498 1.32475,1.328948 1.99042,1.996344 0,0 5e-5,5.2e-5 5e-5,5.2e-5 3e-5,-1.47e-4 -0.20368,1.183839 -0.20365,1.183692 -0.2388,1.385343 -0.48256,2.790264 -0.73115,4.214027 -0.71658,4.10411 -1.47333,8.3648 -2.26743,12.76446 0,0 0,0 0,0 -1.74466,6.5388 -3.62428,13.35064 -5.63426,20.47102 -9.5881,1.11731 -20.580147,2.40734 -31.066075,3.60739 -3.487727,0.18945 -7.013949,0.37568 -10.573339,0.55822 -3.112255,0.1596 -6.199573,0.3138 -9.258381,0.46255 -0.0119,5.8e-4 -6.529075,0.31127 -6.540976,0.31184 -9.15e-4,5e-5 -1.834544,0.0852 -1.83546,0.0853 h 0 l -1e-5,0 h 0 c -0.161771,0.007 -0.32345,0.0149 -0.485037,0.0224 h 0 l -10e-6,0 0,0 c -0.838552,-0.48755 -1.676873,-0.97496 -2.514961,-1.46223 l 0,0 c -0.136249,-0.0766 -0.272489,-0.15327 -0.408718,-0.22989 -0.04769,-0.0268 -0.09578,-0.0539 -0.143475,-0.0807 -2.1e-5,-1e-5 -1.49e-4,-1e-4 -1.49e-4,-1e-4 -0.04339,-0.029 -0.08731,-0.0584 -0.130702,-0.0875 0,0 -1.27e-4,-8e-5 -1.27e-4,-8e-5 -0.123404,-0.0826 -0.2468,-0.16522 -0.370187,-0.24781 -0.481388,-0.32226 -0.962648,-0.64443 -1.443779,-0.96652 -1.8e-5,-1e-5 -3.6e-5,-2e-5 -5.3e-5,-3e-5 -0.06163,-0.14082 -0.123214,-0.28156 -0.184755,-0.42223 l 0,0 c -3.25e-4,-7.4e-4 -0.698159,-1.59696 -0.698484,-1.59771 -0.004,-0.009 -2.478266,-5.68742 -2.482293,-5.69663 l 0,0 c -2.577826,-5.93129 -5.0688,-11.71142 -7.458761,-17.30495 l 0,0 C 38.026631,105.21165 35.573014,99.411527 33.253866,93.871397 l 0,0 c -0.814161,-1.944923 -1.61175,-3.857802 -2.392004,-5.73673 -1.46e-4,-3.52e-4 -0.668101,-1.610782 -0.668247,-1.611134 l 0,0 c -0.0589,-0.142183 -0.117701,-0.284165 -0.176397,-0.425944 7.6e-5,-1.41e-4 7.7e-5,-1.43e-4 7.8e-5,-1.44e-4 0.51115,-1.00341 1.021723,-2.005736 1.531719,-3.006975 5e-5,-9.4e-5 6.6e-5,-1.27e-4 8.2e-5,-1.6e-4 0.07168,-0.148201 0.143341,-0.296362 0.21498,-0.444482 0,0 6e-5,-1.24e-4 6e-5,-1.24e-4 0.0248,-0.05128 0.05075,-0.104971 0.07555,-0.156253 0.03157,-0.05169 0.06506,-0.10649 0.09662,-0.158164 0.09136,-0.149509 0.182701,-0.298973 0.274012,-0.448391 0.356636,-0.583584 0.712882,-1.16648 1.068737,-1.748686 1.8e-5,-2.9e-5 3.6e-5,-5.9e-5 5.4e-5,-8.8e-5 0,0 9e-6,-1e-6 9e-6,-1e-6 2.8e-5,-4e-6 0.487296,-0.06379 0.487324,-0.06379 l 0,0 c 0.618544,-0.08089 1.233346,-0.160999 1.844343,-0.24031 l 0,0 c 2.244196,-0.291306 4.437069,-0.571881 6.575531,-0.841357 l 0,0 c 7.338916,-0.924805 14.037,-1.7189 19.969411,-2.367502 l 0,0 c 8.295837,-0.907 15.094402,-1.529489 20.054314,-1.827045 l 0,0 c 2.859059,-0.171521 5.107178,-0.235075 6.678971,-0.18292 l 0,0 c 0.827331,0.02745 1.467282,0.08696 1.910317,0.179661 l 0,0 c 0.226487,0.04739 0.401511,0.10345 0.5238,0.168335 l 0,0 c 0,0 0,10e-7 0,10e-7 0.06178,0.03278 0.110103,0.06781 0.144799,0.105119 0,0 0,0 0,0 0.02404,0.06075 0.03979,0.09126 0.0496,0.106563 0,0 0,10e-7 0,10e-7 0.0096,0.01503 0.01357,0.01533 0.01396,0.01532 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 1.9e-5,-1e-6 1.4e-5,0 1.4e-5,0 0,0 5e-6,-1e-6 -1.4e-5,5e-6 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -3.79e-4,1.06e-4 -0.004,0.0016 -0.0086,0.01886 0,0 0,0 0,0 -0.0047,0.01758 -0.01028,0.05145 -0.01454,0.116639 0,1e-6 0,1e-6 0,1e-6 -0.02159,0.04615 -0.05684,0.09431 -0.105592,0.144454 0,0 -10e-7,10e-7 -10e-7,10e-7 l 0,0 c -0.0965,0.09926 -0.245906,0.206285 -0.446953,0.320837 l 0,0 c -0.393271,0.224078 -0.984148,0.476946 -1.763209,0.756757 l 0,0 c -1.480088,0.531594 -3.639404,1.16043 -6.413336,1.873829 l 0,0 c -4.812233,1.237609 -11.474185,2.729714 -19.648524,4.410114 l 0,0 c -5.845527,1.201665 -12.464456,2.49962 -19.733429,3.869656 l 0,0 c -2.118081,0.39921 -4.291356,0.804541 -6.516771,1.215392 l 0,0 c -0.605884,0.111857 -1.215634,0.224124 -1.829187,0.336787 l 0,0 c 2.8e-5,-5e-6 -0.483439,0.08871 -0.483411,0.0887 0,0 -8e-6,2e-6 -8e-6,2e-6 1.3e-5,-2.9e-5 2.7e-5,-5.8e-5 4.1e-5,-8.7e-5 0.27243,-0.5691 0.545216,-1.138884 0.818358,-1.709351 0.06993,-0.146061 0.139892,-0.292166 0.209873,-0.438316 0.02515,-0.05249 0.04891,-0.102114 0.07406,-0.154605 0.02857,-0.04633 0.05568,-0.09025 0.08426,-0.136598 0,0 6.7e-5,-1.08e-4 6.7e-5,-1.08e-4 0.07989,-0.129547 0.159794,-0.259133 0.239724,-0.388757 1.8e-5,-2.9e-5 3.6e-5,-5.8e-5 5.4e-5,-8.7e-5 0.542188,-0.928876 1.084933,-1.858749 1.628266,-2.789679 1e-6,-1e-6 2e-6,-3e-6 3e-6,-5e-6 0.06589,0.138481 0.131777,0.277314 0.197749,0.416358 l 0,0 c 0.24787,0.522416 0.496881,1.047817 0.747012,1.576159 l 0,0 c 0.870551,1.838833 1.754662,3.713295 2.651428,5.621538 l 0,0 c 2.554449,5.435649 5.211585,11.145405 7.95049,17.086605 2.546569,5.52398 5.163827,11.24805 7.83496,17.1379 -0.0041,-0.009 2.565268,5.67073 2.56114,5.66163 -3.33e-4,-7.4e-4 0.717108,1.59032 0.716775,1.58958 -2.3e-5,-5e-5 0.189335,0.42026 0.189312,0.4202 -1.7e-5,0 -3.3e-5,-1e-5 -5e-5,-2e-5 -0.448962,-0.24964 -0.898049,-0.49936 -1.34726,-0.74914 -0.115139,-0.064 -0.230286,-0.12806 -0.345442,-0.19209 0,0 -1.19e-4,-6e-5 -1.19e-4,-6e-5 -0.04077,-0.0227 -0.08122,-0.0452 -0.121992,-0.0679 0,0 -1.19e-4,-7e-5 -1.19e-4,-7e-5 -0.04046,-0.0274 -0.08043,-0.0544 -0.120904,-0.0818 -0.114866,-0.0777 -0.229741,-0.15544 -0.344624,-0.23318 l 0,0 c -0.754709,-0.49155 -1.509637,-0.98323 -2.264783,-1.47506 l 0,0 1.1e-5,0 h 0 c -6.4e-5,1e-5 0.484842,-0.0274 0.484779,-0.0274 0,0 10e-6,0 10e-6,0 -9.13e-4,5e-5 1.835466,-0.10301 1.834552,-0.10296 -0.01186,6.6e-4 6.55042,-0.35956 6.538563,-0.3589 3.057978,-0.16494 6.144874,-0.32736 9.257129,-0.48696 3.55939,-0.18254 7.086164,-0.358 10.574974,-0.52632 6.570225,0.15031 20.083778,0.49704 26.654008,0.64736 0.55427,-5.70141 1.13467,-11.18857 1.76575,-16.52901 0,0 0,-1e-5 0,-1e-5 0.95917,-4.36664 1.89935,-8.59064 2.8164,-12.654665 0.31813,-1.409854 0.63348,-2.800456 0.94587,-4.171082 3e-5,-1.46e-4 0.26724,-1.170821 0.26728,-1.170968 0,0 5e-5,3.6e-5 5e-5,3.6e-5 0.70727,0.459413 1.4123,0.917111 2.11508,1.37309 0.18211,0.118162 0.36408,0.236208 0.54589,0.354139 0.0619,0.04015 0.12875,0.08338 0.19063,0.123527 C 91.374635,109.49726 71.445266,116.68545 70.811479,115.14625 Z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect125;#path-effect127" + inkscape:original-d="m 14.571396,144.74629 c 1.480267,34.53312 4.440006,103.60015 4.440006,103.60015 0,0 18.746959,-52.29368 28.12004,-78.44011 9.3735,24.66613 18.746959,49.33314 28.120043,74.0001 41.933905,-1.48027 83.867055,-2.96027 125.800185,-4.44 M 70.811479,115.14625 c 16.773622,-6.90694 50.320071,-20.720029 50.320071,-20.720029 0,0 -7.40001,37.000049 -7.40001,37.000049 0,0 -57.720083,2.96001 -57.720083,2.96001 0,0 -22.256486,-50.123623 -22.256486,-50.123623 0,0 57.776538,-9.076465 57.776538,-9.076465" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BSpline_px_1_0_2.svg b/testfiles/lpe_tests/BSpline_px_1_0_2.svg new file mode 100644 index 0000000..e98b526 --- /dev/null +++ b/testfiles/lpe_tests/BSpline_px_1_0_2.svg @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect127" + is_visible="true" + pattern="m 3.7627168,9.9124731 c 0,-2.76 2.24,-5 5,-5 2.7600002,0 5.0000002,2.24 5.0000002,5 0,2.7599999 -2.24,4.9999999 -5.0000002,4.9999999 -2.76,0 -5,-2.24 -5,-4.9999999 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect125" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect121" + is_visible="true" + pattern="m 3.7627168,9.9124731 c 0,-2.76 2.24,-5 5,-5 2.7600002,0 5.0000002,2.24 5.0000002,5 0,2.7599999 -2.24,4.9999999 -5.0000002,4.9999999 -2.76,0 -5,-2.24 -5,-4.9999999 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect119" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect115" + is_visible="true" + pattern="m 3.7627168,9.9124731 c 0,-2.76 2.24,-5 5,-5 2.7600002,0 5.0000002,2.24 5.0000002,5 0,2.7599999 -2.24,4.9999999 -5.0000002,4.9999999 -2.76,0 -5,-2.24 -5,-4.9999999 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect113" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 36.322765,120.23227 c -0.73349,-0.11581 -0.873339,-4.12425 -0.308727,-11.29532 0.504097,-6.40248 1.837886,-18.318871 6.172282,-29.948284 10e-7,0 2e-6,-7e-6 2e-6,-7e-6 2.062639,-5.527232 5.171336,-11.581619 9.950277,-16.948747 4.448014,-4.933281 10.294627,-9.021659 17.156094,-11.56885 7.568782,-2.778514 15.64981,-3.885742 23.951227,-3.998466 7.23841,-0.126446 14.60571,0.456849 22.04181,1.693447 1.59537,0.265304 3.17735,0.557926 4.74452,0.875355 8.95062,1.800915 17.4378,4.412261 25.33886,7.892903 7.26802,3.159879 13.97078,7.079847 19.57224,12.359621 4.85272,4.592574 8.22922,10.221024 9.89028,16.13033 1.69206,6.298629 1.49846,12.448368 0.63133,17.643898 0,0 0,0 0,0 -1.13596,6.91815 -3.38794,13.14036 -5.30889,17.77703 -4.75396,11.51262 -8.59104,17.52267 -9.51112,17.14713 -0.92009,-0.37555 1.2627,-7.26217 4.4026,-18.8898 1.24916,-4.64587 2.80326,-10.80306 3.28602,-16.91843 0,0 0,0 0,-10e-6 0.3465,-4.589898 0.20008,-9.734454 -1.41131,-14.368857 -1.4281,-4.312272 -4.25061,-8.437303 -8.10866,-11.858431 -4.66798,-4.167728 -10.53555,-7.266841 -17.26608,-10.117684 -7.27082,-3.033926 -15.11707,-5.331924 -23.47839,-6.999581 -1.46397,-0.289884 -2.93825,-0.559175 -4.42134,-0.805473 -6.9133,-1.1481 -13.684996,-1.74132 -20.292016,-1.713324 -7.630389,0.06498 -14.634635,0.783533 -20.93441,2.938879 -5.515522,1.856125 -10.334228,4.908476 -14.031681,8.650014 -4.080697,4.06896 -7.065204,9.159408 -9.305076,13.954 0,0 -2e-6,6e-6 -2e-6,6e-6 -4.582413,9.811706 -7.445471,22.024591 -8.950876,27.767331 -1.803677,6.88057 -3.075473,10.71713 -3.808964,10.60132 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect113;#path-effect115" + inkscape:original-d="M 36.322765,120.23227 C 40.763034,92.111968 45.203041,63.991928 49.642784,35.872152 96.509287,45.738464 143.37652,55.605247 190.24299,65.472195 180.37662,89.645194 170.50989,113.81866 160.64295,137.9923" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 73.322817,177.95235 c 0.615778,-1.0263 17.9311,10.20266 48.562403,23.40829 6.37659,2.7463 13.71578,5.60365 21.36798,7.45597 5.84551,1.39888 12.21402,2.37212 18.40908,1.76856 5.16973,-0.46704 10.42254,-2.08265 15.36792,-4.71663 4.8452,-2.56945 9.35452,-6.09589 13.72029,-10.23418 9.99264,-7.64023 18.05686,-16.75249 27.55499,-27.09994 -4.89452,2.18461 -10.03601,4.50644 -15.20138,6.61096 -4.9936,0.68591 -10.28737,1.27032 -15.76737,1.22079 -3.69941,0.10851 -8.23632,-0.30183 -12.79837,-2.62708 0,0 -3e-5,-2e-5 -3e-5,-2e-5 -1.80826,-0.95048 -3.47185,-2.50769 -4.71792,-4.65902 -1.16967,-2.359 -1.553,-4.71524 -1.3261,-6.80419 0.25867,-3.3956 0.86496,-6.77745 1.81784,-10.08206 0.57772,-1.98444 1.23343,-3.90831 1.92835,-5.78738 0.73117,-1.97709 1.50282,-3.89662 2.26147,-5.76087 6.72615,-16.61315 12.68154,-30.80275 18.69153,-46.401686 6.80751,-17.951796 12.70388,-33.461948 12.78767,-49.662788 -0.0196,-4.185734 -0.35621,-8.026167 -1.85248,-11.098459 -0.99567,-2.163441 -2.60901,-4.032838 -4.52968,-5.175899 -1.12503,-0.761163 -2.89122,-1.188482 -4.89099,-1.766061 -3.05085,-0.812163 -6.23414,-1.407358 -9.36691,-1.944575 -9.32796,-1.593358 -18.96711,-2.65883 -27.19574,-3.540146 -39.66297,-4.242883 -64.16989,-6.070118 -64.102521,-7.383817 0.06737,-1.313699 24.576611,-1.887969 64.674981,0.596493 8.34266,0.515431 18.07864,1.216626 27.8174,2.54984 3.2461,0.442133 6.67677,0.980354 10.14381,1.787142 2.06889,0.433073 4.55565,1.081714 7.13606,2.4851 3.46662,2.004552 6.28791,5.02615 8.0751,8.677153 2.27196,4.800793 3.02268,9.924254 3.00039,14.815894 0.0732,18.217508 -5.77775,35.14897 -12.60444,53.11194 -5.84399,15.623139 -11.91708,30.351049 -18.51606,46.696889 -0.74478,1.8544 -1.48092,3.686 -2.15317,5.49213 -0.6392,1.71733 -1.21912,3.40738 -1.70125,5.08698 -0.76722,2.64202 -1.25827,5.35287 -1.46984,8.06976 0.0125,0.69769 -8e-5,1.21972 0.14993,1.30904 -0.009,0.14328 0.34932,0.38551 0.80497,0.7023 0,0 1e-5,0 1e-5,0 1.70678,1.18327 4.69012,1.20395 8.0755,1.41229 4.66703,0.0934 9.50109,-0.42643 14.35661,-1.02996 6.54237,0.57588 13.12805,0.91179 19.54773,1.21515 -7.77449,13.01231 -15.02517,25.00563 -24.52407,35.53194 -4.8635,4.46824 -10.1313,8.34548 -15.91177,11.26469 -5.98056,3.00976 -12.35823,4.74546 -18.6799,5.14341 -7.49844,0.42695 -14.63312,-0.87336 -20.88913,-2.67551 -8.2029,-2.34178 -15.73145,-5.65394 -22.14165,-8.8238 C 104.8093,199.9638 91.645089,191.43384 84.778466,186.80365 77.04296,181.58757 73.014928,178.4655 73.322817,177.95235 Z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect119;#path-effect121" + inkscape:original-d="m 73.322817,177.95235 c 32.066983,19.7331 64.133693,38.4798 96.200143,57.72009 17.26692,-22.69358 50.32007,-68.0801 50.32007,-68.0801 0,0 -47.3598,7.89308 -71.0401,11.84002 25.65396,-29.60068 30.69967,-35.42265 76.96011,-88.800131 C 215.97739,47.929771 212.03662,30.733686 209.48302,19.592127 191.37782,18.663377 132.52317,15.64519 94.042849,13.672119" + sodipodi:nodetypes="ccccccc" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 23.002745,139.4723 c 2.088762,-0.0895 4.582272,42.5008 4.573663,102.71993 2.596804,-11.30953 5.384677,-24.85184 9.455512,-37.28121 1.960778,-4.25447 4.292005,-8.80931 7.586206,-13.04555 1.15189,-1.50947 2.623053,-3.07253 4.525091,-4.47458 0,0 1.6e-5,-1e-5 1.6e-5,-1e-5 1.475255,-1.15191 3.509254,-2.03546 6.025999,-2.33649 1.070404,-0.0419 2.075928,0.0365 3.005474,0.21474 1.224546,0.23484 2.313506,0.64233 3.24288,1.17283 1.986568,1.07603 3.558401,2.32964 4.811833,3.52733 3.525944,3.27846 6.428781,6.83382 9.131055,9.89634 3.719165,4.18241 7.380774,8.04993 11.317753,11.42771 4.780397,4.10554 9.882092,7.49436 15.224383,9.97396 6.65739,3.12419 13.92343,5.02496 20.87526,6.4069 8.94702,1.76354 17.96255,2.6602 26.02259,3.2465 0,0 1e-5,0 1e-5,0 36.67138,2.66124 60.62771,1.71791 60.68255,3.27174 0.0548,1.55383 -23.45957,5.28952 -61.04695,4.44336 0,0 -1e-5,0 -1e-5,0 -8.28377,-0.18521 -17.63399,-0.74003 -27.21118,-2.29585 -7.42289,-1.19403 -15.42742,-3.09182 -23.201293,-6.48922 -6.278317,-2.772 -12.209518,-6.54019 -17.659803,-11.11625 -4.481653,-3.76617 -8.518821,-7.91834 -12.408743,-12.25255 -2.942584,-3.25556 -5.64442,-6.57588 -8.490279,-9.15888 -1.025315,-0.89851 -1.884438,-1.64794 -2.663297,-2.01115 -0.310292,-0.11465 -0.55018,-0.22362 -0.694182,-0.27856 -0.109306,-0.0417 -0.163096,-0.0521 -0.150985,-0.0104 -0.04032,-0.0992 -0.40362,0.1707 -1.003926,0.50121 0,0 -7e-6,0 -7e-6,0 -0.806699,0.53271 -1.608082,1.4497 -2.504853,2.53144 -2.536398,3.13855 -4.509309,7.05435 -6.473808,11.08954 -7.173572,11.28625 -13.234943,23.77301 -18.66461,34.80756 C 22.092397,182.64974 20.913983,139.56182 23.002745,139.4723 Z m 56.240083,-29.60004 c -0.633787,-1.5392 19.107367,-10.685928 51.534422,-22.194994 0.0613,0.06153 0.118,0.118587 0.17931,0.180097 0.17106,0.171676 0.34228,0.343483 0.51364,0.515421 0.66127,0.663498 1.32475,1.328948 1.99042,1.996344 0,0 6e-5,5.2e-5 6e-5,5.2e-5 2e-5,-1.47e-4 -0.20369,1.183839 -0.20366,1.183693 -0.2388,1.385343 -0.48256,2.790263 -0.73115,4.214027 -0.71658,4.104114 -1.47333,8.3648 -2.26743,12.76445 0,1e-5 0,1e-5 0,1e-5 -0.7459,4.13262 -1.52475,8.38786 -2.3342,12.75111 7.3e-4,-0.004 -0.78379,4.20757 -0.78306,4.20365 -0.0734,0.3926 -0.1471,0.78601 -0.221,1.18022 l 0,0 -7e-5,7e-5 0,0 c -0.002,0.002 -2.27305,2.22451 -2.27476,2.22619 0,0 -8e-5,7e-5 -8e-5,7e-5 -1e-5,1e-5 -2e-5,3e-5 -4e-5,4e-5 -0.22245,0.21468 -0.44498,0.42943 -0.66758,0.64425 -0.0785,0.0757 -0.15453,0.14923 -0.23303,0.22498 -0.034,0.0263 -0.0672,0.052 -0.10113,0.0783 -0.0954,0.0739 -0.19091,0.14777 -0.28637,0.22166 -0.37256,0.28839 -0.74529,0.57692 -1.11821,0.8656 5e-5,0 -0.48469,0.0306 -0.48464,0.0306 7.8e-4,-4e-5 -1.83471,0.11511 -1.83393,0.11506 -2.15629,0.13462 -4.3356,0.26837 -6.5364,0.40111 -6.43779,0.38829 -13.05937,0.76795 -19.825835,1.13549 -3.487756,0.18945 -7.014007,0.37568 -10.573426,0.55821 -3.112226,0.1596 -6.199515,0.3138 -9.258294,0.46255 -0.0119,5.8e-4 -6.529076,0.31127 -6.540977,0.31184 -9.15e-4,5e-5 -1.834544,0.0852 -1.83546,0.0852 0,0 -1e-5,0 -1e-5,0 -6.4e-5,0 -0.484973,0.0224 -0.485037,0.0224 h 0 l -1e-5,0 0,0 c -0.838552,-0.48755 -1.676873,-0.97495 -2.514961,-1.46223 -0.136249,-0.0766 -0.272489,-0.15327 -0.408719,-0.22989 -0.04769,-0.0268 -0.09578,-0.0539 -0.143474,-0.0807 -2.1e-5,-10e-6 -1.49e-4,-9e-5 -1.49e-4,-9e-5 -0.04339,-0.029 -0.08731,-0.0584 -0.130702,-0.0875 0,0 -1.28e-4,-8e-5 -1.28e-4,-8e-5 -0.123403,-0.0826 -0.246799,-0.16522 -0.370186,-0.24781 -0.481388,-0.32226 -0.962648,-0.64443 -1.44378,-0.96652 -1.7e-5,-1e-5 -3.5e-5,-2e-5 -5.3e-5,-3e-5 -2.3e-5,-5e-5 -0.184731,-0.42218 -0.184754,-0.42223 -3.25e-4,-7.4e-4 -0.69816,-1.59696 -0.698485,-1.59771 -0.004,-0.009 -2.478265,-5.68742 -2.482292,-5.69663 l 0,0 C 53.909382,117.32731 51.418407,111.54718 49.028447,105.95365 46.45798,99.937661 44.004362,94.137537 41.685215,88.597406 l 0,0 c -0.814162,-1.944922 -1.611751,-3.857802 -2.392005,-5.73673 -1.46e-4,-3.52e-4 -0.668101,-1.610782 -0.668247,-1.611134 l 0,0 c -0.0589,-0.142183 -0.117701,-0.284164 -0.176397,-0.425943 7.6e-5,-1.41e-4 7.7e-5,-1.43e-4 7.8e-5,-1.45e-4 0.51115,-1.00341 1.021723,-2.005736 1.53172,-3.006975 4.9e-5,-9.4e-5 6.5e-5,-1.28e-4 8.1e-5,-1.61e-4 0.07168,-0.148201 0.143342,-0.296361 0.214981,-0.444481 0,0 6e-5,-1.24e-4 6e-5,-1.24e-4 0.0248,-0.05128 0.05075,-0.104971 0.07555,-0.156253 0.03157,-0.05169 0.06506,-0.10649 0.09662,-0.158164 0.09136,-0.149509 0.1827,-0.298973 0.274012,-0.448392 0.356636,-0.583584 0.712882,-1.16648 1.068737,-1.748686 1.8e-5,-2.9e-5 3.6e-5,-5.9e-5 5.4e-5,-8.8e-5 0,0 9e-6,-10e-7 9e-6,-10e-7 2.7e-5,-4e-6 0.487296,-0.06379 0.487324,-0.06379 l 0,0 c 0.618544,-0.08089 1.233346,-0.160999 1.844343,-0.24031 l 0,0 c 2.244195,-0.291306 4.437068,-0.57188 6.575531,-0.841356 l 0,0 c 7.338916,-0.924806 14.036999,-1.718901 19.969411,-2.367503 l 0,0 c 8.295837,-0.906999 15.094402,-1.529488 20.054314,-1.827044 l 0,0 c 2.859059,-0.171521 5.107178,-0.235075 6.678971,-0.18292 l 0,0 c 0.827331,0.02745 1.467282,0.08696 1.910317,0.179661 l 0,0 c 0.226487,0.04739 0.401512,0.10345 0.5238,0.168336 l 0,0 c 0,0 10e-7,10e-7 10e-7,10e-7 0.06178,0.03278 0.110102,0.06781 0.144798,0.105119 0,0 10e-7,0 10e-7,0 0.02404,0.06075 0.03978,0.09126 0.0496,0.106563 0,0 0,0 0,0 0.0097,0.01505 0.01357,0.01534 0.01396,0.01532 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 1.8e-5,-10e-7 1.4e-5,0 1.4e-5,0 0,0 4e-6,-10e-7 -1.4e-5,4e-6 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -3.74e-4,1.05e-4 -0.004,0.0016 -0.0086,0.01886 0,0 0,10e-7 0,10e-7 -0.0047,0.01758 -0.01028,0.05145 -0.01454,0.116638 0,0 0,10e-7 0,10e-7 -0.02159,0.04615 -0.05684,0.09431 -0.105591,0.144455 0,0 -1e-6,0 -1e-6,0 l 0,0 c -0.0965,0.09926 -0.245906,0.206285 -0.446953,0.320838 l 0,0 c -0.393271,0.224078 -0.984148,0.476946 -1.763209,0.756757 l 0,0 c -1.480088,0.531594 -3.639404,1.16043 -6.413336,1.87383 l 0,0 C 86.398391,74.381197 79.736439,75.873302 71.5621,77.553702 l 0,0 c -5.845527,1.201665 -12.464456,2.49962 -19.733428,3.869656 l 0,0 c -2.118082,0.39921 -4.291357,0.804541 -6.516772,1.215392 l 0,0 c -0.605884,0.111857 -1.215634,0.224123 -1.829187,0.336787 l 0,0 c 2.8e-5,-5e-6 -0.483439,0.08871 -0.483411,0.0887 -3e-6,10e-7 -5e-6,10e-7 -8e-6,2e-6 1.4e-5,-2.9e-5 2.7e-5,-5.8e-5 4.1e-5,-8.7e-5 0.27243,-0.5691 0.545216,-1.138884 0.818358,-1.709352 0.06994,-0.14606 0.139892,-0.292166 0.209873,-0.438316 0.02515,-0.05249 0.04891,-0.102114 0.07406,-0.154604 0.02857,-0.04633 0.05568,-0.09025 0.08426,-0.136598 0,0 6.7e-5,-1.09e-4 6.7e-5,-1.09e-4 0.07989,-0.129547 0.159794,-0.259133 0.239724,-0.388757 1.8e-5,-2.9e-5 3.5e-5,-5.8e-5 5.3e-5,-8.7e-5 0.542189,-0.928876 1.084933,-1.858749 1.628266,-2.789679 2e-6,-2e-6 3e-6,-4e-6 4e-6,-5e-6 6.4e-5,-1.62e-4 0.197759,0.41638 0.197749,0.416357 -1.62e-4,-3.41e-4 0.747174,1.576501 0.747012,1.57616 0.87055,1.838833 1.754662,3.713294 2.651428,5.621537 l 0,0 c 2.554449,5.43565 5.211585,11.145405 7.950489,17.086607 2.54657,5.52398 5.163828,11.24805 7.834961,17.1379 l 0,0 c 0.848457,1.87085 1.70235,3.75842 2.56114,5.66163 l 0,0 c -3.33e-4,-7.4e-4 0.717108,1.59032 0.716775,1.58958 -2.4e-5,-5e-5 0.189335,0.42026 0.189311,0.4202 -1.6e-5,0 -3.3e-5,-1e-5 -5e-5,-2e-5 -0.448962,-0.24964 -0.898049,-0.49936 -1.347259,-0.74914 -0.11514,-0.064 -0.230287,-0.12806 -0.345443,-0.19209 0,0 -1.19e-4,-6e-5 -1.19e-4,-6e-5 -0.04077,-0.0227 -0.08122,-0.0452 -0.121992,-0.0679 0,0 -1.19e-4,-7e-5 -1.19e-4,-7e-5 -0.04046,-0.0274 -0.08043,-0.0544 -0.120904,-0.0818 -0.114866,-0.0777 -0.229741,-0.15545 -0.344624,-0.23318 -0.754709,-0.49155 -1.509637,-0.98323 -2.264783,-1.47506 l 0,0 1.1e-5,0 h 0 c -6.4e-5,1e-5 0.484842,-0.0274 0.484779,-0.0274 0,0 10e-6,0 10e-6,0 -9.13e-4,5e-5 1.835466,-0.10301 1.834552,-0.10296 -0.01186,6.6e-4 6.55042,-0.35956 6.538563,-0.3589 3.057949,-0.16494 6.144817,-0.32736 9.257042,-0.48696 3.55942,-0.18254 7.086223,-0.358 10.575061,-0.52633 6.768568,-0.32656 13.394249,-0.62625 19.837989,-0.89855 2.20283,-0.0931 4.38439,-0.18298 6.54314,-0.26964 7.8e-4,-3e-5 1.8353,-0.0731 1.83608,-0.0731 5e-5,-1e-5 0.48517,-0.0191 0.48522,-0.0191 -0.28951,0.28441 -0.57885,0.56866 -0.86803,0.85277 -0.0741,0.0728 -0.14819,0.1456 -0.22228,0.21838 -0.026,0.0255 -0.0526,0.0516 -0.0786,0.0771 -0.0733,0.0557 -0.14842,0.1127 -0.2217,0.16841 -0.21185,0.16105 -0.42363,0.32204 -0.63533,0.48296 -1e-5,1e-5 -2e-5,2e-5 -4e-5,3e-5 0,0 -6e-5,5e-5 -6e-5,5e-5 0.002,-0.001 -2.15209,1.60444 -2.15012,1.60297 l 0,0 -7e-5,5e-5 0,0 c 0.0834,-0.39231 0.16672,-0.78379 0.24993,-1.17443 8.4e-4,-0.004 0.89312,-4.17753 0.89396,-4.18147 0.93099,-4.33895 1.84868,-8.56641 2.74963,-12.66802 0,0 0,-1e-5 0,-1e-5 0.95917,-4.36665 1.89935,-8.590644 2.81639,-12.654666 0.31814,-1.409854 0.63349,-2.800456 0.94588,-4.171082 3e-5,-1.46e-4 0.26724,-1.170822 0.26728,-1.170968 0,0 5e-5,3.6e-5 5e-5,3.6e-5 0.70727,0.459413 1.4123,0.917111 2.11507,1.37309 0.18212,0.118162 0.36409,0.236208 0.5459,0.354139 0.0619,0.04015 0.12875,0.08338 0.19063,0.123528 C 99.805986,104.22327 79.876615,111.41146 79.242828,109.87226 Z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect125;#path-effect127" + inkscape:original-d="m 23.002745,139.4723 c 1.480267,34.53312 4.440006,103.60015 4.440006,103.60015 0,0 18.746959,-52.29368 28.12004,-78.44011 9.3735,24.66613 18.746959,49.33314 28.120043,74.0001 41.933906,-1.48027 83.867056,-2.96027 125.800186,-4.44 M 79.242828,109.87226 C 96.01645,102.96532 129.5629,89.15223 129.5629,89.15223 c 0,0 -7.40001,37.00005 -7.40001,37.00005 0,0 -57.720084,2.96001 -57.720084,2.96001 0,0 -22.256486,-50.123624 -22.256486,-50.123624 0,0 57.776538,-9.076465 57.776538,-9.076465" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_mixed_0_92_5.svg b/testfiles/lpe_tests/Bendpath_mixed_0_92_5.svg new file mode 100644 index 0000000..4357bcc --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_mixed_0_92_5.svg @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + id="svg2" + version="1.1" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="1.svg" + viewBox="0 0 744.09448 1052.3622" + inkscape:test-threshold="0.2"> + <defs + id="defs4"> + <inkscape:path-effect + effect="bend_path" + id="path-effect04" + is_visible="true" + bendpath="m -71.848022,2332.9475 c 167.785364,-1.4957 120.742766,97.6986 559.991942,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + bendpath="m 541.92066,455.73744 c 173.78003,17.32387 289.14039,361.79789 530.62074,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect02" + is_visible="true" + bendpath="m -13.248811,776.71412 c 119.200451,-6.90632 190.143431,-21.85556 481.915191,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect03" + is_visible="true" + bendpath="m 45.714279,298.07648 c 148.081221,-21.44259 208.868391,-130.17924 508.571441,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + sodipodi:type="arc" + style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path05" + sodipodi:cx="300" + sodipodi:cy="298.07648" + sodipodi:rx="254.28572" + sodipodi:ry="217.14285" + d="m 554.19068,298.0352 c -13.7036,31.55557 -36.11498,58.37834 -63.66262,80.23295 -27.53616,21.8455 -59.00722,37.82984 -89.84105,49.499 -23.50956,8.96801 -45.66758,15.1277 -63.58515,19.4369 -13.03812,3.22466 -23.66729,4.75449 -32.30216,5.11508 -0.0433,8.7e-4 -0.0865,0.002 -0.12984,0.002 -6.97986,0.12555 -14.03432,-0.88959 -21.77909,-2.97281 -7.46986,-2.13733 -17.52014,-4.2022 -30.14549,-6.97586 -13.42106,-2.8032 -30.50747,-5.32681 -49.01326,-9.05752 -23.17046,-4.46034 -47.04609,-10.81707 -69.34857,-20.80213 -26.69298,-11.87042 -47.754389,-28.625 -62.589501,-48.66377 -14.845978,-20.05344 -22.807805,-42.40263 -26.182215,-65.7582 -3.332742,-23.06717 -2.185867,-47.22992 0.898061,-70.23736 3.01186,-22.46978 8.285553,-46.59584 14.686666,-67.20578 5.580867,-17.67465 13.34333,-35.515 26.0807,-52.51571 C 97.886769,93.995401 112.33531,79.854771 132.61663,66.284793 151.98315,53.347567 175.46466,41.955614 203.39285,33.0878 c 29.51335,-9.196903 60.75002,-14.317329 92.63392,-14.965389 -10e-6,0 0.59343,-0.01154 0.59342,-0.01154 37.96502,-0.516257 73.28835,4.854295 104.69425,14.96858 42.86218,13.849838 77.15947,34.54554 102.91684,58.79605 33.52951,31.508422 53.10085,67.679352 60.61706,103.622982 7.52432,35.98238 2.94839,71.20581 -10.65766,102.53672 z" + inkscape:path-effect="#path-effect03" + transform="translate(-27.702995,8.1736869)" /> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:transform-center-x="-15.411777" + inkscape:transform-center-y="-9.5360473" + d="m 310.54955,1011.3695 c -10.06484,-9.5078 -20.17451,-18.96286 -30.34534,-28.35832 -29.9039,-27.72689 -60.05858,-54.98816 -91.21831,-81.37036 -7.4318,2.499 -14.80496,5.04808 -22.11481,7.65144 -27.45255,9.83571 -55.04872,20.56979 -83.197408,31.73092 -2e-6,0 -5e-6,0 -7e-6,0 C 68.483494,946.9588 52.73432,953.01659 36.258504,959.03186 50.024068,915.54617 62.646247,872.04518 75.511131,828.61375 78.830058,817.32002 82.189904,806.03118 85.60016,794.74859 81.026146,788.95252 76.421639,783.16838 71.791915,777.39505 40.651079,738.59079 8.6997502,700.10128 -20.062786,660.72559 c 26.4775607,-0.10063 54.258349,-0.96403 83.263283,-1.64615 29.967274,-0.73739 60.432163,-1.05299 91.330413,-0.55682 1.78107,-2.31662 3.57153,-4.6306 5.37168,-6.94185 34.10474,-44.06774 70.40242,-87.1745 107.60524,-129.50323 8.4435,30.9148 16.53024,61.86953 24.31623,92.85291 6.18201,24.66811 12.19108,49.35194 18.04241,74.05013 54.54271,21.07779 107.71209,43.4795 160.29253,66.46235 -50.27581,27.56073 -100.03515,55.6666 -148.26134,84.83804 -3.85379,57.02559 -7.63702,114.05509 -11.34811,171.08853 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect02" + inkscape:original-d="M 320.86843,1020.5359 187.36023,912.92906 23.028456,961.90598 84.112321,801.67981 -13.248811,660.52571 158.01129,669.1073 262.17058,532.89235 l 44.7607,165.52989 161.7351,56.96863 -143.59646,93.72151 z" /> + <g + id="g03" + inkscape:path-effect="#path-effect01" + transform="translate(-124.84586,-8.9691701)"> + <path + id="path02" + d="m 763.54706,902.80809 c -8.7395,37.57996 -36.52197,68.88373 -83.57762,86.77592 -33.87485,13.10099 -75.40175,19.12079 -116.36492,17.58049 -58.34099,-2.1168 -116.81437,-16.35551 -153.84711,-32.9239 -19.61689,-8.266 -35.21201,-16.9145 -45.46904,-24.91291 -7.10271,-5.53868 -11.37006,-10.53558 -13.28703,-15.06828 -7.01553,-12.0955 11.19431,-20.45061 35.0686,-31.62668 15.98042,-7.02052 36.01176,-16.71125 54.80939,-29.6811 20.3211,-13.63707 37.57429,-32.11943 49.63481,-53.73673 12.24824,-21.95375 18.32327,-45.31265 21.10909,-71.30252 2.74035,-25.56554 2.14086,-50.59297 3.21943,-73.85327 1.09966,-23.71514 3.80597,-44.29285 10.88854,-62.95468 6.73508,-17.36654 16.77955,-30.59269 29.88193,-39.64979 21.23025,-14.44164 46.6518,-15.90324 70.72021,-6.72821 8.86328,3.42255 17.3733,8.30426 25.41953,14.55725 11.65038,9.05389 21.59436,20.39693 30.16934,33.38273 16.12627,24.78373 29.5279,58.41766 41.70367,94.41515 7.32148,21.14041 19.77873,56.90988 27.05747,80.91256 11.5266,37.55599 21.46035,77.84833 12.86371,114.81397 z" + style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:original-d="m 817.14285,749.50507 c 0,129.39243 -61.40094,234.28572 -137.14285,234.28572 -75.74191,0 -137.14285,-104.89329 -137.14285,-234.28572 0,-129.39243 61.40094,-234.28572 137.14285,-234.28572 75.74191,0 137.14285,104.89329 137.14285,234.28572 z" + inkscape:connector-curvature="0" /> + <path + id="path01" + d="m 977.10386,541.91581 c -1.77588,0.59952 -3.55181,1.18287 -5.32765,1.74955 -16.51313,5.25064 -32.78701,8.92193 -48.13442,10.03468 -12.73457,0.88703 -24.55197,0.15854 -34.54271,-2.78583 -8.5541,-2.5591 -15.82816,-6.32107 -21.04293,-11.23853 -4.77696,-4.44582 -8.63402,-9.62628 -11.34181,-15.00716 -2.66483,-5.02136 -5.02288,-10.6325 -7.34178,-16.34514 -0.23731,0.12937 -0.47759,0.25745 -0.72081,0.38424 -5.8702,2.9698 -13.37745,4.61644 -22.0845,5.3313 0,0 0,0 0,0 -18.6937,1.4819 -40.76622,-2.15048 -64.66033,-7.63316 0,0 -10e-6,0 -10e-6,0 -24.49707,-5.69137 -50.33998,-13.4819 -76.82166,-20.53239 -7.50889,-2.01283 -15.11382,-3.97172 -22.77134,-5.79148 23.41552,-20.67167 47.63121,-40.62201 71.95942,-60.22561 24.42941,-19.62095 49.17002,-38.90629 73.80868,-58.22326 -2.56297,-9.30672 -5.53181,-18.87568 -9.01614,-28.73714 0,-10e-6 0,-10e-6 0,-10e-6 -11.12213,-33.4903 -30.57849,-70.33665 -64.60367,-110.79704 0,0 -1e-5,-1e-5 -1e-5,-1e-5 -16.53104,-19.15635 -37.62929,-38.25477 -64.22632,-56.92613 -26.37302,-18.40695 -57.83467,-34.59457 -95.0137,-47.76614 38.18812,2.95701 73.12053,9.20404 104.5061,18.47322 31.67957,9.34233 59.41039,19.75199 83.07645,30.85602 10e-6,0 10e-6,0 2e-5,0 48.91146,23.41563 86.51947,45.22781 113.10811,63.02099 0,1e-5 10e-6,1e-5 10e-6,1e-5 28.68929,18.27376 49.92539,32.10659 64.35773,39.6907 2.57257,1.23313 4.85261,2.30123 6.84183,3.19254 27.00338,-19.39655 45.37148,-44.31076 50.09106,-78.58978 2.0436,-19.62722 -2.48459,-41.18791 -15.32492,-65.14312 0,0 0,-1e-5 0,-1e-5 -4.07948,-7.42572 -8.95402,-14.80591 -14.68033,-22.12737 -19.26338,8.19015 -39.27623,17.56791 -59.51466,27.75725 -30.56149,15.41101 -57.47123,35.0593 -80.65335,57.1055 -24.79553,24.4291 -39.83912,50.05589 -47.2913,75.6788 0,10e-6 0,10e-6 0,10e-6 -0.83629,3.11966 -1.55125,6.19782 -2.14893,9.23504 -12.71782,7.3256 -21.13994,13.46681 -25.47694,18.87591 0,0 0,0 0,0 -5.60996,6.91823 -7.02638,10.50785 -4.29546,11.53313 0,0 0,0 0,0 9.65487,1.27935 25.73598,-12.03918 49.67413,-34.70434 10.11644,45.39988 25.83455,85.68077 34.75004,123.93153 2.2117,7.94346 4.78078,15.68694 7.36321,23.20204 33.93563,38.70782 72.65174,73.49235 114.10913,105.18105 7.71548,5.87944 15.51334,11.65839 23.38976,17.34014 z" + inkscape:transform-center-y="-25.196191" + inkscape:transform-center-x="-1.5167159" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:original-d="M 965.7143,435.21933 803.2602,346.12981 637.77267,429.4494 672.30076,247.4162 541.92066,115.77537 725.71429,92.362187 810.62249,-72.31591 889.68511,95.247154 1072.5414,125.11132 937.61111,252.08417 Z" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:#ff0000;stroke-width:0.9375" + d="m 488.04482,2332.9695 c 8.23515,37.0297 3.19849,76.61 -16.06733,114.1149 -19.26258,37.4985 -52.25701,71.8325 -97.37199,97.9127 -33.52991,19.4678 -74.00079,33.7944 -119.93567,40.4806 -12.81407,1.9005 -26.21223,3.1096 -40.12464,3.5477 -19.97539,0.629 -40.8529,-0.3377 -62.25162,-3.0582 -27.96732,-3.5405 -56.302824,-10.6667 -83.797274,-21.2012 -23.698829,-9.2337 -43.054328,-20.0182 -58.77882,-31.5713 0,0 -1.46e-5,0 -1.46e-5,0 -15.2718786,-11.3719 -24.2910164,-22.28 -29.9847714,-32.3763 -6.545938,-12.5469 -11.644594,-26.5641 -16.267569,-40.0575 -6.957931,-19.4768 -16.109142,-40.1413 -23.165527,-61.6274 -7.108359,-21.6444 -12.042481,-43.614 -12.249135,-66.1851 -0.204302,-22.3135 4.284373,-44.9662 15.687782,-65.9587 11.339891,-20.8756 29.836036,-40.5398 57.5382447,-54.7002 20.3518573,-10.0616 43.7519283,-17.1662 68.3223323,-20.9971 18.150105,-3.0862 35.452312,-5.4263 47.189842,-8.3859 0,0 2e-5,0 2e-5,0 11.39472,-3.278 20.80481,-6.2555 27.41307,-9.6253 8.30242,-3.6018 17.31863,-6.5401 27.84434,-8.2743 8.503,-1.314 17.84365,-2.2648 28.17564,-2.6532 7.19774,-0.2706 14.85514,-0.267 22.97194,0.076 28.87982,1.0946 60.33505,5.5107 91.9029,14.4458 42.22229,11.9424 81.46465,31.5291 112.42625,58.5575 30.96806,27.034 52.25119,60.3465 60.522,97.5364 z" + id="path06" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect04" + inkscape:original-d="M 488.14392,2332.9475 A 279.99597,213.43088 0 0 1 208.14795,2546.3784 279.99597,213.43088 0 0 1 -71.848022,2332.9475 279.99597,213.43088 0 0 1 208.14795,2119.5166 279.99597,213.43088 0 0 1 488.14392,2332.9475 Z" + transform="translate(287.39207,-1107.3048)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_multiGroup_1_0_2.svg b/testfiles/lpe_tests/Bendpath_multiGroup_1_0_2.svg new file mode 100644 index 0000000..61602b7 --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_multiGroup_1_0_2.svg @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs3"> + <inkscape:path-effect + effect="bend_path" + id="path-effect04" + is_visible="true" + lpeversion="1" + bendpath="m -65.789965,88.449547 c 124.842916,-12.335315 201.669785,-51.841313 439.925665,0" + prop_scale="1.101" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect05" + is_visible="true" + lpeversion="1" + bendpath="m -65.78849,75.817362 c 124.910291,7.367139 178.09272,57.844068 411.50413,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect03" + is_visible="true" + lpeversion="1" + bendpath="M -60.605156,7.0826159 C 60.029211,16.334865 73.436372,203.49245 327.06945,129.80358" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect02" + is_visible="true" + lpeversion="1" + bendpath="m 31.856415,87.033226 c 35.683167,15.390454 69.446235,36.387984 122.860505,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + lpeversion="1" + bendpath="m 83.175661,155.75452 c 41.828969,-7.30824 88.608949,-8.05253 142.024089,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath02"> + <path + id="path08" + style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.264583" + d="m -24.62963,-84.99342 c 7.062021,0.592752 14.10875,1.60538 21.0805249,3.039321 8.5566975,1.610462 16.9056681,3.853665 24.9463611,6.695007 8.598484,3.100754 16.665882,6.879633 24.213161,11.273451 0,0 2.5e-5,2e-5 2.5e-5,2e-5 18.588552,11.112951 32.950669,23.995414 44.250818,36.287577 3e-6,6e-6 1.2e-5,1.3e-5 1.8e-5,1.9e-5 4.499507,4.8033 8.754407,9.559739 12.728782,14.095112 0.21245,0.243657 3.17571,3.6451843 3.38816,3.8888421 5.35768,6.184156 10.44491,12.1105559 15.19453,17.5428271 0,4.4e-6 0,8.8e-6 1e-5,1.37e-5 9.81143,11.0674191 18.96947,20.9814671 27.53427,28.6794401 0,-3e-6 1e-5,1e-5 1e-5,1e-5 9.0988,8.147773 17.92026,14.924206 26.43964,19.507362 8.18216,4.563446 16.94808,7.897899 25.91126,9.952523 1.34982,0.309204 2.70359,0.589857 4.06003,0.841894 5.42035,1.092079 11.10789,1.671942 17.0178,1.847704 8.18747,0.243282 16.83089,-0.297033 25.75133,-1.353637 20.52619,-2.485285 42.18454,-8.974042 64.48364,-16.966436 14.06477,49.051694 26.36888,95.83731 38.51774,144.51115 -29.05849,12.0714 -59.94016,21.58668 -92.14438,26.57333 -16.05645,2.50707 -32.46193,3.53454 -48.98298,2.77905 -2.49165,-0.11811 -4.98951,-0.2811 -7.49405,-0.49044 -6.57787,-0.55586 -13.16588,-1.45939 -19.77484,-2.7316 -1e-5,0 -1e-5,0 -1e-5,-1e-5 -20.91428,-4.17318 -41.14211,-12.3397 -60.71475,-24.03334 -0.50381,-0.30693 -1.00855,-0.61603 -1.51414,-0.92729 -6.02596,-3.76121 -12.0298,-7.70106 -17.97893,-11.8515 C 90.478869,175.8483 79.792345,167.07336 69.855446,157.68731 55.84397,144.47655 43.990203,131.34469 33.306687,119.13384 c -1.767784,-1.99714 -3.43457,-3.89068 -5.121985,-5.80756 -3.095768,-3.48674 -6.148337,-6.93375 -9.420837,-10.56117 C 14.374498,97.858342 10.200161,93.383855 6.1552907,89.446989 -1.6073773,82.094727 -8.2108539,76.285427 -13.890515,73.335602 c -5.322087,-3.007321 -10.947334,-4.945459 -16.0682,-5.298985 2.340508,-63.1567806 2.988577,-89.873256 5.329085,-153.030037 z" + sodipodi:nodetypes="ccccc" + inkscape:original-d="m -79.342477,57.256142 c 136.172786,-0.538088 276.424987,-4.202435 406.411927,0 V 197.04226 H -79.342477 Z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath01"> + <path + id="path07" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 332.48625,103.03076 c 0.3542,19.50853 -12.30011,39.54953 -35.70402,56.97711 -21.57418,16.06509 -51.1962,29.21518 -84.94191,38.05883 0,0 -1e-5,0 -1e-5,0 -3.11265,0.82564 -6.26266,1.61094 -9.44872,2.3546 0,-1e-5 0,0 0,0 -22.05846,5.01303 -44.67524,7.46289 -67.71992,7.27009 -4.03947,-0.0338 -8.07235,-0.14867 -12.09887,-0.34249 -6.34029,-0.36455 -12.9249,-0.88239 -19.71125,-1.58892 -21.876258,-2.48927 -42.356105,-6.39232 -61.604639,-11.99123 -8.253843,-2.2722 -16.034928,-4.79106 -23.322584,-7.51832 -25.2111109,-9.60549 -45.352131,-21.71789 -59.306839,-35.13929 -13.981978,-13.44764 -21.910672,-28.36224 -22.58052,-43.77494 -0.669603,-15.407088 5.978104,-30.981141 20.17292,-44.824059 13.444364,-13.111069 33.261851,-24.25732 58.514156,-31.957181 1.50649,-0.460131 3.033794,-0.907863 4.581562,-1.342642 25.943248,-7.489263 53.71773,-10.898756 82.510934,-12.654763 2.03172,-0.114164 4.07763,-0.21824 6.13636,-0.31138 8.23885,-0.355378 16.51576,-0.52234 24.7741,-0.495616 22.70952,0.07348 45.37857,1.611059 67.06761,4.761302 0,0 2e-5,1e-6 2e-5,1e-6 8.8546,1.281998 17.46954,2.821506 25.79343,4.626437 27.03992,5.888593 50.82104,14.401022 69.2844,25.608547 24.04361,14.594818 37.24871,32.72746 37.60379,52.283914 z" + inkscape:original-d="M 326.69518,109.32773 A 215.90028,87.225465 0 0 1 110.79489,196.55319 215.90028,87.225465 0 0 1 -105.10539,109.32773 215.90028,87.225465 0 0 1 110.79489,22.102262 215.90028,87.225465 0 0 1 326.69518,109.32773 Z" /> + </clipPath> + </defs> + <g id="t" transform="scale(0.445)"> + <g + id="g06" + inkscape:path-effect="#path-effect05;#path-effect04" + transform="translate(-21.404339,10.758344)" + clip-path="url(#clipPath01)"> + <g + id="g05" + clip-path="url(#clipPath02)" + inkscape:path-effect="#path-effect03"> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + id="path04" + inkscape:path-effect="#path-effect02" + sodipodi:type="arc" + sodipodi:cx="93.286667" + sodipodi:cy="87.033226" + sodipodi:rx="61.430252" + sodipodi:ry="55.334381" + d="m 179.13513,95.337362 c 1.81688,10.872138 1.81501,24.316668 -4.08661,36.240288 -5.70717,11.53073 -18.06269,22.7703 -38.28969,21.93242 0,0 0,0 0,0 -0.3057,-0.0132 -0.61299,-0.0292 -0.92187,-0.048 0,-10e-6 -1e-5,0 -1e-5,0 -5.88088,-0.5081 -11.85757,-2.06202 -17.73442,-4.58586 -5.61734,-2.44765 -11.26942,-5.78688 -16.66962,-9.97815 -2.336533,-1.82307 -4.609824,-3.80029 -6.8028,-5.9278 -1.650931,-1.60164 -3.238304,-3.27095 -4.758764,-5.0017 -1.605021,-1.826 -3.132221,-3.71102 -4.579498,-5.64754 C 73.14522,105.53367 68.703153,88.872388 68.355773,75.694565 c 0,-1.4e-5 -0.0029,-0.09738 -0.0029,-0.0974 -0.399454,-13.398153 2.992471,-24.216959 7.887126,-32.497099 4.946863,-8.368459 11.820217,-14.825389 19.457148,-18.501772 1.982189,-0.954216 3.98847,-1.711935 6.015306,-2.285585 2.17212,-0.605024 4.38027,-0.996812 6.62339,-1.18847 0,0 0,0 0,0 0.97205,-0.08126 1.94973,-0.124703 2.93294,-0.13146 3.02378,-0.02836 6.08447,0.296868 9.1752,0.938273 8.56301,1.777044 16.17635,5.703738 22.50862,8.966769 2.5645,1.248474 5.06267,2.554374 7.01158,3.576437 2.523,1.31114 4.52361,2.409384 5.77871,3.020129 0.47736,0.275296 0.91182,0.601823 1.31472,0.994245 1.4786,1.440145 2.44105,3.679004 3.52767,7.010865 0,0 0,2e-6 0,2e-6 1.94558,5.569343 5.51608,12.359899 9.21166,20.652458 0.25567,0.573705 0.51035,1.151855 0.76347,1.734253 0,0 0,10e-7 0,10e-7 3.29521,7.761401 6.83743,17.05516 8.57473,27.451148 z" /> + <path + id="path03" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="4.8549476" + inkscape:transform-center-y="2.5126846" + d="m 227.59021,217.54179 c -5.6898,-0.97474 -11.36891,-2.08967 -17.03266,-3.35144 -2.73815,-0.62276 -5.47674,-1.28409 -8.21597,-1.98516 -5.924,-1.50223 -11.82458,-3.21332 -17.70782,-5.13957 -4.01395,-1.3356 -7.99166,-2.78231 -11.93487,-4.33361 -15.05139,10.42766 -30.06757,19.2289 -45.1364,27.24275 0.0636,-19.02715 0.48784,-38.06585 1.56227,-56.97203 0,0 -0.005,-0.005 -0.005,-0.005 -3.39675,-3.5193 -6.72531,-7.09043 -9.99097,-10.70198 -6.03841,-6.73848 -11.87498,-13.47909 -17.65476,-20.41982 -3.904209,-4.70328 -7.688554,-9.42304 -11.409854,-14.19477 -0.008,-0.0101 -0.94014,-1.2072 -0.948129,-1.21747 0.04133,6.5e-4 1.687284,0.0484 1.728671,0.0496 3.451589,0.1042 6.93649,0.19747 10.446982,0.26626 5.09066,0.0791 10.15119,0.0973 15.12436,0.0327 7.95337,-0.12978 15.86859,-0.49666 23.62652,-1.2528 6.78754,-16.44018 13.867,-33.117376 20.84196,-49.529483 1.05998,2.773086 2.14629,5.526438 3.26874,8.265237 5.36598,13.298911 11.99146,26.570526 19.62229,39.398046 4.51382,0.052 9.00642,-0.053 13.47061,-0.31123 1.60325,-0.0863 3.20614,-0.19231 4.80896,-0.31715 5.30093,-0.42047 10.59534,-1.03531 15.8964,-1.80893 4.5828,-0.6662 9.17165,-1.44951 13.76959,-2.32784 -4.96926,10.64395 -10.30529,21.07181 -16.08342,31.41158 -3.15158,5.68171 -6.41799,11.31154 -9.80934,16.91123 2.30572,5.78104 4.6848,11.55322 7.09036,17.26508 4.74697,11.09495 9.75332,22.25976 14.67175,33.0263 8e-5,3e-5 1.5e-4,5e-5 2.2e-4,8e-5 -5e-5,-1.3e-4 -1e-4,-2.6e-4 -1.5e-4,-3.9e-4 z" + inkscape:path-effect="#path-effect01" + inkscape:original-d="m 225.19975,191.25704 -50.56838,-3.19465 -31.29966,39.84593 -12.58819,-49.08059 -47.567859,-17.45468 42.788449,-27.13882 1.9011,-50.633508 39.03291,32.307868 48.74281,-13.83855 -18.66478,47.10618 z" /> + </g> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + id="path02" + cx="71.207207" + cy="183.86308" + rx="30.95842" + ry="33.038174" + d="m 126.60804,193.65212 c 0.15722,6.76301 -1.12891,13.34365 -3.63097,18.98472 -0.69764,1.57992 -1.49616,3.0882 -2.3951,4.50814 -4.08949,6.45964 -9.98261,10.64122 -16.98529,11.76851 0,0 0,0 0,0 -1.51135,0.22507 -3.0472,0.30738 -4.592733,0.24609 -8.00345,-0.31737 -15.792265,-4.42489 -21.576923,-11.44974 -5.788094,-7.02903 -9.042892,-16.36171 -9.156848,-25.97967 -0.113811,-9.60582 2.914372,-18.69741 8.343143,-25.26118 5.431763,-6.56738 12.837426,-10.09356 20.597887,-9.81741 1.506522,0.0536 3.013074,0.25016 4.506554,0.58813 0,0 1e-5,0 1e-5,0 7.27652,1.60271 13.6176,6.47373 18.0426,13.32158 4.17119,6.40239 6.64629,14.42827 6.84767,23.09083 z" /> + <path + id="path01" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="-3.2135342" + inkscape:transform-center-y="0.20522625" + d="m 200.46355,70.663667 c -5.06909,-6.136156 -10.15082,-12.332028 -15.17841,-18.51576 -7.0543,1.52127 -14.10624,2.999084 -21.16257,4.430037 3.34253,-7.686796 6.65227,-15.372125 9.92957,-23.080315 -3.3342,-7.691499 -6.65512,-15.417948 -9.92727,-23.127692 6.91626,1.506322 13.86895,2.970417 20.84232,4.392988 4.71617,-6.0819802 9.3849,-12.176451 14.00832,-18.2906923 -0.0124,0.016193 0.43942,-0.5721183 0.42698,-0.5559254 1.21247,8.5973097 2.40948,17.1861917 3.58963,25.7798867 6.49405,3.748602 13.03508,7.477498 19.58038,11.175888 -6.42692,3.99859 -12.81526,7.959037 -19.24011,11.919117 -0.74499,6.904887 -1.50717,13.80821 -2.28515,20.71388 -0.002,0.01454 -0.58205,5.144049 -0.58369,5.158588 z" + inkscape:original-d="m 185.10272,73.104749 -16.23044,-17.282557 -23.43825,3.572511 11.4212,-20.776677 -10.64047,-21.187131 23.28914,4.441864 16.86207,-16.6668778 2.97227,23.5218998 21.06181,10.886434 -21.45217,10.09547 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_shapeClipPath_1_0_2.svg b/testfiles/lpe_tests/Bendpath_shapeClipPath_1_0_2.svg new file mode 100644 index 0000000..4e156fe --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_shapeClipPath_1_0_2.svg @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <g id="t" transform="scale(0.445)"> + <defs + id="defs3"> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + lpeversion="1" + bendpath="m -88.176889,127.8288 c 128.93305,-90.027147 258.821699,-166.102496 405.297879,0" + prop_scale="0.25" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath01"> + <path + id="path02" + style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.571223" + inkscape:original-d="M -88.176889,51.99714 H 317.12099 V 163.32098 H -88.176889 Z" + d="M -99.123929,112.35062 C -67.544431,90.259532 -35.025634,68.301509 0.10043795,49.722821 32.252906,32.600786 67.414222,18.557012 105.22537,13.010948 l 1e-5,-2e-6 c 18.2754,-2.612616 36.99062,-2.973454 55.5715,-0.733365 19.64312,2.406597 38.7636,7.694057 56.7624,15.375191 l 2e-5,10e-6 c 20.60129,8.817844 39.59233,20.446855 56.9026,33.739503 20.97126,16.090664 39.74139,34.43008 56.8001,53.809045 l -20.87004,18.41236 C 294.2008,115.28158 276.74887,98.171539 257.54647,83.492751 241.72041,71.400077 224.73223,60.939158 206.65246,53.257528 l -3e-5,-6e-6 C 190.91693,46.561316 174.31241,41.948111 157.43791,39.905096 141.47367,37.955266 125.18368,38.29159 109.1421,40.564922 l -2e-5,7e-6 C 75.785357,45.22632 43.647171,58.290606 13.086542,74.338333 -20.271762,91.914461 -51.808013,113.27338 -83.190188,135.16882 Z" /> + </clipPath> + </defs> + <path + style="fill:#d45500;stroke:none;stroke-width:234.068" + id="path01" + transform="matrix(0.73965526,0,0,0.73965526,38.257244,47.849564)" + clip-path="url(#clipPath01)" + inkscape:path-effect="#path-effect01" + sodipodi:type="arc" + sodipodi:cx="123.56588" + sodipodi:cy="127.8288" + sodipodi:rx="113.85851" + sodipodi:ry="112.67993" + d="m 249.96748,67.075569 c -4.98727,7.33722 -22.18205,2.948661 -48.24454,-2.245593 -13.98293,-2.799178 -29.6458,-5.572933 -46.51971,-6.544655 -8.4397,-0.517056 -17.01785,-0.580275 -25.79712,-0.219601 -5.87949,0.241544 -11.74767,0.669099 -17.5981,1.253749 0,0 -10e-6,2e-6 -10e-6,2e-6 C 90.05583,61.351627 69.003906,66.010817 51.312697,69.334044 33.379171,72.70279 20.052583,74.435327 12.062496,72.39723 8.8998604,71.59301 6.7508745,70.209208 5.6863372,68.2248 4.6238649,66.244242 4.6533489,63.677066 5.8301451,60.58364 8.7087081,53.007471 18.57158,42.038861 35.384459,31.03094 52.321503,19.941725 75.8531,9.3089369 103.97873,4.240901 c 0,2e-6 1e-5,-2e-6 1e-5,-2e-6 7.57251,-1.3233746 15.31616,-2.1627004 23.15708,-2.4744385 11.69716,-0.4650537 23.3405,0.2549021 34.67858,2.1420434 22.7042,3.8407304 41.99223,12.0255721 56.72219,21.4500041 27.46504,17.632015 35.62238,35.550598 31.43089,41.717061 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_shape_1_0_2.svg b/testfiles/lpe_tests/Bendpath_shape_1_0_2.svg new file mode 100644 index 0000000..20d1436 --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_shape_1_0_2.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" +> + <defs + id="defs3"> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + bendpath="m 9.7073669,127.8288 c 72.5092111,-24.62436 142.2621131,-69.231992 227.7170231,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + lpeversion="1" + bendpath-nodetypes="cc" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#d45500;stroke:none;stroke-width:234.068054;" + id="path01" + inkscape:path-effect="#path-effect01" + sodipodi:type="arc" + sodipodi:cx="123.56588" + sodipodi:cy="127.8288" + sodipodi:rx="113.85851" + sodipodi:ry="112.67993" + transform="matrix(0.73965526,0,0,0.73965526,28.336609,54.794008)" + d="m 237.34159,127.76175 c -13.5415,16.73097 -31.76508,28.7712 -48.95798,39.17779 -17.55111,10.6234 -31.42124,18.17357 -38.32256,26.98131 0,0 -1e-5,1e-5 -1e-5,1e-5 -4.39158,5.71942 -7.38565,9.52896 -12.69787,9.97638 -0.6282,0.0529 -1.28186,0.0571 -1.96523,0.0121 -7.66189,-0.37614 -21.47844,-1.4936 -38.748702,-5.92243 C 78.596346,193.59056 59.531428,186.56686 43.238856,174.30433 26.974638,162.06314 15.890408,146.38121 9.6064825,127.86305 3.5296923,109.9553 2.1303493,89.691945 5.0911771,71.062206 8.0778892,52.269601 15.68343,33.604006 31.072519,17.42235 c 15.00837,-16.2040124 38.36113,-29.627509 70.952021,-36.066392 3.56139,-0.681465 7.16965,-1.230973 10.81736,-1.645755 30.46108,-3.463734 61.95294,2.686356 89.0749,16.6864474 0,0 1e-5,1e-5 1e-5,1e-5 33.57928,18.9959456 50.21307,45.6458366 53.78143,69.6156266 3.59433,24.144251 -5.07178,45.335573 -18.35665,61.749463 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_stackNested_mm_1_0_2.svg b/testfiles/lpe_tests/Bendpath_stackNested_mm_1_0_2.svg new file mode 100644 index 0000000..41bcf0c --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_stackNested_mm_1_0_2.svg @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="a.svg"> + <defs + id="defs3"> + <inkscape:path-effect + effect="bend_path" + id="path-effect07" + is_visible="true" + lpeversion="1" + bendpath="m 10.25699,121.43299 c 61.837932,0.42699 110.60636,71.52788 185.75068,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="103.13233,24.778674" + end_point="103.13233,227.29273" + center_point="103.13233,126.0357" + id="path-effect06" + is_visible="true" + lpeversion="1" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect05" + is_visible="true" + lpeversion="1" + bendpath="m 29.09987,117.10806 c 58.651754,-4.38972 105.86557,-29.857715 183.10138,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect03" + is_visible="true" + lpeversion="1" + bendpath="m 29.09987,139.22153 c 58.323302,15.50324 117.0648,35.17963 170.30905,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="120.65056,72.811142" + end_point="120.65056,232.3405" + center_point="120.65056,152.57582" + id="path-effect02" + is_visible="true" + lpeversion="1" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect04" + is_visible="true" + lpeversion="1" + bendpath="m 32.417309,68.755066 c 31.851907,2.30851 51.55524,23.771853 99.948101,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + lpeversion="1" + bendpath="m 28.127006,150.62642 c 55.758928,-13.18774 110.838314,-24.05628 155.684544,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + </defs> + <g id="t" transform="scale(0.445)"> + <g + id="g03" + inkscape:path-effect="#path-effect05;#path-effect06;#path-effect07"> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + id="path02" + inkscape:path-effect="#path-effect04" + sodipodi:type="arc" + sodipodi:cx="82.391357" + sodipodi:cy="68.755066" + sodipodi:rx="49.974049" + sodipodi:ry="51.796963" + d="m 129.16043,86.465007 c 1.5833,7.981104 5.61918,20.623353 5.21539,30.508043 -0.34804,8.51988 -3.72059,17.44949 -12.76676,23.80202 0,0 0,0 0,0 -0.97664,0.68377 -2.01391,1.32779 -3.11149,1.92849 0,0 0,0 0,0 -1.76481,0.96422 -3.69518,1.82077 -5.79234,2.5496 0,0 0,0 0,0 -4.43864,1.38997 -9.25846,2.09315 -14.239638,2.097 -5.808166,0.004 -11.731414,-0.93277 -17.539659,-2.70264 -2.128622,-0.64862 -4.217114,-1.40253 -6.255658,-2.25004 -1.529735,-0.63237 -3.030303,-1.31781 -4.49847,-2.05143 -6.246428,-3.2073 -11.116612,-6.70309 -14.807645,-10.12395 -3.621786,-3.35892 -6.287339,-6.80889 -8.215522,-10.22546 -3.73266,-6.69306 -5.362165,-14.8488 -6.433854,-22.722833 -0.120081,-0.882272 -0.235381,-1.782964 -0.343866,-2.694597 0,0 0,-10e-7 0,-10e-7 -0.858649,-7.100643 -1.416684,-15.495302 -0.253327,-22.579686 1.200991,-7.31356 4.333794,-14.107853 10.673692,-19.198086 0.956873,-0.779158 1.983409,-1.519908 3.081796,-2.2194 8.459462,-5.387287 20.319197,-7.673536 32.458301,-7.085575 0.90586,0.01635 1.7992,0.0451 2.677078,0.08442 1.416456,0.04526 2.79947,0.113055 4.13566,0.196067 10e-7,0 2e-6,0 2e-6,0 7.07266,0.393262 14.54698,1.359734 16.76042,1.56925 0.99322,0.08846 1.87838,0.260934 2.68034,0.523555 2.31425,0.757846 3.87645,2.252895 5.35375,4.430517 0,0 0,0 0,10e-7 2.40465,3.24111 4.69454,5.847222 7.00939,9.700294 0.78944,1.419943 1.40413,2.93019 1.85023,4.588231 0.0501,0.186294 0.0978,0.373608 0.14304,0.562027 0,1e-6 0,1e-6 0,1e-6 0.56094,2.284829 0.7185,4.668487 0.78318,7.253227 -0.10665,4.02142 0.34583,8.565842 1.43596,14.060958 z m -27.4107,-7.806729 c -9.078422,6.59152 -14.935171,15.207207 -15.550336,27.050432 -0.499311,9.61281 2.690951,21.47306 10.517811,31.7601 10e-7,0 10e-7,0 2e-6,0 1.058615,1.38932 2.219984,2.7712 3.492523,4.12849 0.2472,0.26422 0.49874,0.52772 0.75468,0.79034 0,0 0,0 0,0 5.26476,5.08043 11.82259,9.28222 19.47276,11.48936 3.01826,0.87009 6.18436,1.41677 9.43441,1.58888 2.26998,0.1202 4.54665,0.0546 6.80065,-0.20028 1.68977,-0.18775 3.36085,-0.48203 4.99973,-0.88183 0.93451,-0.23856 1.83844,-0.50349 2.71098,-0.79171 0,0 0,0 0,0 12.0996,-4.00865 17.69623,-11.64391 19.55104,-18.34582 0.1385,-0.51053 0.25728,-1.02596 0.35743,-1.54537 0,0 0,0 0,0 1.2851,-6.57709 -0.3892,-13.7647 -2.81207,-20.36339 -2.6921,-7.33193 -6.70462,-14.902819 -11.60509,-21.758861 -5.15801,-7.216367 -10.51539,-12.666509 -16.13547,-17.994416 -3.04095,-2.882857 -5.77233,-5.381473 -7.91624,-7.753847 -1.57253,-1.910785 -2.71547,-3.627121 -3.26384,-5.158903 -0.2735,-0.749254 -0.42357,-1.453589 -0.46341,-2.127536 0,0 0,0 0,-10e-7 -0.1191,-1.820808 0.5495,-3.29638 1.35416,-4.514773 0.33131,-0.405263 0.62269,-0.750515 0.8617,-1.044193 0.27762,-0.347983 0.56146,-0.574545 0.84668,-0.681866 0.82821,-0.311635 1.63728,0.386462 2.3483,1.807747 0,1e-6 0,1e-6 0,1e-6 0.58334,1.063329 1.16506,2.240722 1.52271,3.710162 0.29119,2.115197 -0.523,4.153181 -3.25067,6.493807 -0.1537,0.131885 -0.31266,0.264299 -0.47689,0.397379 0,0 -1e-5,0 -1e-5,10e-7 -0.68137,0.545271 -1.44694,1.102227 -2.29073,1.67895 -5.51616,3.613895 -13.78661,6.840396 -21.26081,12.267147 z" /> + <path + id="path01" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="6.0272742" + inkscape:transform-center-y="2.0835305" + d="m 121.75292,220.45232 c -2.55129,2.43405 -5.19074,4.83759 -7.91127,7.1633 -1.63942,1.41504 -3.31151,2.82398 -5.01915,4.22125 -7.59822,6.04602 -15.830144,11.99576 -24.735263,17.45782 -3.807577,-9.11878 -6.563763,-17.93616 -8.570336,-26.25058 -2.52437,-10.75054 -4.139803,-21.56824 -4.996129,-32.9547 -1.256025,-0.78742 -2.497208,-1.57686 -3.727097,-2.37008 -1.674536,-1.0593 -3.31165,-2.11768 -4.919085,-3.17725 -8.199986,-5.38564 -15.137968,-10.44609 -21.699031,-15.2061 -5.366953,-3.80987 -10.886344,-7.88014 -15.694232,-11.05154 -1.088857,-0.7197 -2.186283,-1.43972 -3.279624,-2.14436 1.37946,-0.65871 2.814533,-1.29411 4.290014,-1.90654 0,0 2e-6,0 2e-6,0 6.918226,-2.81622 15.131966,-4.9742 23.205533,-6.84274 8.625126,-1.97738 17.485456,-3.69468 26.08455,-5.56325 -2.555955,0.55427 5.9603,-1.31925 3.413825,-0.75033 6.432609,-17.36789 13.308698,-34.89025 20.488238,-51.991612 1.644145,2.427633 3.177605,4.799208 4.635795,7.111871 0,10e-7 0,10e-7 0,10e-7 2.56017,3.99851 4.92735,7.99473 7.11964,11.65863 2.3507,4.0065 4.48107,7.7921 6.86996,11.67846 0.67139,1.08118 1.35888,2.16771 2.06878,3.25757 1.10086,1.68539 2.22297,3.33596 3.3958,4.96053 0.35048,0.49572 0.70719,0.98915 1.07012,1.48005 -0.39066,0.39784 -9.4e-4,0.005 0.38107,-0.39184 0.38201,-0.39661 0.75626,-0.79672 0.37597,-0.39416 2.45443,-2.64897 4.48563,-5.32271 6.10011,-8.00007 2.30933,-3.86671 3.7069,-7.70529 4.28585,-11.54329 0.46842,-2.86161 0.55116,-5.69634 0.30684,-8.47746 l 0,0 c -0.14158,-1.491426 -0.34745,-2.967633 -0.60613,-4.424004 7.20377,16.864824 16.91585,32.586224 25.33216,49.250404 0.74934,0.19317 1.50685,0.3756 2.27198,0.54735 3.064,0.67521 6.30682,1.18259 9.69793,1.48336 13.62384,1.22343 28.75202,-0.77723 42.89721,-5.83812 -6.44221,13.48467 -15.01266,25.40298 -25.63701,36.29023 -3.2782,3.33004 -6.72035,6.4363 -10.2963,9.34371 -1.51602,1.22188 -3.04276,2.40307 -4.57616,3.54753 -1.46519,1.07721 -2.95942,2.12851 -4.48306,3.15408 -1.46297,15.07393 -4.63595,29.37606 -7.89527,43.5971 0,0 0,0 0,0 -1.13197,4.80378 -2.24909,9.58706 -3.33447,14.5327 -7.22104,-6.00507 -15.18891,-12.22382 -23.04228,-18.85319 -3.26089,-2.81358 -6.48783,-5.7065 -9.69157,-8.71501 -0.69359,-0.6361 -1.38611,-1.275 -2.07833,-1.91796 1.3736,1.28206 0.16147,0.15468 -1.05011,-0.98299 -1.21149,-1.13767 -2.42147,-2.28591 -1.04947,-0.98877 z M 63.226877,207.49586 c 1.143237,4.7393 2.423093,9.65834 3.949799,14.58105 1.340926,4.13384 2.886941,8.45421 4.725816,12.88896 1.82331,4.29985 3.938949,8.64328 6.428575,12.94265 13.900449,-12.08031 26.676473,-24.59992 37.094343,-37.99949 2.09511,-2.66928 4.13112,-5.45529 6.08853,-8.35996 1.93531,-0.21187 3.88471,-0.46553 5.8463,-0.76385 2.66027,-0.38683 5.32893,-0.85601 8.00144,-1.41195 5.94402,-1.22913 11.83259,-2.86727 17.61101,-4.92701 13.2116,-4.89984 24.7659,-11.60257 34.53737,-19.7808 5.56009,-4.68246 10.59683,-9.67004 15.13152,-14.95074 -7.32155,1.86704 -14.57475,3.03436 -21.61503,3.5119 0,0 0,0 0,0 -12.98567,0.91993 -25.25347,-0.91245 -35.60161,-4.6786 -3.07608,-1.12478 -5.97519,-2.42743 -8.69922,-3.86087 1.17314,0.61671 -0.21079,-0.0928 -1.55273,-0.8402 -1.34194,-0.74739 -2.64178,-1.53141 -1.51903,-0.87007 -0.82182,-19.14662 -2.26944,-36.6056 -3.83936,-55.729337 -0.6669,1.667001 -1.54266,3.314027 -2.595,4.924217 0,0 -1e-5,0 -1e-5,0 -0.73976,1.11583 -1.56134,2.21878 -2.45303,3.30213 -3.84664,4.53885 -9.66863,8.43452 -16.17849,11.90951 -0.40577,0.21424 -0.81641,0.42831 -1.23198,0.64235 -0.81118,0.41374 -1.63719,0.82319 -2.47877,1.22982 -2.56963,1.23756 -5.224556,2.42756 -7.893458,3.57435 0.565586,1.10438 -1.115658,-2.19379 -0.553573,-1.08608 -1.756876,-3.548 -3.521443,-7.21396 -5.104184,-10.5857 -3.880835,-8.36561 -7.713717,-17.312921 -8.803612,-24.311686 l 10e-7,-2e-6 C 82.28823,85.162693 82.11919,83.506646 82.024406,81.891274 75.392943,89.913978 69.658158,98.009912 64.504415,106.684 c -4.413563,7.43081 -8.265884,15.05932 -11.747503,22.99838 -0.746754,0.23069 -1.493212,0.46316 -2.238854,0.69797 -6.926195,2.15139 -14.238274,4.59331 -20.938446,7.46383 -7.668559,3.30903 -14.382437,7.0064 -19.5828512,11.09948 5.0840092,3.32193 9.8050932,7.44258 13.9947422,11.3046 4.063004,3.72364 8.434901,8.23121 12.320685,12.29105 0.625788,0.64522 1.249412,1.29342 1.86623,1.93973 0.186422,0.19972 0.372332,0.39971 0.557661,0.5999 0.756789,0.7996 1.527777,1.61702 2.295463,2.43141 -2.231707,18.25799 -5.048359,36.62837 -8.866655,54.34732 5.293896,-5.60243 11.313574,-10.79008 18.140209,-15.7091 2.83257,-2.08311 5.783687,-4.12641 8.858487,-6.13742 0.660753,-0.42163 1.327373,-0.84003 1.999756,-1.25537 -1.336912,0.83017 -0.163711,0.0946 1.027002,-0.63228 1.190653,-0.72694 2.398426,-1.44564 1.036536,-0.62764 z" + inkscape:path-effect="#path-effect01;#path-effect02;#path-effect03" + inkscape:original-d="M 183.81155,192.38542 128.16133,187.38347 92.491886,230.3911 80.052163,175.91891 28.127006,155.28534 76.089052,126.62163 79.666987,70.861745 121.74888,107.61879 175.88533,93.790855 153.93132,145.17167 Z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bendpath_stackNested_px_1_0_2.svg b/testfiles/lpe_tests/Bendpath_stackNested_px_1_0_2.svg new file mode 100644 index 0000000..4606432 --- /dev/null +++ b/testfiles/lpe_tests/Bendpath_stackNested_px_1_0_2.svg @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs3"> + <inkscape:path-effect + effect="bend_path" + id="path-effect07" + is_visible="true" + lpeversion="1" + bendpath="m 10.25699,121.43299 c 61.837932,0.42699 110.60636,71.52788 185.75068,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="103.13233,24.778674" + end_point="103.13233,227.29273" + center_point="103.13233,126.0357" + id="path-effect06" + is_visible="true" + lpeversion="1" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect05" + is_visible="true" + lpeversion="1" + bendpath="m 29.09987,117.10806 c 58.651754,-4.38972 105.86557,-29.857715 183.10138,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect03" + is_visible="true" + lpeversion="1" + bendpath="m 29.09987,139.22153 c 58.323302,15.50324 117.0648,35.17963 170.30905,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="120.65056,72.811142" + end_point="120.65056,232.3405" + center_point="120.65056,152.57582" + id="path-effect02" + is_visible="true" + lpeversion="1" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect04" + is_visible="true" + lpeversion="1" + bendpath="m 32.417309,68.755066 c 31.851907,2.30851 51.55524,23.771853 99.948101,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect01" + is_visible="true" + lpeversion="1" + bendpath="m 28.127006,150.62642 c 55.758928,-13.18774 110.838314,-24.05628 155.684544,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + </defs> + <g id="t" transform="scale(0.445)"> + <g + id="g03" + inkscape:path-effect="#path-effect05;#path-effect06;#path-effect07"> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + id="path02" + inkscape:path-effect="#path-effect04" + sodipodi:type="arc" + sodipodi:cx="82.391357" + sodipodi:cy="68.755066" + sodipodi:rx="49.974049" + sodipodi:ry="51.796963" + d="m 129.16043,86.465007 c 1.5833,7.981104 5.61918,20.623353 5.21539,30.508043 -0.34804,8.51988 -3.72059,17.44949 -12.76676,23.80202 0,0 0,0 0,0 -0.97664,0.68377 -2.01391,1.32779 -3.11149,1.92849 0,0 0,0 0,0 -1.76481,0.96422 -3.69518,1.82077 -5.79234,2.5496 0,0 0,0 0,0 -4.43864,1.38997 -9.25846,2.09315 -14.239638,2.097 -5.808166,0.004 -11.731414,-0.93277 -17.539659,-2.70264 -2.128622,-0.64862 -4.217114,-1.40253 -6.255658,-2.25004 -1.529735,-0.63237 -3.030303,-1.31781 -4.49847,-2.05143 -6.246428,-3.2073 -11.116612,-6.70309 -14.807645,-10.12395 -3.621786,-3.35892 -6.287339,-6.80889 -8.215522,-10.22546 -3.73266,-6.69306 -5.362165,-14.8488 -6.433854,-22.722833 -0.120081,-0.882272 -0.235381,-1.782964 -0.343866,-2.694597 0,0 0,-10e-7 0,-10e-7 -0.858649,-7.100643 -1.416684,-15.495302 -0.253327,-22.579686 1.200991,-7.31356 4.333794,-14.107853 10.673692,-19.198086 0.956873,-0.779158 1.983409,-1.519908 3.081796,-2.2194 8.459462,-5.387287 20.319197,-7.673536 32.458301,-7.085575 0.90586,0.01635 1.7992,0.0451 2.677078,0.08442 1.416456,0.04526 2.79947,0.113055 4.13566,0.196067 10e-7,0 2e-6,0 2e-6,0 7.07266,0.393262 14.54698,1.359734 16.76042,1.56925 0.99322,0.08846 1.87838,0.260934 2.68034,0.523555 2.31425,0.757846 3.87645,2.252895 5.35375,4.430517 0,0 0,0 0,10e-7 2.40465,3.24111 4.69454,5.847222 7.00939,9.700294 0.78944,1.419943 1.40413,2.93019 1.85023,4.588231 0.0501,0.186294 0.0978,0.373608 0.14304,0.562027 0,1e-6 0,1e-6 0,1e-6 0.56094,2.284829 0.7185,4.668487 0.78318,7.253227 -0.10665,4.02142 0.34583,8.565842 1.43596,14.060958 z m -27.4107,-7.806729 c -9.078422,6.59152 -14.935171,15.207207 -15.550336,27.050432 -0.499311,9.61281 2.690951,21.47306 10.517811,31.7601 10e-7,0 10e-7,0 2e-6,0 1.058615,1.38932 2.219984,2.7712 3.492523,4.12849 0.2472,0.26422 0.49874,0.52772 0.75468,0.79034 0,0 0,0 0,0 5.26476,5.08043 11.82259,9.28222 19.47276,11.48936 3.01826,0.87009 6.18436,1.41677 9.43441,1.58888 2.26998,0.1202 4.54665,0.0546 6.80065,-0.20028 1.68977,-0.18775 3.36085,-0.48203 4.99973,-0.88183 0.93451,-0.23856 1.83844,-0.50349 2.71098,-0.79171 0,0 0,0 0,0 12.0996,-4.00865 17.69623,-11.64391 19.55104,-18.34582 0.1385,-0.51053 0.25728,-1.02596 0.35743,-1.54537 0,0 0,0 0,0 1.2851,-6.57709 -0.3892,-13.7647 -2.81207,-20.36339 -2.6921,-7.33193 -6.70462,-14.902819 -11.60509,-21.758861 -5.15801,-7.216367 -10.51539,-12.666509 -16.13547,-17.994416 -3.04095,-2.882857 -5.77233,-5.381473 -7.91624,-7.753847 -1.57253,-1.910785 -2.71547,-3.627121 -3.26384,-5.158903 -0.2735,-0.749254 -0.42357,-1.453589 -0.46341,-2.127536 0,0 0,0 0,-10e-7 -0.1191,-1.820808 0.5495,-3.29638 1.35416,-4.514773 0.33131,-0.405263 0.62269,-0.750515 0.8617,-1.044193 0.27762,-0.347983 0.56146,-0.574545 0.84668,-0.681866 0.82821,-0.311635 1.63728,0.386462 2.3483,1.807747 0,1e-6 0,1e-6 0,1e-6 0.58334,1.063329 1.16506,2.240722 1.52271,3.710162 0.29119,2.115197 -0.523,4.153181 -3.25067,6.493807 -0.1537,0.131885 -0.31266,0.264299 -0.47689,0.397379 0,0 -1e-5,0 -1e-5,10e-7 -0.68137,0.545271 -1.44694,1.102227 -2.29073,1.67895 -5.51616,3.613895 -13.78661,6.840396 -21.26081,12.267147 z" /> + <path + id="path01" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="6.0272742" + inkscape:transform-center-y="2.0835305" + d="m 121.75292,220.45232 c -2.55129,2.43405 -5.19074,4.83759 -7.91127,7.1633 -1.63942,1.41504 -3.31151,2.82398 -5.01915,4.22125 -7.59822,6.04602 -15.830144,11.99576 -24.735263,17.45782 -3.807577,-9.11878 -6.563763,-17.93616 -8.570336,-26.25058 -2.52437,-10.75054 -4.139803,-21.56824 -4.996129,-32.9547 -1.256025,-0.78742 -2.497208,-1.57686 -3.727097,-2.37008 -1.674536,-1.0593 -3.31165,-2.11768 -4.919085,-3.17725 -8.199986,-5.38564 -15.137968,-10.44609 -21.699031,-15.2061 -5.366953,-3.80987 -10.886344,-7.88014 -15.694232,-11.05154 -1.088857,-0.7197 -2.186283,-1.43972 -3.279624,-2.14436 1.37946,-0.65871 2.814533,-1.29411 4.290014,-1.90654 0,0 2e-6,0 2e-6,0 6.918226,-2.81622 15.131966,-4.9742 23.205533,-6.84274 8.625126,-1.97738 17.485456,-3.69468 26.08455,-5.56325 -2.555955,0.55427 5.9603,-1.31925 3.413825,-0.75033 6.432609,-17.36789 13.308698,-34.89025 20.488238,-51.991612 1.644145,2.427633 3.177605,4.799208 4.635795,7.111871 0,10e-7 0,10e-7 0,10e-7 2.56017,3.99851 4.92735,7.99473 7.11964,11.65863 2.3507,4.0065 4.48107,7.7921 6.86996,11.67846 0.67139,1.08118 1.35888,2.16771 2.06878,3.25757 1.10086,1.68539 2.22297,3.33596 3.3958,4.96053 0.35048,0.49572 0.70719,0.98915 1.07012,1.48005 -0.39066,0.39784 -9.4e-4,0.005 0.38107,-0.39184 0.38201,-0.39661 0.75626,-0.79672 0.37597,-0.39416 2.45443,-2.64897 4.48563,-5.32271 6.10011,-8.00007 2.30933,-3.86671 3.7069,-7.70529 4.28585,-11.54329 0.46842,-2.86161 0.55116,-5.69634 0.30684,-8.47746 l 0,0 c -0.14158,-1.491426 -0.34745,-2.967633 -0.60613,-4.424004 7.20377,16.864824 16.91585,32.586224 25.33216,49.250404 0.74934,0.19317 1.50685,0.3756 2.27198,0.54735 3.064,0.67521 6.30682,1.18259 9.69793,1.48336 13.62384,1.22343 28.75202,-0.77723 42.89721,-5.83812 -6.44221,13.48467 -15.01266,25.40298 -25.63701,36.29023 -3.2782,3.33004 -6.72035,6.4363 -10.2963,9.34371 -1.51602,1.22188 -3.04276,2.40307 -4.57616,3.54753 -1.46519,1.07721 -2.95942,2.12851 -4.48306,3.15408 -1.46297,15.07393 -4.63595,29.37606 -7.89527,43.5971 0,0 0,0 0,0 -1.13197,4.80378 -2.24909,9.58706 -3.33447,14.5327 -7.22104,-6.00507 -15.18891,-12.22382 -23.04228,-18.85319 -3.26089,-2.81358 -6.48783,-5.7065 -9.69157,-8.71501 -0.69359,-0.6361 -1.38611,-1.275 -2.07833,-1.91796 1.3736,1.28206 0.16147,0.15468 -1.05011,-0.98299 -1.21149,-1.13767 -2.42147,-2.28591 -1.04947,-0.98877 z M 63.226877,207.49586 c 1.143237,4.7393 2.423093,9.65834 3.949799,14.58105 1.340926,4.13384 2.886941,8.45421 4.725816,12.88896 1.82331,4.29985 3.938949,8.64328 6.428575,12.94265 13.900449,-12.08031 26.676473,-24.59992 37.094343,-37.99949 2.09511,-2.66928 4.13112,-5.45529 6.08853,-8.35996 1.93531,-0.21187 3.88471,-0.46553 5.8463,-0.76385 2.66027,-0.38683 5.32893,-0.85601 8.00144,-1.41195 5.94402,-1.22913 11.83259,-2.86727 17.61101,-4.92701 13.2116,-4.89984 24.7659,-11.60257 34.53737,-19.7808 5.56009,-4.68246 10.59683,-9.67004 15.13152,-14.95074 -7.32155,1.86704 -14.57475,3.03436 -21.61503,3.5119 0,0 0,0 0,0 -12.98567,0.91993 -25.25347,-0.91245 -35.60161,-4.6786 -3.07608,-1.12478 -5.97519,-2.42743 -8.69922,-3.86087 1.17314,0.61671 -0.21079,-0.0928 -1.55273,-0.8402 -1.34194,-0.74739 -2.64178,-1.53141 -1.51903,-0.87007 -0.82182,-19.14662 -2.26944,-36.6056 -3.83936,-55.729337 -0.6669,1.667001 -1.54266,3.314027 -2.595,4.924217 0,0 -1e-5,0 -1e-5,0 -0.73976,1.11583 -1.56134,2.21878 -2.45303,3.30213 -3.84664,4.53885 -9.66863,8.43452 -16.17849,11.90951 -0.40577,0.21424 -0.81641,0.42831 -1.23198,0.64235 -0.81118,0.41374 -1.63719,0.82319 -2.47877,1.22982 -2.56963,1.23756 -5.224556,2.42756 -7.893458,3.57435 0.565586,1.10438 -1.115658,-2.19379 -0.553573,-1.08608 -1.756876,-3.548 -3.521443,-7.21396 -5.104184,-10.5857 -3.880835,-8.36561 -7.713717,-17.312921 -8.803612,-24.311686 l 10e-7,-2e-6 C 82.28823,85.162693 82.11919,83.506646 82.024406,81.891274 75.392943,89.913978 69.658158,98.009912 64.504415,106.684 c -4.413563,7.43081 -8.265884,15.05932 -11.747503,22.99838 -0.746754,0.23069 -1.493212,0.46316 -2.238854,0.69797 -6.926195,2.15139 -14.238274,4.59331 -20.938446,7.46383 -7.668559,3.30903 -14.382437,7.0064 -19.5828512,11.09948 5.0840092,3.32193 9.8050932,7.44258 13.9947422,11.3046 4.063004,3.72364 8.434901,8.23121 12.320685,12.29105 0.625788,0.64522 1.249412,1.29342 1.86623,1.93973 0.186422,0.19972 0.372332,0.39971 0.557661,0.5999 0.756789,0.7996 1.527777,1.61702 2.295463,2.43141 -2.231707,18.25799 -5.048359,36.62837 -8.866655,54.34732 5.293896,-5.60243 11.313574,-10.79008 18.140209,-15.7091 2.83257,-2.08311 5.783687,-4.12641 8.858487,-6.13742 0.660753,-0.42163 1.327373,-0.84003 1.999756,-1.25537 -1.336912,0.83017 -0.163711,0.0946 1.027002,-0.63228 1.190653,-0.72694 2.398426,-1.44564 1.036536,-0.62764 z" + inkscape:path-effect="#path-effect01;#path-effect02;#path-effect03" + inkscape:original-d="M 183.81155,192.38542 128.16133,187.38347 92.491886,230.3911 80.052163,175.91891 28.127006,155.28534 76.089052,126.62163 79.666987,70.861745 121.74888,107.61879 175.88533,93.790855 153.93132,145.17167 Z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bool_multi_mm_1_1.svg b/testfiles/lpe_tests/Bool_multi_mm_1_1.svg new file mode 100644 index 0000000..f7431e7 --- /dev/null +++ b/testfiles/lpe_tests/Bool_multi_mm_1_1.svg @@ -0,0 +1,253 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg5" + inkscape:version="1.2-dev (99544120e7, 2021-04-09)" + sodipodi:docname="1.svg" + inkscape:test-threshold="0.1" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.74653479" + inkscape:cx="397.16836" + inkscape:cy="560.59008" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="bool_op" + id="path-effect1716" + is_visible="true" + lpeversion="1" + operand-path="#path1700" + operation="inters" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <inkscape:path-effect + effect="bool_op" + id="path-effect1664" + is_visible="true" + lpeversion="1" + operand-path="#path1568" + operation="diff" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <inkscape:path-effect + effect="bool_op" + id="path-effect1347" + is_visible="true" + lpeversion="1" + operand-path="#path1251" + operation="cut" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <filter + id="selectable_hidder_filter" + width="1.3961189" + height="1.3961189" + x="-0.21637641" + y="-0.1956862" + style="color-interpolation-filters:sRGB;" + inkscape:label="LPE boolean visibility"> + <feComposite + id="boolops_hidder_primitive" + result="composite1" + operator="arithmetic" + in2="SourceGraphic" + in="BackgroundImage" /> + </filter> + <inkscape:path-effect + effect="bool_op" + id="path-effect908" + is_visible="true" + lpeversion="1" + operand-path="#path892" + operation="union" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path1204" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 201.48867,138.78531 17.63086,-9.07813 25.42383,13.64258 -4.63672,-28.47656 20.83008,-19.964845 -28.51562,-4.390624 -4.20117,-8.697266 c -15.58554,8.489129 -26.60547,29.292285 -26.60547,53.626955 0,1.12159 0.0281,2.2321 0.0742,3.33789 z m 0,0 c 1.26601,30.32249 19.64807,54.38086 42.14454,54.38086 23.31685,0 42.21875,-25.84124 42.21875,-57.71875 0,-31.87752 -18.9019,-57.720706 -42.21875,-57.720705 -5.51723,0 -10.78235,1.462435 -15.61328,4.09375 l 4.20117,8.697266 28.51562,4.390624 -20.83008,19.964845 4.63672,28.47656 -25.42383,-13.64258 z" + inkscape:path-effect="#path-effect1347" + inkscape:original-d="m 285.85159,135.44647 a 42.218899,57.719349 0 0 1 -42.2189,57.71935 42.218899,57.719349 0 0 1 -42.2189,-57.71935 42.218899,57.719349 0 0 1 42.2189,-57.719347 42.218899,57.719349 0 0 1 42.2189,57.719347 z" + transform="translate(-24.84805,-60.806793)" /> + <path + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path846" + inkscape:path-effect="#path-effect908" + sodipodi:type="arc" + sodipodi:cx="43.595745" + sodipodi:cy="101.16588" + sodipodi:rx="58.604801" + sodipodi:ry="57.487537" + d="m 66.764164,22.523051 c -23.160711,0 -42.636983,11.335048 -48.332032,26.716797 -19.772508,9.236517 -33.441406,29.012627 -33.441406,51.925782 0,31.74949 26.238931,57.48828 58.605469,57.48828 32.366538,0 58.603515,-25.73879 58.603515,-57.48828 0,-5.447245 -0.78733,-10.711365 -2.23047,-15.705075 10.31365,-6.59669 16.81836,-16.21064 16.81836,-26.923832 0,-19.889016 -22.39593,-36.013672 -50.023436,-36.013672 z" + transform="translate(14.04443,36.480855)" /> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path892" + cx="80.808784" + cy="95.01683" + rx="50.024033" + ry="36.012249" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1251" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="752.93793" + sodipodi:cy="209.50652" + sodipodi:r1="269.02332" + sodipodi:r2="134.51166" + sodipodi:arg1="0.95094102" + sodipodi:arg2="1.5792595" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 909.21825,428.48141 751.79955,344.01336 592.9737,425.8049 624.66254,249.98875 497.79428,124.21137 674.79776,100.01907 755.2147,-59.507165 832.92003,101.35732 1009.4887,128.54206 880.50976,252.15408 Z" + transform="matrix(0.16150094,0,0,0.16150094,72.855098,13.342398)" + inkscape:transform-center-x="-0.11362542" + inkscape:transform-center-y="-4.040657" /> + <g + id="g1544" + transform="matrix(0.67963235,0,0,0.67963235,56.271251,52.335337)" + inkscape:path-effect="#path-effect1664"> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1511" + cx="212.31941" + cy="215.65012" + rx="35.093342" + ry="34.631622" + d="m 212.31929,181.01845 c -19.38151,0 -35.09193,15.5056 -35.09193,34.63212 0,19.12652 15.71042,34.63212 35.09193,34.63212 19.38152,0 35.09481,-15.5056 35.09481,-34.63212 -1e-5,-19.12652 -15.71329,-34.63212 -35.09481,-34.63212 z m -5.08086,17.09334 c 13.17129,0 23.84676,9.41287 23.84676,21.02469 0,11.61183 -10.67547,21.02469 -23.84676,21.02469 -13.1713,0 -23.84965,-9.41286 -23.84965,-21.02469 0,-11.61182 10.67835,-21.02469 23.84965,-21.02469 z" /> + <path + id="path1381" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 196.62837,188.58803 c -19.38153,0 -35.09193,15.5056 -35.09193,34.63212 0,19.12651 15.7104,34.63212 35.09193,34.63212 19.38152,0 35.09479,-15.50561 35.09479,-34.63212 0,-19.12652 -15.71327,-34.63212 -35.09479,-34.63212 z m 10.61006,9.52376 c 13.17129,0 23.84676,9.41287 23.84676,21.02469 0,11.61183 -10.67547,21.02469 -23.84676,21.02469 -13.1713,0 -23.84965,-9.41286 -23.84965,-21.02469 0,-11.61182 10.67835,-21.02469 23.84965,-21.02469 z" + inkscape:original-d="m 231.72248,223.22003 a 35.093342,34.631622 0 0 1 -35.09334,34.63162 35.093342,34.631622 0 0 1 -35.09335,-34.63162 35.093342,34.631622 0 0 1 35.09335,-34.63162 35.093342,34.631622 0 0 1 35.09334,34.63162 z" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1513" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="736.46674" + sodipodi:cy="843.005" + sodipodi:r1="144.44247" + sodipodi:r2="72.221237" + sodipodi:arg1="0.51800245" + sodipodi:arg2="1.146321" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 676.97938,711.38145 -1.31427,38.52604 c 0.13914,-5.6e-4 0.27344,-0.0217 0.41275,-0.0217 49.78128,0 90.12949,35.5762 90.12949,79.4634 0,40.50831 -34.40452,73.87185 -78.84433,78.7791 l 19.86588,76.32442 58.97845,-75.64012 95.7558,5.71318 -53.71056,-79.47425 35.01775,-89.29315 -92.18233,26.52401 z" + transform="matrix(0.26458333,0,0,0.26458333,28.359495,-0.29549027)" + inkscape:transform-center-x="2.3906972" + inkscape:transform-center-y="1.3001589" /> + <path + id="path1405" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953" + inkscape:transform-center-x="2.3906972" + inkscape:transform-center-y="1.3001589" + transform="matrix(0.26458333,0,0,0.26458333,12.669221,7.2744254)" + d="m 676.97686,711.38017 -1.01012,29.70647 c 6.5365,-5.06369 13.89116,-9.29516 21.89697,-12.5343 z m 166.29102,34.37694 -33.84473,9.74283 c 8.41416,10.68205 13.95544,23.24137 15.57551,36.85342 z m -194.3465,77.33454 -56.0241,35.81065 90.17297,32.726 24.15619,92.83404 58.9893,-75.64017 95.74495,5.70239 -49.33338,-72.98991 c -15.75615,23.13922 -44.40606,38.66725 -77.24763,38.66725 -40.9706,0 -75.49903,-24.11431 -86.4583,-57.11025 z" + inkscape:original-d="m 861.9598,914.52507 -95.74927,-5.70811 -58.98392,75.63996 -24.15943,-92.82687 -90.1649,-32.72302 80.81792,-51.66206 3.25895,-95.86388 74.10765,60.89796 92.17905,-26.52413 -35.01688,89.29907 z" /> + <path + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1515" + width="44.248779" + height="63.078419" + x="164.83891" + y="172.53653" + d="m 164.83843,172.53788 v 63.07695 h 27.61431 c -5.51445,-3.85105 -9.06396,-9.79466 -9.06396,-16.47835 0,-11.61182 10.67835,-21.02469 23.84965,-21.02469 0.6242,0 1.23571,0.0418 1.84785,0.0833 v -25.65725 z" + sodipodi:type="rect" /> + <path + id="rect1429" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 149.1475,180.10746 v 63.07695 h 44.25072 v -6.94597 c -6.05117,-3.81335 -10.00944,-10.04448 -10.00944,-17.10196 0,-7.05747 3.95827,-13.28574 10.00944,-17.09909 v -21.92993 z" + inkscape:original-d="m 149.14864,180.10645 h 44.24878 v 63.07841 h -44.24878 z" /> + </g> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1568" + cx="197.11641" + cy="201.26811" + rx="16.208378" + ry="14.28931" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1698" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="171.96014" + sodipodi:cy="934.35638" + sodipodi:r1="200.09505" + sodipodi:r2="100.04752" + sodipodi:arg1="0.66654447" + sodipodi:arg2="1.294863" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 105.59055,806.0433 -10.054131,54.51526 -1.409941,13.04379 -62.974903,34.02316 65.314964,29.29134 12.896161,70.41585 48.04134,-53.06842 70.95472,9.49311 -35.625,-62.08906 30.406,-63.41782 -13.17667,1.7495 -56.33858,11.81102 z" + transform="scale(0.26458333)" + inkscape:transform-center-x="4.4571803" + inkscape:transform-center-y="-0.62522407" + inkscape:path-effect="#path-effect1716" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1700" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="138.8714" + sodipodi:cy="903.65356" + sodipodi:r1="107.79645" + sodipodi:r2="53.898228" + sodipodi:arg1="0.59145707" + sodipodi:arg2="1.2197756" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 228.35637,963.75776 -70.95172,-9.49256 -48.04336,53.0668 -12.897324,-70.41241 -65.315788,-29.29339 62.980731,-34.02473 7.675981,-71.17117 51.82156,49.38402 70.05981,-14.69281 -30.95325,64.54574 z" + transform="scale(0.26458333)" + inkscape:transform-center-x="2.4127689" + inkscape:transform-center-y="0.3248026" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Bool_multi_px_1_1.svg b/testfiles/lpe_tests/Bool_multi_px_1_1.svg new file mode 100644 index 0000000..86dec1e --- /dev/null +++ b/testfiles/lpe_tests/Bool_multi_px_1_1.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg5" + inkscape:test-threshold="0.1" + inkscape:version="1.2-dev (99544120e7, 2021-04-09)" + sodipodi:docname="1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="0.32" + inkscape:cx="23.4375" + inkscape:cy="520.3125" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + units="px" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="bool_op" + id="path-effect1716" + is_visible="true" + lpeversion="1" + operand-path="#path1700" + operation="inters" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <inkscape:path-effect + effect="bool_op" + id="path-effect1664" + is_visible="true" + lpeversion="1" + operand-path="#path1568" + operation="diff" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <inkscape:path-effect + effect="bool_op" + id="path-effect1347" + is_visible="true" + lpeversion="1" + operand-path="#path1251" + operation="cut" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + <filter + id="selectable_hidder_filter" + width="1.3961189" + height="1.3961189" + x="-0.21637641" + y="-0.1956862" + style="color-interpolation-filters:sRGB" + inkscape:label="LPE boolean visibility"> + <feComposite + id="boolops_hidder_primitive" + result="composite1" + operator="arithmetic" + in2="SourceGraphic" + in="BackgroundImage" + k1="0" + k2="0" + k3="0" + k4="0" /> + </filter> + <inkscape:path-effect + effect="bool_op" + id="path-effect908" + is_visible="true" + lpeversion="1" + operand-path="#path892" + operation="union" + swap-operands="false" + rmv-inner="false" + filltype-this="from-curve" + filter="" + filltype-operand="from-curve" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path1204" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 201.486,138.78849 17.63349,-9.08084 25.42326,13.64186 -4.63652,-28.47739 20.83049,-19.963338 -28.516,-4.390246 -4.20746,-8.710122 c -15.5844,8.489872 -26.59934,29.304496 -26.59935,53.638056 0,1.12214 0.0259,2.2357 0.0721,3.34202 z m 0,0 c 1.2666,30.32172 19.65063,54.37734 42.14671,54.37734 23.31685,0 42.21876,-25.84185 42.21876,-57.71936 0,-31.87752 -18.90191,-57.719372 -42.21876,-57.719371 -5.51806,0 -10.78793,1.449258 -15.61945,4.081315 l 4.20746,8.710122 28.516,4.390246 -20.83049,19.963338 4.63652,28.47739 -25.42326,-13.64186 z" + inkscape:path-effect="#path-effect1347" + inkscape:original-d="m 285.85159,135.44647 a 42.218899,57.719349 0 0 1 -42.2189,57.71935 42.218899,57.719349 0 0 1 -42.2189,-57.71935 42.218899,57.719349 0 0 1 42.2189,-57.719347 42.218899,57.719349 0 0 1 42.2189,57.719347 z" + transform="matrix(4.5519952,0,0,4.5519952,-91.921108,-319.13174)" /> + <path + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path846" + inkscape:path-effect="#path-effect908" + sodipodi:type="arc" + sodipodi:cx="43.595745" + sodipodi:cy="101.16588" + sodipodi:rx="58.604801" + sodipodi:ry="57.487537" + d="m 66.764145,22.523932 c -23.160857,0 -42.641981,11.332007 -48.33689,26.713903 -19.7707355,9.237176 -33.436146,29.016325 -33.436146,51.928205 0,31.74949 26.238001,57.48724 58.604538,57.48724 32.366539,0 58.604963,-25.73775 58.604963,-57.48724 0,-5.446231 -0.77266,-10.715793 -2.215284,-15.708681 10.307114,-6.596483 16.803244,-16.212282 16.803244,-26.921575 0,-19.889014 -22.396914,-36.011852 -50.024425,-36.011852 z" + transform="matrix(4.5519952,0,0,4.5519952,85.117274,123.72117)" /> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path892" + cx="80.808784" + cy="95.01683" + rx="50.024033" + ry="36.012249" + transform="matrix(4.5519952,0,0,4.5519952,21.187096,-42.339506)" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1251" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="752.93793" + sodipodi:cy="209.50652" + sodipodi:r1="269.02332" + sodipodi:r2="134.51166" + sodipodi:arg1="0.95094102" + sodipodi:arg2="1.5792595" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 909.21825,428.48141 751.79955,344.01336 592.9737,425.8049 624.66254,249.98875 497.79428,124.21137 674.79776,100.01907 755.2147,-59.507165 832.92003,101.35732 1009.4887,128.54206 880.50976,252.15408 Z" + transform="matrix(0.7351515,0,0,0.7351515,352.82315,18.395026)" + inkscape:transform-center-x="-0.11362542" + inkscape:transform-center-y="-4.040657" /> + <g + id="g1544" + transform="matrix(3.0936832,0,0,3.0936832,277.33356,195.8907)" + inkscape:path-effect="#path-effect1664"> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1511" + cx="212.31941" + cy="215.65012" + rx="35.093342" + ry="34.631622" + d="m 212.31912,181.01841 c -19.38152,0 -35.09294,15.50491 -35.09294,34.63142 0,19.12652 15.71142,34.63206 35.09294,34.63206 19.38151,0 35.09356,-15.50554 35.09356,-34.63206 0,-19.12651 -15.71205,-34.63142 -35.09356,-34.63142 z m -5.08155,17.0938 c 13.17129,0 23.84836,9.41325 23.84836,21.02507 0,11.61182 -10.67707,21.02508 -23.84836,21.02508 -13.1713,0 -23.849,-9.41326 -23.849,-21.02508 0,-11.61182 10.6777,-21.02507 23.849,-21.02507 z" /> + <path + id="path1381" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 196.62938,188.58864 c -19.38152,0 -35.09356,15.50491 -35.09356,34.63143 0,19.12652 15.71204,34.63144 35.09356,34.63143 19.38152,0 35.09293,-15.50491 35.09293,-34.63143 0,-19.12651 -15.71141,-34.63143 -35.09293,-34.63143 z m 10.60819,9.52357 c 13.17129,0 23.84836,9.41325 23.84836,21.02507 0,11.61182 -10.67707,21.02508 -23.84836,21.02508 -13.1713,0 -23.849,-9.41326 -23.849,-21.02508 0,-11.61182 10.6777,-21.02507 23.849,-21.02507 z" + inkscape:original-d="m 231.72248,223.22003 a 35.093342,34.631622 0 0 1 -35.09334,34.63162 35.093342,34.631622 0 0 1 -35.09335,-34.63162 35.093342,34.631622 0 0 1 35.09335,-34.63162 35.093342,34.631622 0 0 1 35.09334,34.63162 z" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1513" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="736.46674" + sodipodi:cy="843.005" + sodipodi:r1="144.44247" + sodipodi:r2="72.221237" + sodipodi:arg1="0.51800245" + sodipodi:arg2="1.146321" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 676.97895,711.38022 -1.30998,38.51669 c 0.1359,-5.2e-4 0.26959,-0.01 0.40564,-0.01 49.78128,0 90.13556,35.57766 90.13556,79.46485 0,40.51076 -34.39364,73.91645 -78.8373,78.82061 l 19.85488,76.28413 58.98242,-75.63989 95.75006,5.7076 -53.71143,-79.46963 35.01625,-89.30042 -92.17808,26.52407 z" + transform="matrix(0.26458333,0,0,0.26458333,28.359495,-0.29549027)" + inkscape:transform-center-x="2.3906972" + inkscape:transform-center-y="1.3001589" /> + <path + id="path1405" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953" + inkscape:transform-center-x="2.3906972" + inkscape:transform-center-y="1.3001589" + transform="matrix(0.26458333,0,0,0.26458333,12.669221,7.2744254)" + d="m 676.97861,711.38144 -1.00694,29.62125 c 6.51973,-5.04284 13.8682,-9.26634 21.84728,-12.49609 z m 166.28612,34.3744 -33.81368,9.73058 c 8.40529,10.67274 13.92822,23.23911 15.55271,36.83688 z m -194.37787,77.36507 -55.98547,35.78698 90.16659,32.72321 24.15943,92.82474 58.98243,-75.63993 95.75007,5.70998 -49.27806,-72.91257 c -15.76118,23.12039 -44.47998,38.59305 -77.30541,38.59305 -40.96328,0 -75.52382,-24.09863 -86.48958,-57.08546 z" + inkscape:original-d="m 861.9598,914.52507 -95.74927,-5.70811 -58.98392,75.63996 -24.15943,-92.82687 -90.1649,-32.72302 80.81792,-51.66206 3.25895,-95.86388 74.10765,60.89796 92.17905,-26.52413 -35.01688,89.29907 z" /> + <path + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1515" + width="44.248779" + height="63.078419" + x="164.83891" + y="172.53653" + d="m 164.83892,172.53653 v 63.07838 h 27.59467 c -5.50801,-3.85129 -9.04502,-9.79849 -9.04502,-16.47763 0,-11.61182 10.6777,-21.02507 23.849,-21.02507 0.62351,0 1.23895,0.0274 1.85042,0.0688 v -25.64449 z" + sodipodi:type="rect" /> + <path + id="rect1429" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10" + d="m 149.14856,180.10614 v 63.07901 h 44.24906 v -6.9307 c -6.05647,-3.81281 -10.00905,-10.05605 -10.00905,-17.11717 0,-7.06111 3.95258,-13.30435 10.00905,-17.11716 v -21.91398 z" + inkscape:original-d="m 149.14864,180.10645 h 44.24878 v 63.07841 h -44.24878 z" /> + </g> + <ellipse + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1568" + cx="197.11641" + cy="201.26811" + rx="16.208378" + ry="14.28931" + transform="matrix(4.5519952,0,0,4.5519952,21.187096,-42.339506)" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1698" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="171.96014" + sodipodi:cy="934.35638" + sodipodi:r1="200.09505" + sodipodi:r2="100.04752" + sodipodi:arg1="0.66654447" + sodipodi:arg2="1.294863" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 105.59294,806.0407 -10.049571,54.44799 -1.414103,13.11288 -62.981278,34.02459 65.316501,29.29402 12.897241,70.41182 48.04234,-53.06632 70.95184,9.49175 -35.62349,-62.09101 30.4114,-63.41586 -13.13725,1.74006 -56.3794,11.82368 z" + transform="matrix(1.204382,0,0,1.204382,21.187096,-42.339506)" + inkscape:transform-center-x="20.29295" + inkscape:transform-center-y="-2.8480539" + inkscape:path-effect="#path-effect1716" /> + <path + sodipodi:type="star" + style="fill:#00ff00;fill-rule:evenodd;stroke:#008000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#selectable_hidder_filter)" + id="path1700" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="138.8714" + sodipodi:cy="903.65356" + sodipodi:r1="107.79645" + sodipodi:r2="53.898228" + sodipodi:arg1="0.59145707" + sodipodi:arg2="1.2197756" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 228.35637,963.75776 -70.95172,-9.49256 -48.04336,53.0668 -12.897324,-70.41241 -65.315788,-29.29339 62.980731,-34.02473 7.675981,-71.17117 51.82156,49.38402 70.05981,-14.69281 -30.95325,64.54574 z" + transform="matrix(1.204382,0,0,1.204382,21.187096,-42.339506)" + inkscape:transform-center-x="2.4127689" + inkscape:transform-center-y="0.3248026" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BoundingBox_mixed_0_92_5.svg b/testfiles/lpe_tests/BoundingBox_mixed_0_92_5.svg new file mode 100644 index 0000000..de0b7ff --- /dev/null +++ b/testfiles/lpe_tests/BoundingBox_mixed_0_92_5.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250.00001" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + linkedpath="#rect41" + visualbounds="false" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#00ff00;stroke:#ff0000;stroke-width:0.26458332" + d="M 89.540131,102.43796 H 211.6403 v 136.481 H 89.540131 Z" + id="rect01" + inkscape:path-effect="#path-effect39" + inkscape:original-d="m 55.50008,49.459705 h 50.32008 V 88.679764 H 55.50008 Z" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + id="rect41" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BoundingBox_mm_1_0_2.svg b/testfiles/lpe_tests/BoundingBox_mm_1_0_2.svg new file mode 100644 index 0000000..ed256f3 --- /dev/null +++ b/testfiles/lpe_tests/BoundingBox_mm_1_0_2.svg @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250.00001" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + lpeversion="1" + linkedpath="#rect41" + visualbounds="false" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#00ff00;stroke:#ff0000;stroke-width:0.26458332" + d="M 89.540131,102.43796 H 211.6403 v 136.481 H 89.540131 Z" + id="rect01" + inkscape:path-effect="#path-effect39" + inkscape:original-d="m 55.50008,49.459705 h 50.32008 V 88.679764 H 55.50008 Z" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + id="rect41" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/BoundingBox_px_1_0_2.svg b/testfiles/lpe_tests/BoundingBox_px_1_0_2.svg new file mode 100644 index 0000000..77ad821 --- /dev/null +++ b/testfiles/lpe_tests/BoundingBox_px_1_0_2.svg @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + linkedpath="#rect41" + visualbounds="false" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#00ff00;stroke:#ff0000;stroke-width:0.264583" + d="M 89.540131,102.43796 H 211.6403 v 136.481 H 89.540131 Z" + id="rect01" + inkscape:path-effect="#path-effect39" + inkscape:original-d="m 55.50008,49.459705 h 50.32008 V 88.679764 H 55.50008 Z" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583" + d="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + id="rect41" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/CMakeLists.txt b/testfiles/lpe_tests/CMakeLists.txt new file mode 100644 index 0000000..d79da39 --- /dev/null +++ b/testfiles/lpe_tests/CMakeLists.txt @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +file(GLOB _FILES "README" "*.svg") +set(${_FILES})
\ No newline at end of file diff --git a/testfiles/lpe_tests/CloneOriginal_boken_1_0_2.svg b/testfiles/lpe_tests/CloneOriginal_boken_1_0_2.svg new file mode 100644 index 0000000..65b7ab3 --- /dev/null +++ b/testfiles/lpe_tests/CloneOriginal_boken_1_0_2.svg @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="clone_original" + linkeditem="#path02" + method="bsplinespiro" + allow_transforms="false" + id="path-effect191" + lpeversion="1" /> + <inkscape:path-effect + effect="spiro" + id="path-effect189" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect118" + is_visible="true" + lpeversion="1" + linkeditem="#g16" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect66" + is_visible="true" + lpeversion="1" + linkeditem="#path17" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect138" + is_visible="true" + lpeversion="1" + linkeditem="#path18" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + linkedpath="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + visualbounds="false" + lpeversion="1" /> + </defs> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="ellipse20" + inkscape:path-effect="#path-effect138" + sodipodi:type="arc" + sodipodi:cx="109.05201" + sodipodi:cy="48.879856" + sodipodi:rx="20.797256" + sodipodi:ry="19.170473" + d="M 109.01812,49.994839 92.182785,41.542495 80.726178,60.22578 83.562431,41.60251 62.253285,36.480081 80.841518,33.422611 79.128348,11.573492 87.780255,28.307142 108.0306,19.926071 94.789544,33.325506 Z" + transform="translate(97.44188,-0.57297094)" /> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="ellipse19" + inkscape:path-effect="#path-effect66" + sodipodi:type="arc" + sodipodi:cx="109.24622" + sodipodi:cy="116.51102" + sodipodi:rx="21.548172" + sodipodi:ry="19.86265" + d="m 119.66307,109.80981 -17.8727,-9.00128 -11.440767,19.60162 3.037758,-19.77949 L 71.209719,95.807081 90.959854,92.58396 88.694082,70.001202 97.862579,87.788697 118.6399,78.655364 104.5562,92.871761 Z" + transform="translate(74.514283,-1.956031)" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="path18" + sodipodi:sides="5" + sodipodi:cx="87.831308" + sodipodi:cy="35.640054" + sodipodi:r1="25.591812" + sodipodi:r2="7.3330889" + sodipodi:arg1="0.59548852" + sodipodi:arg2="0.93551599" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.58090876" + inkscape:transform-center-y="0.068688338" + d="M 109.01812,49.994839 92.182785,41.542495 80.726178,60.22578 83.562431,41.60251 62.253285,36.480081 80.841518,33.422611 79.128348,11.573492 87.780255,28.307142 108.0306,19.926071 94.789544,33.325506 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="path17" + sodipodi:sides="5" + sodipodi:cx="97.711277" + sodipodi:cy="94.936718" + sodipodi:r1="26.515842" + sodipodi:r2="7.1496258" + sodipodi:arg1="0.59548852" + sodipodi:arg2="0.96364212" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.6019777" + inkscape:transform-center-y="0.071179086" + d="m 119.66307,109.80981 -17.8727,-9.00128 -11.440767,19.60162 3.037758,-19.77949 L 71.209719,95.807081 90.959854,92.58396 88.694082,70.001202 97.862579,87.788697 118.6399,78.655364 104.5562,92.871761 Z" /> + <g + id="g16" + transform="matrix(0.77010063,0,0,0.77010063,-7.7475443,6.0030225)"> + <g + id="g15" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse14" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="7.9669428" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path13" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g12" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="path11" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path10" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <g + id="g09" + transform="matrix(0.77010063,0,0,0.77010063,128.95967,4.1869072)" + inkscape:path-effect="#path-effect118"> + <g + id="g08" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse07" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="m 87.39402,217.29919 a 27.980984,7.9669428 0 0 1 -27.980984,7.96695 27.980984,7.9669428 0 0 1 -27.980983,-7.96695 27.980984,7.9669428 0 0 1 27.980983,-7.96694 27.980984,7.9669428 0 0 1 27.980984,7.96694 z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path06" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g05" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse04" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="M 87.39402,217.29919 A 27.980984,25.792278 0 0 1 59.413036,243.09147 27.980984,25.792278 0 0 1 31.432053,217.29919 27.980984,25.792278 0 0 1 59.413036,191.50692 27.980984,25.792278 0 0 1 87.39402,217.29919 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path03" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 18.460949,62.250537 C 18.405129,61.4448 18.303581,60.642437 18.164509,59.846832 17.056101,53.505845 13.524379,47.697511 8.7121966,43.422047 3.9000141,39.146584 -2.1364469,36.360589 -8.4245037,34.983262 c -12.5761133,-2.754654 -25.7185673,0.01323 -37.9220783,4.114587 -10.090816,3.391318 -19.995295,7.769961 -28.315635,14.410558 -8.320341,6.640598 -14.992021,15.740606 -17.219594,26.150386 -1.113787,5.20489 -1.094133,10.674018 0.267925,15.81952 1.362058,5.145507 4.086302,9.952917 7.951056,13.612837 3.864754,3.65993 8.877144,6.137 14.161534,6.77467 5.284391,0.63767 10.811168,-0.60724 15.197394,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.466259 3.753059,-9.232917 5.557539,-13.881502 1.80448,-4.648584 3.922243,-9.253465 7.122195,-13.077833 3.199952,-3.824368 7.611526,-6.832441 12.555635,-7.481496 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038787 3.2224143,1.698773 5.9531062,4.252205 8.0980519,7.19652 4.2898913,5.888629 6.2079592,13.147643 7.6297884,20.293098 1.4266854,7.169856 2.4458581,14.480346 2.0083538,21.777666 -0.4375043,7.29732 -2.4025816,14.62346 -6.5314675,20.65626 -4.1288859,6.03279 -10.5683292,10.65781 -17.8006479,11.72359 -3.61616,0.53289 -7.37626,0.17098 -10.781011,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606078,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831556,-8.68518 4.169543,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794982,-17.219718 7.6025844,-4.496046 15.5950248,-8.541055 22.099192,-14.5168 3.252084,-2.987872 6.105959,-6.455343 8.087325,-10.402192 1.981367,-3.946849 3.065535,-8.391414 2.760315,-12.797123 z" + id="path02" + inkscape:path-effect="#path-effect189" + inkscape:original-d="m 18.460949,62.250537 c 17.856477,-26.645749 -0.196626,-1.60147 -0.29644,-2.403705 -0.09981,-0.802235 -43.006394,-13.831655 -64.511091,-20.748983 -21.504697,-6.917328 -7.51166,50.480965 -7.95732,73.145371 -0.44566,22.6644 25.233933,-32.348046 34.537728,-45.948991 C -10.462378,52.693284 -2.2390476,85.980834 6.5230156,95.822634 15.285079,105.66443 -21.232315,126.73173 -35.11148,142.18478 -48.990646,157.63783 0.60447241,88.896284 18.460949,62.250537 Z" + sodipodi:nodetypes="ssssssss" /> + <path + d="M 18.460949,62.250537 C 18.405129,61.4448 18.303581,60.642437 18.164509,59.846832 17.056101,53.505845 13.524379,47.697511 8.7121966,43.422047 3.9000141,39.146584 -2.1364469,36.360589 -8.4245037,34.983262 c -12.5761133,-2.754654 -25.7185673,0.01323 -37.9220783,4.114587 -10.090816,3.391318 -19.995295,7.769961 -28.315635,14.410558 -8.320341,6.640598 -14.992021,15.740606 -17.219594,26.150386 -1.113787,5.20489 -1.094133,10.674018 0.267925,15.81952 1.362058,5.145507 4.086302,9.952917 7.951056,13.612837 3.864754,3.65993 8.877144,6.137 14.161534,6.77467 5.284391,0.63767 10.811168,-0.60724 15.197394,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.466259 3.753059,-9.232917 5.557539,-13.881502 1.80448,-4.648584 3.922243,-9.253465 7.122195,-13.077833 3.199952,-3.824368 7.611526,-6.832441 12.555635,-7.481496 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038787 3.2224143,1.698773 5.9531062,4.252205 8.0980519,7.19652 4.2898913,5.888629 6.2079592,13.147643 7.6297884,20.293098 1.4266854,7.169856 2.4458581,14.480346 2.0083538,21.777666 -0.4375043,7.29732 -2.4025816,14.62346 -6.5314675,20.65626 -4.1288859,6.03279 -10.5683292,10.65781 -17.8006479,11.72359 -3.61616,0.53289 -7.37626,0.17098 -10.781011,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606078,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831556,-8.68518 4.169543,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794982,-17.219718 7.6025844,-4.496046 15.5950248,-8.541055 22.099192,-14.5168 3.252084,-2.987872 6.105959,-6.455343 8.087325,-10.402192 1.981367,-3.946849 3.065535,-8.391414 2.760315,-12.797123 z" + id="path01" + inkscape:path-effect="#path-effect191" + inkscape:original-d="M 0,0" + style="fill:#00ffff" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/CloneOriginal_mixed_0_92_5.svg b/testfiles/lpe_tests/CloneOriginal_mixed_0_92_5.svg new file mode 100644 index 0000000..1f7b3a2 --- /dev/null +++ b/testfiles/lpe_tests/CloneOriginal_mixed_0_92_5.svg @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="clone_original" + id="path-effect01" + is_visible="true" + linkedpath="#path01" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="m 157.23809,221.40477 a 54.42857,53.672619 0 0 1 -54.42857,53.67262 54.42857,53.672619 0 0 1 -54.428573,-53.67262 54.42857,53.672619 0 0 1 54.428573,-53.67262 54.42857,53.672619 0 0 1 54.42857,53.67262 z" + id="rect02" + inkscape:path-effect="#path-effect01" + inkscape:original-d="M 15.119047,15.785713 H 138.33928 V 124.64285 H 15.119047 Z" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="m 157.23809,221.40477 a 54.42857,53.672619 0 0 1 -54.42857,53.67262 54.42857,53.672619 0 0 1 -54.428573,-53.67262 54.42857,53.672619 0 0 1 54.428573,-53.67262 54.42857,53.672619 0 0 1 54.42857,53.67262 z" + id="path01" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/CloneOriginal_mixed_mm_1_1.svg b/testfiles/lpe_tests/CloneOriginal_mixed_mm_1_1.svg new file mode 100644 index 0000000..cd765e5 --- /dev/null +++ b/testfiles/lpe_tests/CloneOriginal_mixed_mm_1_1.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.1-alpha (82a87c3b8f, 2021-03-10)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="clone_original" + linkeditem="#path02" + method="bsplinespiro" + allow_transforms="false" + id="path-effect191" + lpeversion="1" + is_visible="true" + attributes="" + css_properties="" /> + <inkscape:path-effect + effect="spiro" + id="path-effect189" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect118" + is_visible="true" + lpeversion="1" + linkeditem="#g16" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect66" + is_visible="true" + lpeversion="1" + linkeditem="#path17" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect138" + is_visible="true" + lpeversion="1" + linkeditem="#path18" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + linkedpath="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + visualbounds="false" + lpeversion="1" /> + </defs> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="ellipse20" + inkscape:path-effect="#path-effect138" + sodipodi:type="arc" + sodipodi:cx="109.05201" + sodipodi:cy="48.879856" + sodipodi:rx="20.797256" + sodipodi:ry="19.170473" + d="M 92.230787,62.806149 75.395454,60.484643 63.938847,73.03709 60.944326,56.308353 45.465954,49.291391 60.450571,41.273969 62.341018,24.384801 74.596541,36.158499 91.243274,32.737381 83.832987,48.031349 Z" + transform="translate(97.44188,-0.57297094)" /> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="ellipse19" + inkscape:path-effect="#path-effect66" + sodipodi:type="arc" + sodipodi:cx="109.24622" + sodipodi:cy="116.51102" + sodipodi:rx="21.548172" + sodipodi:ry="19.86265" + d="m 118.26345,132.30255 -17.44319,-2.40533 -11.870269,13.00567 -3.102642,-17.33275 -16.037242,-7.27032 15.525658,-8.30691 1.958705,-17.498971 12.698026,12.198801 17.247784,-3.54464 -7.67784,15.84618 z" + transform="translate(74.514283,-1.956031)" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="path18" + sodipodi:sides="5" + sodipodi:cx="71.043976" + sodipodi:cy="48.451363" + sodipodi:r1="25.591812" + sodipodi:r2="12.795906" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.58090876" + inkscape:transform-center-y="0.068688338" + d="M 92.230787,62.806149 75.395454,60.484643 63.938847,73.03709 60.944326,56.308353 45.465954,49.291391 60.450571,41.273969 62.341018,24.384801 74.596541,36.158499 91.243274,32.737381 83.832987,48.031349 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="path17" + sodipodi:sides="5" + sodipodi:cx="96.311661" + sodipodi:cy="117.42946" + sodipodi:r1="26.515842" + sodipodi:r2="13.257921" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.6019777" + inkscape:transform-center-y="0.071179086" + d="m 118.26345,132.30255 -17.44319,-2.40533 -11.870269,13.00567 -3.102642,-17.33275 -16.037242,-7.27032 15.525658,-8.30691 1.958705,-17.498971 12.698026,12.198801 17.247784,-3.54464 -7.67784,15.84618 z" /> + <g + id="g16" + transform="matrix(0.77010063,0,0,0.77010063,-1.3916237,13.9502)"> + <g + id="g15" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse14" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path13" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g12" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="path11" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path10" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <g + id="g09" + transform="matrix(0.77010063,0,0,0.77010063,123.4285,13.600369)" + inkscape:path-effect="#path-effect118"> + <g + id="g08" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse07" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="M 87.39402,217.29919 A 27.980984,25.792278 0 0 1 59.413036,243.09147 27.980984,25.792278 0 0 1 31.432053,217.29919 27.980984,25.792278 0 0 1 59.413036,191.50692 27.980984,25.792278 0 0 1 87.39402,217.29919 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path06" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g05" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse04" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="M 87.39402,217.29919 A 27.980984,25.792278 0 0 1 59.413036,243.09147 27.980984,25.792278 0 0 1 31.432053,217.29919 27.980984,25.792278 0 0 1 59.413036,191.50692 27.980984,25.792278 0 0 1 87.39402,217.29919 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path03" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 20.589764,94.953503 c -0.05582,-0.805737 -0.157368,-1.6081 -0.29644,-2.403705 C 19.184916,86.208811 15.653194,80.400477 10.841012,76.125014 6.0288291,71.84955 -0.00763193,69.063555 -6.2956887,67.686228 c -12.5761133,-2.754654 -25.7185673,0.01324 -37.9220783,4.114587 -10.090817,3.391318 -19.995297,7.769961 -28.315638,14.410559 -8.320341,6.640599 -14.992022,15.740606 -17.219595,26.150386 -1.113787,5.20489 -1.094133,10.67402 0.267926,15.81952 1.362058,5.14551 4.086302,9.95292 7.951057,13.61285 3.864754,3.65992 8.877144,6.13699 14.161535,6.77466 5.284391,0.63767 10.811169,-0.60723 15.197395,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.46626 3.753059,-9.23292 5.557538,-13.8815 1.80448,-4.64859 3.922243,-9.25347 7.122195,-13.07784 3.199952,-3.82437 7.611527,-6.83244 12.555636,-7.481495 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038785 3.2224143,1.69877 5.9531062,4.25221 8.0980519,7.19652 4.2898913,5.88863 6.2079593,13.14765 7.6297887,20.2931 1.4266861,7.16986 2.4458591,14.48034 2.0083551,21.77767 -0.437505,7.29732 -2.4025816,14.62346 -6.5314674,20.65625 -4.12888590446,6.0328 -10.5683293,10.65782 -17.8006486,11.7236 -3.61616,0.53289 -7.376261,0.17098 -10.781012,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606079,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831555,-8.68518 4.169542,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794983,-17.21972 7.602584,-4.49605 15.5950245,-8.54106 22.0991919,-14.5168 3.2520841,-2.98787 6.1059591,-6.45534 8.0873251,-10.40219 1.981367,-3.94685 3.065535,-8.391418 2.760315,-12.797127 z" + id="path02" + inkscape:path-effect="#path-effect189" + inkscape:original-d="m 20.589764,94.953503 c 17.856477,-26.645749 -0.196626,-1.60147 -0.29644,-2.403705 -0.09981,-0.802235 -43.006394,-13.831655 -64.511091,-20.748983 -21.504697,-6.917328 -7.51166,50.480965 -7.95732,73.145375 -0.44566,22.6644 25.233933,-32.34805 34.537728,-45.948995 C -8.333563,85.39625 -0.11023229,118.6838 8.6518309,128.5256 17.413894,138.3674 -19.1035,159.4347 -32.982665,174.88775 -46.861831,190.3408 2.7332877,121.59925 20.589764,94.953503 Z" + sodipodi:nodetypes="ssssssss" /> + <path + d="m 20.589764,94.953503 c -0.05582,-0.805737 -0.157368,-1.6081 -0.29644,-2.403705 C 19.184916,86.208811 15.653194,80.400477 10.841012,76.125014 6.0288291,71.84955 -0.00763193,69.063555 -6.2956887,67.686228 c -12.5761133,-2.754654 -25.7185673,0.01324 -37.9220783,4.114587 -10.090817,3.391318 -19.995297,7.769961 -28.315638,14.410559 -8.320341,6.640599 -14.992022,15.740606 -17.219595,26.150386 -1.113787,5.20489 -1.094133,10.67402 0.267926,15.81952 1.362058,5.14551 4.086302,9.95292 7.951057,13.61285 3.864754,3.65992 8.877144,6.13699 14.161535,6.77466 5.284391,0.63767 10.811169,-0.60723 15.197395,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.46626 3.753059,-9.23292 5.557538,-13.8815 1.80448,-4.64859 3.922243,-9.25347 7.122195,-13.07784 3.199952,-3.82437 7.611527,-6.83244 12.555636,-7.481495 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038785 3.2224143,1.69877 5.9531062,4.25221 8.0980519,7.19652 4.2898913,5.88863 6.2079593,13.14765 7.6297887,20.2931 1.4266861,7.16986 2.4458591,14.48034 2.0083551,21.77767 -0.437505,7.29732 -2.4025816,14.62346 -6.5314674,20.65625 -4.12888590446,6.0328 -10.5683293,10.65782 -17.8006486,11.7236 -3.61616,0.53289 -7.376261,0.17098 -10.781012,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606079,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831555,-8.68518 4.169542,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794983,-17.21972 7.602584,-4.49605 15.5950245,-8.54106 22.0991919,-14.5168 3.2520841,-2.98787 6.1059591,-6.45534 8.0873251,-10.40219 1.981367,-3.94685 3.065535,-8.391418 2.760315,-12.797127 z" + id="path01" + inkscape:path-effect="#path-effect191" + inkscape:original-d="M 0,0" + style="fill:#00ffff" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/CloneOriginal_mixed_px_1_1.svg b/testfiles/lpe_tests/CloneOriginal_mixed_px_1_1.svg new file mode 100644 index 0000000..543b3f8 --- /dev/null +++ b/testfiles/lpe_tests/CloneOriginal_mixed_px_1_1.svg @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.1-alpha (82a87c3b8f, 2021-03-10)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="clone_original" + linkeditem="#path02" + method="bsplinespiro" + allow_transforms="false" + id="path-effect191" + lpeversion="1" /> + <inkscape:path-effect + effect="spiro" + id="path-effect189" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect118" + is_visible="true" + lpeversion="1" + linkeditem="#g16" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect66" + is_visible="true" + lpeversion="1" + linkeditem="#path17" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="clone_original" + id="path-effect138" + is_visible="true" + lpeversion="1" + linkeditem="#path18" + method="d" + attributes="" + css_properties="" + allow_transforms="true" /> + <inkscape:path-effect + effect="bounding_box" + id="path-effect39" + is_visible="true" + linkedpath="m 89.540131,132.33983 c 39.825569,-5.82992 71.760559,-64.263684 122.100169,0 v 86.58012 c -41.85049,31.06173 -82.21035,21.87631 -122.100169,0 z" + visualbounds="false" + lpeversion="1" /> + </defs> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="ellipse20" + inkscape:path-effect="#path-effect138" + sodipodi:type="arc" + sodipodi:cx="109.05201" + sodipodi:cy="48.879856" + sodipodi:rx="20.797256" + sodipodi:ry="19.170473" + d="M 92.230787,62.806149 75.395454,60.484643 63.938847,73.03709 60.944326,56.308353 45.465954,49.291391 60.450571,41.273969 62.341018,24.384801 74.596541,36.158499 91.243274,32.737381 83.832987,48.031349 Z" + transform="translate(97.44188,-0.57297094)" /> + <path + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="ellipse19" + inkscape:path-effect="#path-effect66" + sodipodi:type="arc" + sodipodi:cx="109.24622" + sodipodi:cy="116.51102" + sodipodi:rx="21.548172" + sodipodi:ry="19.86265" + d="m 118.26345,132.30255 -17.44319,-2.40533 -11.870269,13.00567 -3.102642,-17.33275 -16.037242,-7.27032 15.525658,-8.30691 1.958705,-17.498971 12.698026,12.198801 17.247784,-3.54464 -7.67784,15.84618 z" + transform="translate(74.514283,-1.956031)" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.254511" + id="path18" + sodipodi:sides="5" + sodipodi:cx="71.043976" + sodipodi:cy="48.451362" + sodipodi:r1="25.591812" + sodipodi:r2="12.795906" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.58090876" + inkscape:transform-center-y="0.068688338" + d="M 92.230787,62.806149 75.395454,60.484643 63.938847,73.03709 60.944326,56.308353 45.465954,49.291391 60.450571,41.273969 62.341018,24.384801 74.596541,36.158499 91.243274,32.737381 83.832987,48.031349 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.263701" + id="path17" + sodipodi:sides="5" + sodipodi:cx="96.31166" + sodipodi:cy="117.42946" + sodipodi:r1="26.515842" + sodipodi:r2="13.257921" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.6019777" + inkscape:transform-center-y="0.071179086" + d="m 118.26345,132.30255 -17.44319,-2.40533 -11.870269,13.00567 -3.102642,-17.33275 -16.037242,-7.27032 15.525658,-8.30691 1.958705,-17.498971 12.698026,12.198801 17.247784,-3.54464 -7.67784,15.84618 z" /> + <g + id="g16" + transform="matrix(0.77010063,0,0,0.77010063,-1.3916237,13.9502)"> + <g + id="g15" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse14" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path13" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g12" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="path11" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path10" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <g + id="g09" + transform="matrix(0.77010063,0,0,0.77010063,123.4285,13.600369)" + inkscape:path-effect="#path-effect118"> + <g + id="g08" + transform="translate(-2.1023541,-5.8034479)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse07" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="M 87.39402,217.29919 A 27.980984,25.792278 0 0 1 59.413036,243.09147 27.980984,25.792278 0 0 1 31.432053,217.29919 27.980984,25.792278 0 0 1 59.413036,191.50692 27.980984,25.792278 0 0 1 87.39402,217.29919 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path06" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + <g + id="g05" + transform="translate(-3.9814864,37.147042)"> + <ellipse + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.342424" + id="ellipse04" + cx="59.413036" + cy="217.29919" + rx="27.980984" + ry="25.792278" + d="M 87.39402,217.29919 A 27.980984,25.792278 0 0 1 59.413036,243.09147 27.980984,25.792278 0 0 1 31.432053,217.29919 27.980984,25.792278 0 0 1 59.413036,191.50692 27.980984,25.792278 0 0 1 87.39402,217.29919 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.342424" + id="path03" + sodipodi:sides="5" + sodipodi:cx="139.37627" + sodipodi:cy="215.95181" + sodipodi:r1="34.43166" + sodipodi:r2="17.21583" + sodipodi:arg1="0.59548852" + sodipodi:arg2="1.2238071" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.9540026" + inkscape:transform-center-y="0.34924413" + d="m 167.88136,235.26499 -22.65054,-3.1234 -15.41391,16.88828 -4.02888,-22.50713 -20.82487,-9.44074 20.16056,-10.78678 2.54344,-22.72297 16.48879,15.84053 22.3968,-4.60283 -9.96993,20.57677 z" /> + </g> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 20.589764,94.953503 c -0.05582,-0.805737 -0.157368,-1.6081 -0.29644,-2.403705 C 19.184916,86.208811 15.653194,80.400477 10.841012,76.125014 6.0288291,71.84955 -0.00763193,69.063555 -6.2956887,67.686228 c -12.5761133,-2.754654 -25.7185673,0.01324 -37.9220783,4.114587 -10.090817,3.391318 -19.995297,7.769961 -28.315638,14.410559 -8.320341,6.640599 -14.992022,15.740606 -17.219595,26.150386 -1.113787,5.20489 -1.094133,10.67402 0.267926,15.81952 1.362058,5.14551 4.086302,9.95292 7.951057,13.61285 3.864754,3.65992 8.877144,6.13699 14.161535,6.77466 5.284391,0.63767 10.811169,-0.60723 15.197395,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.46626 3.753059,-9.23292 5.557538,-13.8815 1.80448,-4.64859 3.922243,-9.25347 7.122195,-13.07784 3.199952,-3.82437 7.611527,-6.83244 12.555636,-7.481495 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038785 3.2224143,1.69877 5.9531062,4.25221 8.0980519,7.19652 4.2898913,5.88863 6.2079593,13.14765 7.6297887,20.2931 1.4266861,7.16986 2.4458591,14.48034 2.0083551,21.77767 -0.437505,7.29732 -2.4025816,14.62346 -6.5314674,20.65625 -4.12888590446,6.0328 -10.5683293,10.65782 -17.8006486,11.7236 -3.61616,0.53289 -7.376261,0.17098 -10.781012,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606079,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831555,-8.68518 4.169542,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794983,-17.21972 7.602584,-4.49605 15.5950245,-8.54106 22.0991919,-14.5168 3.2520841,-2.98787 6.1059591,-6.45534 8.0873251,-10.40219 1.981367,-3.94685 3.065535,-8.391418 2.760315,-12.797127 z" + id="path02" + inkscape:path-effect="#path-effect189" + inkscape:original-d="m 20.589764,94.953503 c 17.856477,-26.645749 -0.196626,-1.60147 -0.29644,-2.403705 -0.09981,-0.802235 -43.006394,-13.831655 -64.511091,-20.748983 -21.504697,-6.917328 -7.51166,50.480965 -7.95732,73.145375 -0.44566,22.6644 25.233933,-32.34805 34.537728,-45.948995 C -8.333563,85.39625 -0.11023229,118.6838 8.6518309,128.5256 17.413894,138.3674 -19.1035,159.4347 -32.982665,174.88775 -46.861831,190.3408 2.7332877,121.59925 20.589764,94.953503 Z" + sodipodi:nodetypes="ssssssss" /> + <path + d="m 20.589764,94.953503 c -0.05582,-0.805737 -0.157368,-1.6081 -0.29644,-2.403705 C 19.184916,86.208811 15.653194,80.400477 10.841012,76.125014 6.0288291,71.84955 -0.00763193,69.063555 -6.2956887,67.686228 c -12.5761133,-2.754654 -25.7185673,0.01324 -37.9220783,4.114587 -10.090817,3.391318 -19.995297,7.769961 -28.315638,14.410559 -8.320341,6.640599 -14.992022,15.740606 -17.219595,26.150386 -1.113787,5.20489 -1.094133,10.67402 0.267926,15.81952 1.362058,5.14551 4.086302,9.95292 7.951057,13.61285 3.864754,3.65992 8.877144,6.13699 14.161535,6.77466 5.284391,0.63767 10.811169,-0.60723 15.197395,-3.6226 4.109183,-2.82491 7.084699,-7.0419 9.302359,-11.50816 2.21766,-4.46626 3.753059,-9.23292 5.557538,-13.8815 1.80448,-4.64859 3.922243,-9.25347 7.122195,-13.07784 3.199952,-3.82437 7.611527,-6.83244 12.555636,-7.481495 3.611781,-0.474149 7.338935,0.340015 10.5613493,2.038785 3.2224143,1.69877 5.9531062,4.25221 8.0980519,7.19652 4.2898913,5.88863 6.2079593,13.14765 7.6297887,20.2931 1.4266861,7.16986 2.4458591,14.48034 2.0083551,21.77767 -0.437505,7.29732 -2.4025816,14.62346 -6.5314674,20.65625 -4.12888590446,6.0328 -10.5683293,10.65782 -17.8006486,11.7236 -3.61616,0.53289 -7.376261,0.17098 -10.781012,-1.15878 -3.404751,-1.32975 -6.439357,-3.6381 -8.529723,-6.63659 -2.525603,-3.62281 -3.606079,-8.15842 -3.338928,-12.5666 0.267151,-4.40818 1.831555,-8.68518 4.169542,-12.43181 4.675973,-7.49327 12.192398,-12.72367 19.794983,-17.21972 7.602584,-4.49605 15.5950245,-8.54106 22.0991919,-14.5168 3.2520841,-2.98787 6.1059591,-6.45534 8.0873251,-10.40219 1.981367,-3.94685 3.065535,-8.391418 2.760315,-12.797127 z" + id="path01" + inkscape:path-effect="#path-effect191" + inkscape:original-d="M 0 0" + style="fill:#00ffff" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ConstructGrid_mixed_0_92_5.svg b/testfiles/lpe_tests/ConstructGrid_mixed_0_92_5.svg new file mode 100644 index 0000000..79ab34e --- /dev/null +++ b/testfiles/lpe_tests/ConstructGrid_mixed_0_92_5.svg @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.2"> + <defs + id="defs2"> + <inkscape:path-effect + effect="construct_grid" + id="path-effect21" + is_visible="true" + nr_x="5" + nr_y="5" /> + <inkscape:path-effect + effect="construct_grid" + id="path-effect19" + is_visible="true" + nr_x="5" + nr_y="5" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;stroke:#ff0000;stroke-width:0.48932359" + id="path02" + sodipodi:sides="5" + sodipodi:cx="117.38959" + sodipodi:cy="114.68728" + sodipodi:r1="98.7099" + sodipodi:r2="49.35495" + sodipodi:arg1="0.65483207" + sodipodi:arg2="1.2831506" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 131.39136,162.01445 321.45002,63.94864 M 84.408507,207.72433 405.85852,271.67297 M 37.42565,253.4342 358.87566,317.38284 M -9.5572058,299.14408 311.89281,363.09272 M -56.540062,344.85396 264.90995,408.8026 m -368.43287,-18.23877 321.45001,63.94864 M 131.39136,162.01445 -103.52292,390.56383 M 195.68137,174.80418 -39.232916,403.35356 M 259.97137,187.59391 25.057087,416.14329 M 324.26137,200.38364 89.347089,428.93302 M 388.55137,213.17336 153.63709,441.72274 M 452.84138,225.96309 217.92709,454.51247" + inkscape:transform-center-x="8.6535807" + inkscape:transform-center-y="-0.80865374" + inkscape:path-effect="#path-effect21" + transform="scale(0.5)" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.467675" + id="path01" + inkscape:path-effect="#path-effect19" + sodipodi:type="arc" + sodipodi:cx="146.65475" + sodipodi:cy="53.828335" + sodipodi:rx="46.767502" + sodipodi:ry="33.405357" + d="M 146.65475,87.233692 380.49226,-79.793095 M 99.887253,53.828335 333.72476,-113.19845 M 53.119751,20.422977 286.95726,-146.60381 M 6.3522491,-12.98238 240.18976,-180.00917 M -40.415253,-46.387737 193.42226,-213.41452 M -87.182755,-79.793095 146.65475,-246.81988 m 0,334.053572 L -87.182755,-79.793095 M 193.42226,53.828335 -40.415253,-113.19845 M 240.18976,20.422977 6.3522491,-146.60381 M 286.95726,-12.98238 53.119751,-180.00917 M 333.72476,-46.387737 99.887253,-213.41452 M 380.49226,-79.793095 146.65475,-246.81988" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ConstructGrid_mm_1_0_2.svg b/testfiles/lpe_tests/ConstructGrid_mm_1_0_2.svg new file mode 100644 index 0000000..8e3b735 --- /dev/null +++ b/testfiles/lpe_tests/ConstructGrid_mm_1_0_2.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + inkscape:test-threshold="0.2"> + <defs + id="defs2"> + <inkscape:path-effect + effect="construct_grid" + id="path-effect12" + is_visible="true" + lpeversion="1" + nr_x="5" + nr_y="5" /> + <inkscape:path-effect + effect="construct_grid" + id="path-effect16" + is_visible="true" + lpeversion="1" + nr_x="5" + nr_y="5" /> + </defs> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke:#ff8080;stroke-width:0.264583" + id="path02" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="186.84631" + sodipodi:cy="191.16818" + sodipodi:rx="46.695065" + sodipodi:ry="35.03508" + d="M 186.84631,226.20326 420.32164,51.027863 M 140.15125,191.16818 373.62657,15.992783 M 93.456184,156.1331 326.93151,-19.042297 M 46.76112,121.09802 280.23644,-54.077377 M 0.0660553,86.062943 233.54138,-89.112457 M -46.629009,51.027863 186.84631,-124.14754 m 0,350.3508 L -46.629009,51.027863 M 233.54138,191.16818 0.0660553,15.992783 M 280.23644,156.1331 46.76112,-19.042297 M 326.93151,121.09802 93.456184,-54.077377 M 373.62657,86.062943 140.15125,-89.112457 M 420.32164,51.027863 186.84631,-124.14754" /> + <path + sodipodi:type="star" + style="stroke:#ff8080;stroke-width:0.264583" + id="path01" + sodipodi:sides="5" + sodipodi:cx="36.039883" + sodipodi:cy="161.52631" + sodipodi:r1="36.572998" + sodipodi:r2="12.763976" + sodipodi:arg1="0.78714885" + sodipodi:arg2="0.59272991" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.8191462" + inkscape:transform-center-y="-2.9357597" + transform="matrix(1.6123889,0,0,1.6423718,27.88509,-262.05498)" + inkscape:path-effect="#path-effect16" + d="m 46.626564,168.65661 76.145096,93.87972 M 19.379065,194.08397 95.524162,287.96369 M -7.8684335,219.51132 68.276664,313.39104 M -35.115932,244.93868 41.029165,338.8184 M -62.363431,270.36604 13.781666,364.24575 M -89.61093,295.79339 -13.465833,389.67311 M 46.626564,168.65661 -89.61093,295.79339 M 61.855583,187.43256 -74.38191,314.56934 M 77.084603,206.2085 -59.152891,333.34528 M 92.313622,224.98444 -43.923872,352.12122 M 107.54264,243.76039 -28.694852,370.89717 M 122.77166,262.53633 -13.465833,389.67311" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ConstructGrid_px_1_0_2.svg b/testfiles/lpe_tests/ConstructGrid_px_1_0_2.svg new file mode 100644 index 0000000..1fba02f --- /dev/null +++ b/testfiles/lpe_tests/ConstructGrid_px_1_0_2.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + inkscape:test-threshold="0.2"> + <defs + id="defs2"> + <inkscape:path-effect + effect="construct_grid" + id="path-effect12" + is_visible="true" + lpeversion="1" + nr_x="5" + nr_y="5" /> + <inkscape:path-effect + effect="construct_grid" + id="path-effect16" + is_visible="true" + lpeversion="1" + nr_x="5" + nr_y="5" /> + </defs> + <path + style="fill:#ff0000;fill-rule:evenodd;stroke:#ff8080;stroke-width:0.264583" + id="path02" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="186.84631" + sodipodi:cy="191.16818" + sodipodi:rx="46.695065" + sodipodi:ry="35.03508" + d="M 186.84631,226.20326 420.32164,51.027863 M 140.15125,191.16818 373.62657,15.992783 M 93.456184,156.1331 326.93151,-19.042297 M 46.76112,121.09802 280.23644,-54.077377 M 0.0660553,86.062943 233.54138,-89.112457 M -46.629009,51.027863 186.84631,-124.14754 m 0,350.3508 L -46.629009,51.027863 M 233.54138,191.16818 0.0660553,15.992783 M 280.23644,156.1331 46.76112,-19.042297 M 326.93151,121.09802 93.456184,-54.077377 M 373.62657,86.062943 140.15125,-89.112457 M 420.32164,51.027863 186.84631,-124.14754" /> + <path + sodipodi:type="star" + style="stroke:#ff8080;stroke-width:0.264583" + id="path01" + sodipodi:sides="5" + sodipodi:cx="36.039883" + sodipodi:cy="161.52631" + sodipodi:r1="36.572998" + sodipodi:r2="12.763976" + sodipodi:arg1="0.78714885" + sodipodi:arg2="0.59272991" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="2.8191462" + inkscape:transform-center-y="-2.9357597" + transform="matrix(1.6123889,0,0,1.6423718,27.88509,-262.05498)" + inkscape:path-effect="#path-effect16" + d="m 46.626564,168.65661 76.145096,93.87972 M 19.379065,194.08397 95.524162,287.96369 M -7.8684335,219.51132 68.276664,313.39104 M -35.115932,244.93868 41.029165,338.8184 M -62.363431,270.36604 13.781666,364.24575 M -89.61093,295.79339 -13.465833,389.67311 M 46.626564,168.65661 -89.61093,295.79339 M 61.855583,187.43256 -74.38191,314.56934 M 77.084603,206.2085 -59.152891,333.34528 M 92.313622,224.98444 -43.923872,352.12122 M 107.54264,243.76039 -28.694852,370.89717 M 122.77166,262.53633 -13.465833,389.67311" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/DashedStroke_multi_mm_1_0_2.svg b/testfiles/lpe_tests/DashedStroke_multi_mm_1_0_2.svg new file mode 100644 index 0000000..a9448eb --- /dev/null +++ b/testfiles/lpe_tests/DashedStroke_multi_mm_1_0_2.svg @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect857" + is_visible="true" + lpeversion="1" + numberdashes="18" + holefactor="0.3" + splitsegments="false" + halfextreme="false" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect843" + is_visible="true" + lpeversion="1" + numberdashes="36" + holefactor="0" + splitsegments="false" + halfextreme="true" + unifysegment="false" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect839" + is_visible="true" + lpeversion="1" + numberdashes="3" + holefactor="0" + splitsegments="true" + halfextreme="true" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect835" + is_visible="true" + lpeversion="1" + numberdashes="6" + holefactor="0.2" + splitsegments="false" + halfextreme="true" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="805.48669" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path837" + inkscape:path-effect="#path-effect839" + sodipodi:type="arc" + sodipodi:cx="-1.1285975" + sodipodi:cy="34.011532" + sodipodi:rx="103.5296" + sodipodi:ry="107.97568" + d="m 100.50902,13.357511 c 1.24164,6.685203 1.89198,13.590402 1.89198,20.654021 0,7.063618 -0.65034,13.968818 -1.89198,20.654021 M 85.512765,93.139175 C 78.063745,104.98797 68.440429,115.21636 57.234256,123.2075 m -37.741504,16.63767 c -6.664067,1.40476 -13.5601538,2.14204 -20.6213495,2.14204 -7.0611958,0 -13.9572825,-0.73728 -20.6213495,-2.14204 M -59.491451,123.2075 c -11.206173,-7.99114 -20.82949,-18.21953 -28.278509,-30.068325 m -14.99625,-38.473622 c -1.24165,-6.685203 -1.89199,-13.590403 -1.89199,-20.654021 0,-7.063619 0.65034,-13.968818 1.89199,-20.654022 m 14.99625,-38.473622 c 7.44902,-11.848792 17.072336,-22.07718 28.278509,-30.068325 m 37.741504,-16.63767 c 6.664067,-1.404764 13.5601538,-2.142039 20.6213495,-2.142039 7.0611958,0 13.9572825,0.737275 20.6213495,2.142039 m 37.741504,16.63767 c 11.206173,7.991145 20.82949,18.219534 28.278509,30.068326 m 14.996255,38.473622 c 1.24164,6.685203 1.89198,13.590402 1.89198,20.654021" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path833" + inkscape:path-effect="#path-effect835" + sodipodi:type="arc" + sodipodi:cx="350.39111" + sodipodi:cy="64.910553" + sodipodi:rx="103.5296" + sodipodi:ry="107.97568" + d="m 449.07187,32.157331 c 3.14943,10.33037 4.84885,21.334813 4.84885,32.753222 0,11.418409 -1.69942,22.422853 -4.84885,32.753223 m -21.02456,38.657314 c -14.34537,16.95566 -33.7163,29.17673 -55.68201,34.12806 m -43.94837,0 c -21.96572,-4.95133 -41.33664,-17.1724 -55.68201,-34.12806 M 251.71036,97.663775 c -3.14943,-10.330369 -4.84885,-21.334813 -4.84885,-32.753222 0,-11.41841 1.69942,-22.422854 4.84885,-32.753224 m 21.02456,-38.6573175 c 14.34537,-16.9556565 33.71629,-29.1767235 55.68201,-34.1280535 m 43.94837,10e-7 c 21.96571,4.95133 41.33664,17.172397 55.68201,34.128054 m 21.02456,38.657318 c 3.14943,10.33037 4.84885,21.334813 4.84885,32.753222" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect841" + width="276.7677" + height="172.18361" + x="-132.48624" + y="219.57283" + inkscape:path-effect="#path-effect843" + d="m -132.48624,225.80827 v -6.23544 h 6.23544 m 12.47087,0 h 12.47087 m 12.470867,0 h 12.47087 m 12.47087,0 h 12.470869 m 12.47087,0 h 12.47087 m 12.47087,0 h 12.4708693 m 12.4708697,0 h 12.47087 m 12.470869,0 h 12.47087 m 12.47087,0 h 12.470869 m 12.47087,0 h 12.47087 m 12.470867,0 h 12.47087 m 12.47087,0 h 8.644 v 3.82687 m 0,12.47087 v 12.47087 m 0,12.47087 v 12.47087 m 0,12.47087 v 12.47087 m 0,12.47087 v 12.47087 m 0,12.47087 v 12.47087 m 0,12.47086 v 12.47087 m 0,12.47087 v 6.23544 h -6.23543 m -12.47087,0 h -12.47087 m -12.47087,0 H 88.16255 m -12.47087,0 H 63.220811 m -12.47087,0 h -12.47087 m -12.47087,0 H 13.337332 m -12.47086993,0 H -11.604408 m -12.470869,0 h -12.47087 m -12.47087,0 h -12.470869 m -12.47087,0 h -12.47087 m -12.47087,0 h -12.470874 m -12.47086,0 h -8.64401 v -3.82687 m 0,-12.47087 v -12.47087 m 0,-12.47087 v -12.47087 m 0,-12.47087 v -12.47087 m 0,-12.47087 v -12.47087 m 0,-12.47087 v -12.47087 m 0,-12.47087 v -12.47087 m 0,-12.47086 v -6.23544" + sodipodi:type="rect" /> + <g + id="g855" + inkscape:path-effect="#path-effect857"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path845" + cx="349.6864" + cy="333.73978" + rx="121.66125" + ry="84.106392" + d="m 467.00536,311.38993 c 2.83051,7.11688 4.34229,14.61131 4.34229,22.34985 0,7.73853 -1.51178,15.23295 -4.34229,22.34984 m -5.42852,10.72939 c -3.87694,6.25915 -8.82069,12.12738 -14.67316,17.49543 m -9.33803,7.5894 c -5.96562,4.30648 -12.58706,8.17528 -19.7534,11.5297 m -11.11249,4.62459 c -6.96302,2.5582 -14.32827,4.66242 -22.01314,6.25555 m -11.86776,2.01406 c -7.39641,0.98426 -15.03121,1.50544 -22.8388,1.51819 m -12.03156,-0.38617 c -7.80083,-0.51626 -15.38663,-1.54178 -22.68701,-3.02789 m -11.69739,-2.83999 c -7.5693,-2.1454 -14.7564,-4.80302 -21.47108,-7.91051 m -10.67931,-5.5507 c -6.85775,-3.98816 -13.06933,-8.49029 -18.51056,-13.42055 m -8.37053,-8.64187 c -5.09794,-6.03953 -9.13833,-12.55793 -11.94565,-19.43388 m -3.45733,-11.51317 c -0.72834,-3.72203 -1.10449,-7.52136 -1.10449,-11.38142 0,-3.86006 0.37615,-7.65939 1.10449,-11.38142 m 3.45733,-11.51317 c 2.80732,-6.87595 6.84771,-13.39436 11.94564,-19.43389 m 8.37054,-8.64187 c 5.44123,-4.93026 11.65281,-9.43239 18.51056,-13.42055 m 10.67931,-5.5507 c 6.71467,-3.10748 13.90177,-5.76511 21.47107,-7.9105 m 11.69739,-2.83999 c 7.30039,-1.48612 14.88618,-2.51163 22.68701,-3.02789 m 12.03157,-0.38618 c 7.80759,0.0128 15.44239,0.53394 22.8388,1.51819 m 11.86776,2.01406 c 7.68487,1.59313 15.05011,3.69735 22.01313,6.25555 m 11.1125,4.62459 c 7.16634,3.35442 13.78778,7.22322 19.75339,11.5297 m 9.33804,7.5894 c 5.85247,5.36805 10.79621,11.23628 14.67316,17.49543 m 5.42852,10.72939 c 2.83051,7.11688 4.34229,14.61131 4.34229,22.34984" /> + <path + id="path847" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 528.81304,260.03356 c 3.03202,6.97963 4.65504,14.34745 4.65504,21.96339 0,7.61593 -1.62302,14.98375 -4.65504,21.96338 m -5.73327,10.3918 c -4.0315,5.97289 -9.14501,11.56286 -15.1779,16.66347 m -9.50302,7.12727 c -6.01906,4.01255 -12.67822,7.61237 -19.86927,10.72862 m -11.08671,4.27387 c -6.92146,2.35637 -14.23006,4.29279 -21.84695,5.75765 m -11.73831,1.8485 c -7.30931,0.90268 -14.8481,1.38023 -22.55409,1.39192 m -11.87796,-0.35396 c -7.70471,-0.47334 -15.20187,-1.41389 -22.42469,-2.77792 m -11.59244,-2.61056 c -7.52435,-1.97747 -14.67931,-4.42971 -21.3783,-7.30007 m -10.70709,-5.15012 c -6.92823,-3.72607 -13.2204,-7.94025 -18.75379,-12.56221 m -8.6064,-8.18422 c -5.32339,-5.80098 -9.55687,-12.07922 -12.51505,-18.71341 m -3.69785,-11.27259 c -0.78491,-3.66676 -1.19075,-7.41307 -1.19075,-11.22142 0,-3.80836 0.40584,-7.55467 1.19075,-11.22143 m 3.69785,-11.27259 c 2.95818,-6.63419 7.19166,-12.91244 12.51505,-18.71341 m 8.60641,-8.18422 c 5.53338,-4.62196 11.82555,-8.83614 18.75378,-12.56221 m 10.70709,-5.15012 c 6.699,-2.87036 13.85395,-5.3226 21.37831,-7.30007 m 11.59244,-2.61056 c 7.22281,-1.36403 14.71998,-2.30458 22.42468,-2.77792 m 11.87796,-0.35396 c 7.706,0.0117 15.24478,0.48924 22.55409,1.39192 m 11.73831,1.8485 c 7.6169,1.46486 14.92549,3.40128 21.84696,5.75765 m 11.08671,4.27387 c 7.19105,3.11625 13.85021,6.71607 19.86926,10.72862 m 9.50302,7.12727 c 6.0329,5.10061 11.1464,10.69058 15.1779,16.66347 m 5.73327,10.3918 c 3.03202,6.97963 4.65504,14.34745 4.65504,21.96338" + inkscape:original-d="m 533.46808,281.99695 a 122.45444,80.146706 0 0 1 -122.45444,80.1467 122.45444,80.146706 0 0 1 -122.45444,-80.1467 122.45444,80.146706 0 0 1 122.45444,-80.14671 122.45444,80.146706 0 0 1 122.45444,80.14671 z" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path850" + sodipodi:sides="5" + sodipodi:cx="304.26404" + sodipodi:cy="345.39322" + sodipodi:r1="105.2653" + sodipodi:r2="52.632652" + sodipodi:arg1="-0.45896326" + sodipodi:arg2="0.16935527" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 374.07514,298.77112 24.56053,-0.0124 -14.92961,19.50197 m -7.84761,10.25103 -14.92961,19.50196 m -3.22586,11.04132 7.60142,23.35461 m 3.99562,12.27615 7.60143,23.35461 m -8.62485,-0.65804 -23.16097,-8.17246 m -12.17436,-4.29578 -21.08242,-7.43904 -1.78254,1.29647 m -10.44059,7.5936 -19.86259,14.44635 m -10.44059,7.5936 -14.00567,10.18654 0.18144,-7.23994 m 0.32345,-12.90597 0.61534,-24.55282 m 0.32345,-12.90597 0.30767,-12.27641 -9.93859,-7.21314 m -10.44826,-7.58304 -19.87718,-14.42628 m -10.44827,-7.58304 -5.86122,-4.2539 16.59962,-4.93732 m 12.37426,-3.68054 23.54127,-7.00202 m 12.37426,-3.68055 2.11268,-0.62838 6.89775,-21.26567 m 3.98321,-12.28018 7.57782,-23.36229 m 4.71661,-7.25083 13.93397,20.22534 m 7.32426,10.63127 13.93397,20.22533 m 10.73021,4.14481 24.56053,-0.0124 m 12.91002,-0.007 24.56053,-0.0124" + inkscape:transform-center-x="4.6938556" + inkscape:transform-center-y="-5.4826267" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/DashedStroke_multi_px_1_0_2.svg b/testfiles/lpe_tests/DashedStroke_multi_px_1_0_2.svg new file mode 100644 index 0000000..196b0f2 --- /dev/null +++ b/testfiles/lpe_tests/DashedStroke_multi_px_1_0_2.svg @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect857" + is_visible="true" + lpeversion="1" + numberdashes="18" + holefactor="0.3" + splitsegments="false" + halfextreme="false" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect843" + is_visible="true" + lpeversion="1" + numberdashes="36" + holefactor="0" + splitsegments="false" + halfextreme="true" + unifysegment="false" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect839" + is_visible="true" + lpeversion="1" + numberdashes="3" + holefactor="0" + splitsegments="true" + halfextreme="true" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + <inkscape:path-effect + effect="dashed_stroke" + id="path-effect835" + is_visible="true" + lpeversion="1" + numberdashes="6" + holefactor="0.2" + splitsegments="false" + halfextreme="true" + unifysegment="true" + message="Add <b>"Fill Between Many LPE"</b> to add fill." /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="805.48669" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:23.7009;stroke-miterlimit:4;stroke-dasharray:none" + id="path837" + inkscape:path-effect="#path-effect839" + sodipodi:type="arc" + sodipodi:cx="185.69373" + sodipodi:cy="188.79845" + sodipodi:rx="245.37454" + sodipodi:ry="255.91214" + d="m 426.58408,139.84654 c 2.94281,15.84454 4.48419,32.21049 4.48419,48.95191 0,16.74141 -1.54138,33.10736 -4.48419,48.9519 m -35.54247,91.18597 c -17.65485,28.08271 -40.46299,52.32492 -67.02263,71.26466 m -89.45079,39.43278 c -15.79444,3.32942 -32.13879,5.07683 -48.87446,5.07683 -16.73568,0 -33.08003,-1.74741 -48.87447,-5.07683 M 47.368473,400.20098 C 20.808827,381.26124 -1.9993063,357.01903 -19.654157,328.93632 M -55.19663,237.75035 c -2.942813,-15.84454 -4.484187,-32.21049 -4.484187,-48.9519 0,-16.74142 1.541374,-33.10737 4.484187,-48.95191 m 35.542474,-91.185967 c 17.6548502,-28.08271 40.462984,-52.3249186 67.02263,-71.264655 m 89.450786,-39.432785 c 15.79444,-3.329419 32.13879,-5.076826 48.87447,-5.076826 16.73567,0 33.08002,1.747407 48.87446,5.076826 m 89.45079,39.432785 c 26.55964,18.9397369 49.36778,43.181945 67.02263,71.264656 m 35.54247,91.185966 c 2.94281,15.84454 4.48419,32.21049 4.48419,48.95191" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:23.7009;stroke-miterlimit:4;stroke-dasharray:none" + id="path833" + inkscape:path-effect="#path-effect835" + sodipodi:type="arc" + sodipodi:cx="1018.8273" + sodipodi:cy="262.03192" + sodipodi:rx="245.37454" + sodipodi:ry="255.91214" + d="m 1252.7096,184.40382 c 7.4644,24.48391 11.4922,50.56544 11.4922,77.6281 0,27.06267 -4.0278,53.1442 -11.4922,77.62811 m -49.8301,91.62135 c -33.9998,40.18644 -79.9107,69.15147 -131.9714,80.88657 m -104.16164,0 c -52.06074,-11.7351 -97.97158,-40.70013 -131.97141,-80.88658 m -49.83011,-91.62134 c -7.46444,-24.48392 -11.49221,-50.56544 -11.49221,-77.62811 0,-27.06266 4.02777,-53.14419 11.49221,-77.62811 M 834.77505,92.782467 C 868.77488,52.596024 914.68573,23.630988 966.74646,11.895889 m 104.16164,10e-7 c 52.0607,11.7351 97.9716,40.700137 131.9714,80.88658 m 49.8301,91.62135 c 7.4644,24.48391 11.4922,50.56544 11.4922,77.6281" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:23.7009;stroke-miterlimit:4;stroke-dasharray:none" + id="rect841" + width="655.96454" + height="408.09076" + x="-125.63578" + y="628.59552" + inkscape:path-effect="#path-effect843" + d="m -125.63578,643.37407 v -14.77855 l 14.77855,0 m 29.557087,0 29.557092,0 m 29.557091,0 29.5570919,0 m 29.5570921,0 h 29.557091 m 29.557092,0 H 125.5995 m 29.55709,0 h 29.55709 m 29.55709,0 h 29.55709 m 29.5571,0 h 29.55709 m 29.55709,0 h 29.55709 m 29.55709,0 h 29.55709 m 29.5571,0 h 29.55709 m 29.55709,0 h 20.48707 v 9.07002 m 0,29.55709 v 29.5571 m 0,29.55709 v 29.55709 m 0,29.55709 v 29.55709 m 0,29.55709 v 29.5571 m 0,29.55709 v 29.55709 m 0,29.55709 v 29.55709 m 0,29.55706 v 14.7786 h -14.77855 m -29.55709,0 h -29.55709 m -29.55709,0 h -29.55709 m -29.5571,0 h -29.55709 m -29.55709,0 h -29.55709 m -29.55709,0 H 219.9793 m -29.5571,0 h -29.55709 m -29.55709,0 h -29.55709 m -29.557092,0 H 42.636747 m -29.557092,0 h -29.557091 m -29.557092,0 H -75.59162 m -29.55709,0 h -20.48707 v -9.07 m 0,-29.55713 v -29.5571 m 0,-29.55709 v -29.55709 m 0,-29.55709 v -29.55709 m 0,-29.55709 v -29.5571 m 0,-29.55709 v -29.55709 m 0,-29.55709 v -29.55709 m 0,-29.55709 v -14.77855" + sodipodi:type="rect" /> + <g + id="g855" + inkscape:path-effect="#path-effect857" + transform="matrix(2.3700906,0,0,2.3700906,188.36861,108.18804)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path845" + cx="349.6864" + cy="333.73978" + rx="121.66125" + ry="84.106392" /> + <path + id="path847" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 528.81304,260.03356 c 3.03202,6.97963 4.65504,14.34745 4.65504,21.96339 0,7.61593 -1.62302,14.98375 -4.65504,21.96338 m -5.73327,10.3918 c -4.0315,5.97289 -9.14501,11.56286 -15.1779,16.66347 m -9.50302,7.12727 c -6.01906,4.01255 -12.67822,7.61237 -19.86927,10.72862 m -11.08671,4.27387 c -6.92146,2.35637 -14.23006,4.29279 -21.84695,5.75765 m -11.73831,1.8485 c -7.30931,0.90268 -14.8481,1.38023 -22.55409,1.39192 m -11.87796,-0.35396 c -7.70471,-0.47334 -15.20187,-1.41389 -22.42469,-2.77792 m -11.59244,-2.61056 c -7.52435,-1.97747 -14.67931,-4.42971 -21.3783,-7.30007 m -10.70709,-5.15012 c -6.92823,-3.72607 -13.2204,-7.94025 -18.75379,-12.56221 m -8.6064,-8.18422 c -5.32339,-5.80098 -9.55687,-12.07922 -12.51505,-18.71341 m -3.69785,-11.27259 c -0.78491,-3.66676 -1.19075,-7.41307 -1.19075,-11.22142 0,-3.80836 0.40584,-7.55467 1.19075,-11.22143 m 3.69785,-11.27259 c 2.95818,-6.63419 7.19166,-12.91244 12.51505,-18.71341 m 8.60641,-8.18422 c 5.53338,-4.62196 11.82555,-8.83614 18.75378,-12.56221 m 10.70709,-5.15012 c 6.699,-2.87036 13.85395,-5.3226 21.37831,-7.30007 m 11.59244,-2.61056 c 7.22281,-1.36403 14.71998,-2.30458 22.42468,-2.77792 m 11.87796,-0.35396 c 7.706,0.0117 15.24478,0.48924 22.55409,1.39192 m 11.73831,1.8485 c 7.6169,1.46486 14.92549,3.40128 21.84696,5.75765 m 11.08671,4.27387 c 7.19105,3.11625 13.85021,6.71607 19.86926,10.72862 m 9.50302,7.12727 c 6.0329,5.10061 11.1464,10.69058 15.1779,16.66347 m 5.73327,10.3918 c 3.03202,6.97963 4.65504,14.34745 4.65504,21.96338" + inkscape:original-d="m 533.46808,281.99695 a 122.45444,80.146706 0 0 1 -122.45444,80.1467 122.45444,80.146706 0 0 1 -122.45444,-80.1467 122.45444,80.146706 0 0 1 122.45444,-80.14671 122.45444,80.146706 0 0 1 122.45444,80.14671 z" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path850" + sodipodi:sides="5" + sodipodi:cx="304.26404" + sodipodi:cy="345.39322" + sodipodi:r1="105.2653" + sodipodi:r2="52.632652" + sodipodi:arg1="-0.45896326" + sodipodi:arg2="0.16935527" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 374.07514,298.77112 24.56053,-0.0124 -14.92961,19.50197 m -7.84761,10.25103 -14.92961,19.50196 m -3.22586,11.04132 7.60142,23.35461 m 3.99562,12.27615 7.60143,23.35461 m -8.62485,-0.65804 -23.16097,-8.17246 m -12.17436,-4.29578 -21.08242,-7.43904 -1.78254,1.29647 m -10.44059,7.5936 -19.86259,14.44635 m -10.44059,7.5936 -14.00567,10.18654 0.18144,-7.23994 m 0.32345,-12.90597 0.61534,-24.55282 m 0.32345,-12.90597 0.30767,-12.27641 -9.93859,-7.21314 m -10.44826,-7.58304 -19.87718,-14.42628 m -10.44827,-7.58304 -5.86122,-4.2539 16.59962,-4.93732 m 12.37426,-3.68054 23.54127,-7.00202 m 12.37426,-3.68055 2.11268,-0.62838 6.89775,-21.26567 m 3.98321,-12.28018 7.57782,-23.36229 m 4.71661,-7.25083 13.93397,20.22534 m 7.32426,10.63127 13.93397,20.22533 m 10.73021,4.14481 24.56053,-0.0124 m 12.91002,-0.007 24.56053,-0.0124" + inkscape:transform-center-x="4.6938556" + inkscape:transform-center-y="-5.4826267" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ellipse5pts_ellipse_mm_1_0_2.svg b/testfiles/lpe_tests/Ellipse5pts_ellipse_mm_1_0_2.svg new file mode 100644 index 0000000..1f26c00 --- /dev/null +++ b/testfiles/lpe_tests/Ellipse5pts_ellipse_mm_1_0_2.svg @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="ellipse_5pts" + id="path-effect26" + is_visible="true" + lpeversion="1" /> + </defs> + <path + id="rect01" + style="fill:#0000ff;fill-rule:evenodd" + d="m 202.66249,139.65753 c -12.45277,22.43137 -56.48142,21.7773 -98.34073,-1.4609 C 62.46245,114.95842 38.623746,77.935918 51.076525,55.504549 c 12.452778,-22.431369 56.481425,-21.7773 98.340735,1.460903 41.85931,23.238204 65.69801,60.260708 53.24523,82.692078" + sodipodi:nodetypes="ccccccc" + inkscape:path-effect="#path-effect26" + inkscape:original-d="m 50.861622,55.90004 52.335718,-15.51685 53.60076,20.939902 36.58352,32.89488 -53.03798,58.444098 H 50.861622 Z" + transform="scale(0.5)" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ellipse5pts_ellipse_px_1_0_2.svg b/testfiles/lpe_tests/Ellipse5pts_ellipse_px_1_0_2.svg new file mode 100644 index 0000000..dda5193 --- /dev/null +++ b/testfiles/lpe_tests/Ellipse5pts_ellipse_px_1_0_2.svg @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="ellipse_5pts" + id="path-effect26" + is_visible="true" + lpeversion="1" /> + </defs> + <path + id="rect01" + style="fill:#0000ff;fill-rule:evenodd" + d="m 202.66249,139.65753 c -12.45277,22.43137 -56.48142,21.7773 -98.34073,-1.4609 C 62.46245,114.95842 38.623746,77.935918 51.076525,55.504549 c 12.452778,-22.431369 56.481425,-21.7773 98.340735,1.460903 41.85931,23.238204 65.69801,60.260708 53.24523,82.692078" + sodipodi:nodetypes="ccccccc" + inkscape:path-effect="#path-effect26" + inkscape:original-d="m 50.861622,55.90004 52.335718,-15.51685 53.60076,20.939902 36.58352,32.89488 -53.03798,58.444098 H 50.861622 Z" /> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ellipse5pts_path_0_92_5.svg b/testfiles/lpe_tests/Ellipse5pts_path_0_92_5.svg new file mode 100644 index 0000000..58eef8f --- /dev/null +++ b/testfiles/lpe_tests/Ellipse5pts_path_0_92_5.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg33" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs27"> + <inkscape:path-effect + effect="ellipse_5pts" + id="path-effect38" + is_visible="true" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="M 119.90087,132.05124 C 101.87877,180.1776 63.968484,210.46627 35.225875,199.7029 6.4832664,188.93952 -2.2074215,141.19995 15.81468,93.073596 33.836782,44.947238 71.747071,14.65856 100.48968,25.421939 c 28.74261,10.763379 37.4333,58.502943 19.41119,106.629301" + id="rect01" + inkscape:path-effect="#path-effect38" + inkscape:original-d="M 43.089287,47.535713 77.107143,24.857142 122.46429,47.535713 v 77.107137 l -111.880957,46.1131 32.505954,-46.1131 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/EllipseFromPoints_multi_mm_1_0_2.svg b/testfiles/lpe_tests/EllipseFromPoints_multi_mm_1_0_2.svg new file mode 100644 index 0000000..526d3c2 --- /dev/null +++ b/testfiles/lpe_tests/EllipseFromPoints_multi_mm_1_0_2.svg @@ -0,0 +1,496 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect911" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect907" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect903" + is_visible="true" + lpeversion="1" + method="steiner_ellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect899" + is_visible="true" + lpeversion="1" + method="steiner_ellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect895" + is_visible="true" + lpeversion="1" + method="perspective_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect891" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect887" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect883" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect879" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect875" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect871" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect867" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect863" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect859" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect855" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect851" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect847" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect843" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect839" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="false" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect835" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="20" + draw_ori_path="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.440651,88.122208 C 3.0914854,137.00933 -51.465491,158.32989 -90.415766,135.74301 -129.36604,113.15612 -137.95994,55.214992 -109.61077,6.3278678 -81.261609,-42.559257 -26.704633,-63.879815 12.245642,-41.292931 51.195918,-18.706048 59.789816,39.235084 31.440651,88.122208 Z" + id="path837" + inkscape:path-effect="#path-effect839" + inkscape:original-d="M -65.094956,-38.387196 46.433585,9.7343587 -18.506114,135.6727 -116.59615,107.99506 c -89.77408,45.20045 5.36971,-98.7968253 5.36971,-98.7968253" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 142.11139,-59.517344 c 40.61848,-22.77049 84.46481,-12.080215 103.75789,25.297448 C 265.16236,3.1577661 254.27059,56.31238 220.09502,91.565089 185.91944,126.8178 138.43581,133.87843 107.72984,108.27337 77.023874,82.668297 72.058552,31.871572 95.979913,-11.931914" + id="path841" + inkscape:path-effect="#path-effect843" + inkscape:original-d="m 142.11139,-59.517344 111.52854,48.12156 -64.9397,125.938344 -98.090037,-27.677644 c -89.77406954,45.200454 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 295.50225,76.702832 c 11.07201,-20.274457 27.3312,-37.046102 46.13148,-47.58543" + id="path845" + inkscape:path-effect="#path-effect847" + inkscape:original-d="m 341.63373,29.117402 111.52854,48.12156 -64.9397,125.938338 -98.09004,-27.67764 c -89.77407,45.20045 5.36972,-98.796828 5.36972,-98.796828" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 192.63883,255.31644 c 11.07201,-20.27446 27.33121,-37.0461 46.13148,-47.58543 l 26.00989,85.61224 z" + id="path849" + inkscape:path-effect="#path-effect851" + inkscape:original-d="m 238.77031,207.73101 111.52854,48.12156 -64.9397,125.93834 -98.09004,-27.67764 c -89.774069,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 40.327302,322.76341 c 11.07201,-20.27446 27.331205,-37.0461 46.13148,-47.58543 l 26.009898,85.61224 z M 93.273675,231.37507 234.3251,313.16941 131.66368,490.20536 -9.3877429,408.41103 Z" + id="path853" + inkscape:path-effect="#path-effect855" + inkscape:original-d="m 86.458782,275.17798 111.528548,48.12156 -64.9397,125.93834 -98.090048,-27.67764 c -89.774073,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 417.53,178.8636 c 11.07201,-20.27446 27.3312,-37.0461 46.13148,-47.58543 l 26.0099,85.61224 z M 470.47638,87.475257 611.5278,169.2696 508.86638,346.30556 367.81495,264.51121 Z m -51.33071,88.517983 141.05142,81.79434 m -19.195,-129.41515 -102.66142,177.03595" + id="path857" + inkscape:path-effect="#path-effect859" + inkscape:original-d="m 463.66148,131.27817 111.52855,48.12156 -64.9397,125.93834 -98.09005,-27.67764 C 322.38621,322.86088 417.53,178.8636 417.53,178.8636" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 449.91437,-119.58745 c 11.46359,-20.30392 30.25851,-35.45469 52.53301,-42.34741 l 26.99947,87.251468 z m -11.80092,-46.42934 h 182.6668 V 16.650008 h -182.6668 z m 0,91.333398 h 182.6668 m -91.3334,-91.333398 V 16.650008" + id="path861" + inkscape:path-effect="#path-effect863" + inkscape:original-d="m 501.83856,-163.90232 111.52855,48.12157 -64.9397,125.938335 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796825 5.36972,-98.796825" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 323.62449,49.798015 c 41.86084,-12.953599 87.02246,5.647813 107.61698,44.325867 20.59452,38.678058 10.81771,86.531978 -23.29745,114.032568 -34.11515,27.50058 -82.95387,26.89724 -116.37925,-1.43773 C 258.1394,178.38376 249.54775,130.30291 271.09148,92.145425 M 259.29056,45.716083 h 182.6668 V 228.38288 h -182.6668 z m 0,91.333397 h 182.6668 M 350.62396,45.716083 V 228.38288" + id="path865" + inkscape:path-effect="#path-effect867" + inkscape:original-d="m 323.01567,47.830556 111.52855,48.121566 -64.9397,125.938338 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796828 5.36972,-98.796828" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 234.3251,313.16941 c 11.46359,-20.30392 30.2585,-35.45469 52.53301,-42.34741 m -64.33393,-4.08193 h 182.6668 v 182.66679 h -182.6668 z m 0,91.3334 h 182.6668 m -91.3334,-91.3334 v 182.66679" + id="path869" + inkscape:path-effect="#path-effect871" + inkscape:original-d="m 286.24929,268.85454 111.52855,48.12157 -64.9397,125.93833 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.79682 5.36972,-98.79682" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 267.24757,-119.58745 c 11.46359,-20.30392 30.25851,-35.45469 52.53301,-42.34741 m -64.33393,87.251469 h 182.6668 m -91.3334,-91.333399 v 182.6668" + id="path873" + inkscape:path-effect="#path-effect875" + inkscape:original-d="m 319.17176,-163.90232 111.52855,48.12157 -64.9397,125.938337 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796827 5.36972,-98.796827" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 70.685564,-140.77512 c 41.860846,-12.9536 87.022456,5.64781 107.616976,44.325867 20.59452,38.678054 10.81771,86.5319798 -23.29745,114.032563 C 120.88994,45.083892 72.051222,44.480548 38.625847,16.145583 5.2004714,-12.189383 -3.3911751,-60.270229 18.152553,-98.427715" + id="path877" + inkscape:path-effect="#path-effect879" + inkscape:original-d="M 70.076745,-142.74258 181.60529,-94.621018 116.6656,31.317321 18.575545,3.6396808 c -89.774074,45.2004502 5.36972,-98.7968288 5.36972,-98.7968288" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -107.60577,89.217012 c 17.932603,-34.776914 57.436364,-52.196794 88.234121,-38.90839 30.797758,13.288404 41.227027,52.253038 23.294425,87.029958 -17.932602,34.77691 -57.436363,52.19679 -88.23412,38.90839 -30.797756,-13.28841 -41.227026,-52.25304 -23.294426,-87.029958 z" + id="path881" + inkscape:path-effect="#path-effect883" + inkscape:original-d="M -75.135921,26.247839 36.392624,74.369405 -28.547072,200.30775 -126.63712,172.63011 c -89.77407,45.20045 5.36972,-98.796835 5.36972,-98.796835" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 63.523373,176.61266 c 17.9326,-34.77691 57.436357,-52.19679 88.234117,-38.90839 30.79776,13.2884 41.22703,52.25304 23.29442,87.02995 -17.9326,34.77691 -57.43635,52.19679 -88.234111,38.90839 C 56.020043,250.35421 45.590773,211.38957 63.523373,176.61266 Z M 142.58207,287.70339 31.053528,239.58183 95.993218,113.64349 207.52176,161.76505 Z" + id="path885" + inkscape:path-effect="#path-effect887" + inkscape:original-d="M 95.993218,113.64349 207.52176,161.76505 142.58207,287.70339 44.492015,260.02575 c -89.77407,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -57.87853,180.14972 111.528543,48.12156 -64.93969,125.93834 -98.090053,-27.67764 c -89.77407,45.20045 5.36972,-98.79683 5.36972,-98.79683 m 8.490643,27.84089 c 11.726639,-36.67351 48.514605,-61.20814 82.168221,-54.79963 33.653617,6.40851 51.428945,41.33338 39.702306,78.00689 -11.726639,36.67351 -48.514605,61.20814 -82.168221,54.79963 -33.653617,-6.40851 -51.428949,-41.33338 -39.702306,-78.00689 z M 5.1182019,345.18656 -116.75232,321.9793 -74.286409,189.17278 47.584118,212.38004 Z M 26.35116,278.7833 -95.519367,255.57604 m 39.702306,78.00689 42.465915,-132.80652" + id="path889" + inkscape:path-effect="#path-effect891" + inkscape:original-d="m -57.87853,180.14972 111.528543,48.12156 -64.93969,125.93834 -98.090053,-27.67764 c -89.77407,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -140.22675,-51.952078 -7.3055,147.370624 -64.93969,125.938344 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796834 5.36972,-98.796834 m 148.29936,9.664414 c -18.70207,57.29733 -52.7282,106.39295 -75.99948,109.65816 -23.27129,3.2652 -26.97537,-40.53648 -8.2733,-97.8338 18.70207,-57.297326 52.7282,-106.3929552 75.99948,-109.6581603 23.27129,-3.2652052 26.97537,40.5364803 8.2733,97.8338003 z m -84.27278,11.82436 84.27278,-11.82436 m -8.2733,-97.8338003 -67.72618,207.4919603" + id="path893" + inkscape:path-effect="#path-effect895" + inkscape:original-d="m -140.22675,-51.952078 -7.3055,147.370624 -64.93969,125.938344 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796834 5.36972,-98.796834" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 143.03043,12.215175 -7.3055,147.370625 -64.939693,125.93833 -98.09005,-27.67764 c -89.774077,45.20045 5.36972,-98.79682 5.36972,-98.79682 M 79.571025,308.40156 C 64.505508,322.22879 68.832218,263.61236 89.235002,177.4781 109.63779,91.34385 138.39052,10.309063 153.45604,-3.5181598 168.52156,-17.345382 164.19485,41.271047 143.79206,127.4053 123.38928,213.53955 94.636541,294.57434 79.571025,308.40156 Z" + id="path897" + inkscape:path-effect="#path-effect899" + inkscape:original-d="m 143.03043,12.215175 -7.3055,147.370625 -64.939693,125.93833 -98.09005,-27.67764 c -89.774077,45.20045 5.36972,-98.79682 5.36972,-98.79682" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 557.25507,-103.27761 -7.3055,147.370624 -64.93969,125.938336 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796826 5.36972,-98.796826 M 493.79567,192.90878 c -15.06552,13.82723 -10.73881,-44.78921 9.66397,-130.92346 20.40279,-86.134254 49.15552,-167.16904 64.22104,-180.99627 15.06552,-13.82722 10.73881,44.789211 -9.66398,130.923466 C 537.61392,98.04677 508.86118,179.08156 493.79567,192.90878 Z m 101.16354,-336.95613 -73.88501,311.91973 -54.55706,50.0728 73.88501,-311.919724 z" + id="path901" + inkscape:path-effect="#path-effect903" + inkscape:original-d="m 557.25507,-103.27761 -7.3055,147.370624 -64.93969,125.938336 -98.09005,-27.67764 c -89.77407,45.20045 5.36972,-98.796826 5.36972,-98.796826" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 311.0155,-65.577951 303.71,81.79267 238.77031,207.73101 140.68026,180.05337 c -89.774071,45.20045 5.36972,-98.79683 5.36972,-98.79683 m 119.97737,71.37197 c -7.53276,6.91361 -5.3694,-22.39461 4.83199,-65.461732 10.20139,-43.067128 24.57776,-83.5845223 32.11052,-90.4981339 7.53275,-6.9136121 5.3694,22.3946039 -4.83199,65.4617309 C 287.93648,105.1975 273.56011,145.7149 266.02735,152.62851 Z M 316.60912,-15.849557 279.66661,140.11031 252.38809,165.14671 289.33059,9.1868453 Z M 302.96986,-3.3313559 266.02735,152.62851 m 32.11052,-90.498135 -27.27853,25.036403" + id="path905" + inkscape:path-effect="#path-effect907" + inkscape:original-d="M 311.0155,-65.577951 303.71,81.79267 238.77031,207.73101 140.68026,180.05337 c -89.774071,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 69.227114,-222.67346 61.921614,-75.302847 -3.0180762,50.635497 -101.10813,22.957853 c -89.77407,45.200454 5.369723,-98.79683 5.369723,-98.79683 m 119.97737,71.3719714 c -7.532757,6.9136115 -5.369401,-22.3946034 4.831991,-65.4617304 10.201391,-43.067124 24.57776,-83.584524 32.110517,-90.498134 7.532757,-6.91361 5.369402,22.39461 -4.83199,65.461732 -10.201392,43.067127 -24.57776,83.584521 -32.110518,90.4981324 z M 61.181471,-160.42687 24.238963,-4.4670056 M 56.349481,-94.965138 29.070954,-69.928736" + id="path909" + inkscape:path-effect="#path-effect911" + inkscape:original-d="M 69.227114,-222.67346 61.921614,-75.302847 -3.0180762,50.635497 -101.10813,22.957853 c -89.77407,45.200454 5.369723,-98.79683 5.369723,-98.79683" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.241154px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 95.63474,228.45673 c -9.035866,13.56567 -9.148105,-9.04339 -0.250692,-50.49876 8.897412,-41.45538 23.435212,-86.058748 32.471072,-99.624424 9.03587,-13.565677 9.14811,9.043389 0.2507,50.498764 -8.89742,41.45537 -23.43521,86.05874 -32.47108,99.62442 z" + id="path833" + inkscape:path-effect="#path-effect835" + inkscape:original-d="m 138.26183,13.168611 -7.3055,147.370619 -64.939694,125.93834 -98.090051,-27.67764 c -89.774075,45.20045 5.36972,-98.79683 5.36972,-98.79683" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/EllipseFromPoints_multi_px_1_0_2.svg b/testfiles/lpe_tests/EllipseFromPoints_multi_px_1_0_2.svg new file mode 100644 index 0000000..82baf46 --- /dev/null +++ b/testfiles/lpe_tests/EllipseFromPoints_multi_px_1_0_2.svg @@ -0,0 +1,497 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect911" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect907" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect903" + is_visible="true" + lpeversion="1" + method="steiner_ellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect899" + is_visible="true" + lpeversion="1" + method="steiner_ellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect895" + is_visible="true" + lpeversion="1" + method="perspective_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect891" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="11" + draw_ori_path="true" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect887" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect883" + is_visible="true" + lpeversion="1" + method="iso_circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect879" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect875" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect871" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect867" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect863" + is_visible="true" + lpeversion="1" + method="circle" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect859" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="true" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect855" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="true" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect851" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="true" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect847" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="true" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect843" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect839" + is_visible="true" + lpeversion="1" + method="auto" + gen_arc="false" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="0" + draw_ori_path="false" /> + <inkscape:path-effect + effect="pts2ellipse" + id="path-effect835" + is_visible="true" + lpeversion="1" + method="steiner_inellipse" + gen_arc="true" + arc_other="false" + slice_arc="false" + gen_isometric_frame="false" + draw_axes="false" + gen_perspective_frame="false" + draw_perspective_axes="false" + rot_axes="20" + draw_ori_path="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 298.75542,501.38066 C 276.67931,640.9947 197.08963,744.41913 120.98689,732.38558 44.884144,720.35203 1.086899,597.41737 23.163004,457.80333 45.239108,318.18929 124.82879,214.76486 200.93153,226.79841 c 76.10275,12.03354 119.89999,134.96821 97.82389,274.58225 z" + id="path837" + inkscape:path-effect="#path-effect839" + inkscape:original-d="M 118.17688,256.8181 301.62441,382.03649 194.80846,709.74403 33.46523,637.7233 c -147.66474,117.61731 8.832358,-257.08187 8.832358,-257.08187" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 458.99989,201.83477 c 66.81123,-59.25171 138.9318,-31.43426 170.66599,65.82716 31.73419,97.26142 13.81888,235.57647 -42.39476,327.3085 -56.21364,91.73203 -134.317,110.1047 -184.82366,43.47707 C 351.9408,571.81986 343.7736,439.64033 383.12061,325.6581" + id="path841" + inkscape:path-effect="#path-effect843" + inkscape:original-d="M 458.99989,201.83477 642.44742,327.05318 535.63146,654.76073 374.28823,582.73999 C 226.62351,700.3573 383.12061,325.6581 383.12061,325.6581" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 711.30459,556.29696 c 18.21178,-52.75671 44.95568,-96.39866 75.87928,-123.82333" + id="path845" + inkscape:path-effect="#path-effect847" + inkscape:original-d="M 787.18387,432.47363 970.6314,557.69203 863.81545,885.39957 702.47221,813.37884 c -147.66473,117.6173 8.83238,-257.08188 8.83238,-257.08188" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 542.10986,1021.0722 c 18.21178,-52.7567 44.95569,-96.39864 75.87929,-123.8233 l 42.78232,222.7739 z" + id="path849" + inkscape:path-effect="#path-effect851" + inkscape:original-d="m 617.98915,897.2489 183.44753,125.2184 -106.81595,327.7075 -161.34324,-72.0207 c -147.66473,117.6173 8.83237,-257.0819 8.83237,-257.0819" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 291.5805,1196.5778 c 18.21178,-52.7567 44.95569,-96.3986 75.87929,-123.8233 l 42.78233,222.7739 z m 20.83774,-175.6317 275.59243,43.5774 -79.94468,505.5871 -275.59242,-43.5773 z" + id="path853" + inkscape:path-effect="#path-effect855" + inkscape:original-d="m 367.45979,1072.7545 183.44754,125.2184 -106.81595,327.7075 -161.34325,-72.0207 c -147.66473,117.6173 8.83237,-257.0819 8.83237,-257.0819" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 912.02172,822.13224 c 18.21178,-52.75671 44.95569,-96.39866 75.87929,-123.82333 l 42.78239,222.7739 z m 20.83774,-175.63171 275.59244,43.57734 -79.9446,505.58723 -275.5925,-43.5773 z m -39.97233,252.79361 275.59247,43.57735 m -97.8239,-274.58229 -79.94466,505.5872" + id="path857" + inkscape:path-effect="#path-effect859" + inkscape:original-d="m 987.90101,698.30891 183.44759,125.2184 -106.816,327.70759 -161.34325,-72.0208 c -147.66473,117.6173 8.83237,-257.08186 8.83237,-257.08186" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 948.22648,29.879304 c 29.02447,-31.9500944 67.55452,-53.719087 109.89982,-62.091999 l 39.0285,197.383115 z M 895.95009,-36.034241 H 1298.3594 V 366.37508 H 895.95009 Z m 0,201.204661 H 1298.3594 M 1097.1548,-36.034241 V 366.37508" + id="path861" + inkscape:path-effect="#path-effect863" + inkscape:original-d="M 1050.6965,-69.788181 1234.1441,55.430251 1127.3281,383.13778 965.98485,311.11705 c -147.66472,117.6173 8.83238,-257.081878 8.83238,-257.081878" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 763.98977,518.74312 c 96.90797,-19.16156 193.39244,34.86113 227.70518,127.49458 34.31275,92.63345 -3.69673,196.4746 -89.70306,245.06709 -86.00634,48.59249 -194.56694,27.56156 -256.20509,-49.63338 -61.63814,-77.19495 -58.11988,-187.71791 8.30317,-260.8363 m -52.2764,-65.91354 H 1004.2229 V 917.33088 H 601.81357 Z m 0,201.20466 H 1004.2229 M 803.01823,514.92157 v 402.40931" + id="path865" + inkscape:path-effect="#path-effect867" + inkscape:original-d="M 756.55999,481.16763 940.00754,606.38605 833.19158,934.09359 671.84833,862.07285 C 524.1836,979.69016 680.6807,604.99097 680.6807,604.99097" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 593.61486,1155.9675 c 29.02447,-31.95 67.55451,-53.719 109.89979,-62.0919 m -162.1762,-3.8216 h 402.40928 v 402.4093 H 541.33845 Z m 0,201.2047 H 943.74773 M 742.54309,1090.054 v 402.4093" + id="path869" + inkscape:path-effect="#path-effect871" + inkscape:original-d="m 696.08487,1056.3001 183.44755,125.2184 -106.81596,327.7075 -161.34325,-72.0207 c -147.66473,117.6173 8.83237,-257.0819 8.83237,-257.0819" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 647.76731,29.879307 c 29.02447,-31.950096 67.55453,-53.719088 109.89981,-62.091997 m -162.1762,197.38311 h 402.4093 M 796.69557,-36.034232 V 366.37507" + id="path873" + inkscape:path-effect="#path-effect875" + inkscape:original-d="M 750.23734,-69.788181 933.68489,55.430251 826.86893,383.13778 665.52568,311.11705 C 517.86095,428.73436 674.35805,54.035172 674.35805,54.035172" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 347.94361,22.847636 c 96.90797,-19.1615565 193.39243,34.861139 227.70517,127.494594 34.31274,92.63345 -3.69673,196.47459 -89.70307,245.06708 -86.00634,48.59248 -194.56694,27.56155 -256.20508,-49.63339 -61.63814,-77.19495 -58.11987,-187.71791 8.30318,-260.8363" + id="path877" + inkscape:path-effect="#path-effect879" + inkscape:original-d="M 340.51383,-14.727852 523.96136,110.49056 417.14542,438.1981 255.80216,366.17736 c -147.66473,117.61731 8.83238,-257.08188 8.83238,-257.08188" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 48.253045,588.86044 C 77.749455,498.3665 142.72715,453.03776 193.38479,487.61587 244.04243,522.19398 261.197,623.58492 231.70058,714.07886 202.20417,804.5728 137.22648,849.90154 86.56884,815.32343 35.911201,780.74532 18.756635,679.35438 48.253045,588.86044 Z" + id="path881" + inkscape:path-effect="#path-effect883" + inkscape:original-d="M 101.66102,425.00666 285.10856,550.22508 178.29261,877.93264 16.949357,805.9119 C -130.71537,923.52921 25.781732,548.83 25.781732,548.83" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 329.73452,816.27501 c 29.49641,-90.49394 94.4741,-135.82268 145.13174,-101.24457 50.65764,34.5781 67.81221,135.96904 38.3158,226.46298 -29.49641,90.49398 -94.4741,135.82268 -145.13174,101.24458 -50.65764,-34.5781 -67.81221,-135.96905 -38.3158,-226.46299 z M 459.77409,1105.3472 276.32655,980.12879 383.14249,652.42123 566.59003,777.63964 Z" + id="path885" + inkscape:path-effect="#path-effect887" + inkscape:original-d="M 383.14249,652.42123 566.59003,777.63964 459.77409,1105.3472 298.43083,1033.3264 C 150.7661,1150.9438 307.2632,776.24456 307.2632,776.24456" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 130.04681,825.47888 313.49434,950.69729 206.6784,1278.4048 45.335146,1206.3841 c -147.664726,117.6173 8.832375,-257.08189 8.832375,-257.08189 m 13.965822,72.44549 C 87.421885,926.3186 147.93251,862.47638 203.2876,879.15214 258.64269,895.8279 287.88041,986.70685 268.59187,1082.136 249.30332,1177.5651 188.7927,1241.4073 133.43761,1224.7315 78.082516,1208.0558 48.8448,1117.1768 68.133343,1021.7477 Z m 165.533527,233.178 -200.458523,-60.3883 69.849993,-345.57939 200.45852,60.38826 z m 34.925,-172.7897 -200.458527,-60.3883 m 65.304267,202.9838 69.84999,-345.57936" + id="path889" + inkscape:path-effect="#path-effect891" + inkscape:original-d="M 130.04681,825.47888 313.49434,950.69729 206.6784,1278.4048 45.335146,1206.3841 c -147.664726,117.6173 8.832375,-257.08189 8.832375,-257.08189" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M -5.4035227,221.52055 -17.419962,604.99762 -124.2359,932.70517 -285.57915,860.68444 c -147.66473,117.6173 8.83237,-257.0819 8.83237,-257.0819 m 248.203958,3.38509 c -27.568575,147.92086 -82.861088,284.46578 -123.499298,304.9816 -40.6382,20.51582 -51.23322,-82.76637 -23.66465,-230.68724 27.56858,-147.92086 82.861094,-284.46577 123.499295,-304.98159 40.638202,-20.51582 51.23322823,82.76637 23.664653,230.68723 z M -175.70677,681.28199 -28.542822,606.98763 M -52.207475,376.3004 -152.04212,911.96923" + id="path893" + inkscape:path-effect="#path-effect895" + inkscape:original-d="M -5.4035227,221.52055 -17.419962,604.99762 -124.2359,932.70517 -285.57915,860.68444 c -147.66473,117.6173 8.83237,-257.0819 8.83237,-257.0819" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 460.51157,388.49189 448.49513,771.96895 341.67919,1099.6765 180.33593,1027.6557 C 32.671196,1145.273 189.16831,770.57388 189.16831,770.57388 M 357.00809,1157.873 c -25.4238,40.3008 -19.22145,-108.127 13.85334,-331.52282 C 403.93622,602.95436 451.3587,389.18601 476.7825,348.88521 502.20631,308.5844 496.00395,457.01223 462.92916,680.40805 429.85437,903.80386 382.43189,1117.5722 357.00809,1157.873 Z" + id="path897" + inkscape:path-effect="#path-effect899" + inkscape:original-d="M 460.51157,388.49189 448.49513,771.96895 341.67919,1099.6765 180.33593,1027.6557 c -147.664734,117.6173 8.83238,-257.08182 8.83238,-257.08182" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 1141.8483,87.965008 1129.8318,471.44207 1023.0159,799.1496 861.67264,727.12887 c -147.66473,117.61731 8.83237,-257.08188 8.83237,-257.08188 m 167.83979,387.29913 c -25.4238,40.30081 -19.2214,-108.12701 13.8534,-331.52282 33.0748,-223.39582 80.4972,-437.164163 105.921,-477.464972 25.4238,-40.3008086 19.2214,108.127022 -13.8534,331.522832 -33.0748,223.39581 -80.4972,437.16415 -105.921,477.46496 z M 1204.1531,-24.612741 1084.3786,784.37505 992.31094,930.31719 1112.0854,121.3294 Z" + id="path901" + inkscape:path-effect="#path-effect903" + inkscape:original-d="M 1141.8483,87.965008 1129.8318,471.44207 1023.0159,799.1496 861.67264,727.12887 c -147.66473,117.61731 8.83237,-257.08188 8.83237,-257.08188" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 736.82153,186.0643 724.80509,569.54136 617.98915,897.2489 456.6459,825.22817 c -147.66473,117.61731 8.83237,-257.08189 8.83237,-257.08189 m 197.78338,185.05219 c -12.7119,20.1504 -9.61072,-54.06351 6.92667,-165.76142 16.5374,-111.6979 40.24864,-218.58208 52.96054,-238.73248 12.7119,-20.1504 9.61072,54.06351 -6.92667,165.76142 -16.5374,111.6979 -40.24864,218.58208 -52.96054,238.73248 z m 82.90414,-440.97943 -59.8872,404.4939 -46.03387,72.97106 59.88721,-404.4939 z m -23.01693,36.48553 -59.88721,404.4939 m 52.96054,-238.73248 -46.03387,72.97106" + id="path905" + inkscape:path-effect="#path-effect907" + inkscape:original-d="M 736.82153,186.0643 724.80509,569.54136 617.98915,897.2489 456.6459,825.22817 c -147.66473,117.61731 8.83237,-257.08189 8.83237,-257.08189" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 339.11631,-222.71814 327.09987,160.75889 220.28393,488.46644 58.940673,416.4457 c -147.664727,117.61732 8.83238,-257.08189 8.83238,-257.08189 m 197.783377,185.0522 c -12.7119,20.1504 -9.61072,-54.06351 6.92668,-165.76141 16.53739,-111.697908 40.24863,-218.582079 52.96053,-238.732482 12.7119,-20.150403 9.61072,54.0635096 -6.92667,165.761412 -16.5374,111.6979 -40.24864,218.58208 -52.96054,238.73248 z M 325.44364,-60.077882 265.55643,344.41601 m 52.96054,-238.73248 -46.03386,72.97107" + id="path909" + inkscape:path-effect="#path-effect911" + inkscape:original-d="M 339.11631,-222.71814 327.09987,160.75889 220.28393,488.46644 58.940673,416.4457 c -147.664727,117.61732 8.83238,-257.08189 8.83238,-257.08189" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.498909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 383.07737,949.9094 c -15.14242,37.37572 -15.78868,-19.20413 -1.44347,-126.37463 14.34522,-107.17049 38.24966,-224.34835 53.39208,-261.72407 15.14242,-37.37572 15.78868,19.20413 1.44346,126.37463 -14.34521,107.17049 -38.24966,224.34835 -53.39207,261.72407 z" + id="path833" + inkscape:path-effect="#path-effect835" + inkscape:original-d="M 452.66795,390.97285 440.65151,774.4499 333.83556,1102.1574 172.49231,1030.1367 c -147.664738,117.6173 8.83237,-257.08188 8.83237,-257.08188" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/EnvelopeDeformation_multi_0_92_5.svg b/testfiles/lpe_tests/EnvelopeDeformation_multi_0_92_5.svg new file mode 100644 index 0000000..0880910 --- /dev/null +++ b/testfiles/lpe_tests/EnvelopeDeformation_multi_0_92_5.svg @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg33" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.2"> + <defs + id="defs27"> + <inkscape:path-effect + effect="envelope" + id="path-effect37" + is_visible="true" + yy="true" + xx="true" + bendpath1="m 7.5595245,30.148804 c 35.3319025,-9.090069 79.7075505,-63.398867 100.5416655,0" + bendpath2="m 108.10119,30.148804 c 78.77871,44.130483 7.14673,56.925405 0,83.154756" + bendpath3="m 7.5595245,113.30356 c 31.7398305,4.56186 31.2022535,92.12278 100.5416655,0" + bendpath4="M 7.5595245,30.148804 V 113.30356" + bendpath1-nodetypes="cc" + bendpath2-nodetypes="cc" + bendpath3-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect29" + is_visible="true" + yy="true" + xx="true" + bendpath1="m 8.6493148,116.8352 c 38.0925732,-15.80603 97.9543252,-102.361905 99.6875352,0" + bendpath2="m 108.33685,116.8352 c 20.83005,33.4772 52.7057,67.53576 0,97.14266" + bendpath3="M 8.6493148,213.97786 H 108.33685" + bendpath4="m 8.6493148,116.8352 v 97.14266" + bendpath1-nodetypes="cc" + bendpath2-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect27" + is_visible="true" + yy="true" + xx="true" + bendpath1="m 7.5595245,22.589279 c 34.8365355,-8.101216 80.0532935,-79.78129 100.5416655,0" + bendpath2="M 108.10119,22.589279 V 120.86308" + bendpath3="m 7.5595245,120.86308 c 33.5138885,-3.19876 67.0277775,-0.41096 100.5416655,0" + bendpath4="m 7.5595245,22.589279 c -10.2417836,35.944266 -71.3137185,87.702361 0,98.273801" + bendpath1-nodetypes="cc" + bendpath4-nodetypes="cc" + bendpath3-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect24" + is_visible="true" + yy="true" + xx="true" + bendpath1="m 117.17262,46.779762 c 33.59244,-2.440347 67.18489,-40.4549729 100.77733,0" + bendpath2="m 217.94995,46.779762 c 33.97515,66.675438 80.73125,134.434018 0,191.388578" + bendpath3="m 117.17262,238.16834 c 31.79746,17.23183 59.66057,72.23345 100.77733,0" + bendpath4="m 117.17262,46.779762 c 58.14642,70.579938 62.76944,134.915488 0,191.388578" + bendpath1-nodetypes="cc" + bendpath2-nodetypes="cc" + bendpath3-nodetypes="cc" + bendpath4-nodetypes="cc" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <!--<path + id="ellipse05" + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + transform="translate(-4.5357143,-12.85119)" + inkscape:path-effect="#path-effect37" + sodipodi:type="arc" + sodipodi:cx="57.830357" + sodipodi:cy="71.726181" + sodipodi:rx="50.270832" + sodipodi:ry="41.577377" + d="m 144.36332,70.144797 c -0.68283,3.073884 -3.16747,5.666966 -6.57595,7.754234 -4.61102,2.819085 -10.51889,4.588785 -16.58812,6.506228 -7.34473,2.301614 -14.01802,4.467248 -19.98958,8.420503 -4.620139,3.041664 -8.30537,6.860906 -11.484761,11.862278 10e-7,0 -3e-6,1e-5 -3e-6,1e-5 -1.620115,2.58373 -3.013152,5.35908 -4.285564,8.32993 -1.507554,3.46274 -2.773515,7.09315 -4.034002,10.84392 -0.493334,1.45062 -1.178266,3.51233 -1.671599,4.96295 -2.188358,6.55929 -4.658635,12.51962 -8.242581,17.40277 -1.229628,1.66666 -2.560864,3.17145 -3.997455,4.47424 -2.85496,2.58823 -6.136635,4.26945 -9.475851,4.4573 -0.186494,0.0105 -0.372841,0.0163 -0.558954,0.0173 -1.088816,0.006 -2.166818,-0.15196 -3.215178,-0.48581 -1.887186,-0.59991 -3.616938,-1.73898 -5.114029,-3.27749 -1.559509,-1.60166 -2.845993,-3.60249 -3.927768,-5.83143 -2.471729,-5.08116 -3.820583,-11.24842 -5.092593,-17.25138 0,0 -2e-6,0 -2e-6,0 -0.577476,-2.76599 -1.079966,-5.29885 -1.665,-7.95647 0,0 -10e-7,-1e-5 -10e-7,-1e-5 -0.573516,-2.64348 -1.1701,-5.14208 -1.861829,-7.53362 -0.429498,-1.45449 -0.890013,-2.85203 -1.393271,-4.20235 -1.644859,-4.47982 -3.705714,-8.1321 -6.314624,-11.353543 -0.845665,-1.046108 -1.729816,-2.019139 -2.644741,-2.936225 -0.550732,-0.55732 -1.109582,-1.093177 -1.673909,-1.611068 0,0 -4e-6,-4e-6 -4e-6,-4e-6 C 21.831423,90.245514 18.881196,88.178586 16.406136,86.297211 15.860137,85.883317 15.336332,85.479226 14.83121,85.074964 11.972121,82.76775 10.005026,80.747302 8.79912,78.059802 7.9243966,76.129631 7.5471748,73.976637 7.5478057,71.697855 c 8.27e-5,-0.298787 0.00682,-0.598675 0.020049,-0.898486 0.1227358,-2.778931 0.7810345,-5.492074 2.2317946,-7.729072 1.485996,-2.361003 3.673809,-4.242845 6.588946,-6.040116 1.794332,-1.110778 3.710262,-2.119497 5.755372,-3.237328 0.932482,-0.500365 1.885254,-1.009292 2.820987,-1.526844 -10e-7,0 3e-6,-2e-6 3e-6,-2e-6 1.620302,-0.907178 3.218512,-1.857146 4.756464,-2.931056 2.952091,-2.053421 5.46374,-4.389099 7.693337,-7.551063 1.820171,-2.548116 3.334439,-5.379011 4.831929,-8.658072 -1e-6,0 2e-6,-5e-6 2e-6,-5e-6 0.919109,-1.995512 1.777573,-4.04315 2.678732,-6.199408 10e-7,-2e-6 10e-7,-3e-6 2e-6,-5e-6 2.036142,-4.820765 4.019034,-9.731131 6.75007,-14.019752 1.181386,-1.86185 2.456623,-3.5382444 3.889401,-5.006328 1.371157,-1.4063848 2.862,-2.5868747 4.462305,-3.5225577 0.889263,-0.5198584 1.808086,-0.961824 2.745068,-1.3194519 0.160272,-0.061173 0.321073,-0.1198771 0.482352,-0.1760842 2.877536,-1.0029019 5.867804,-1.1853606 8.75054,-0.3384962 1.455079,0.4230919 2.867867,1.0947288 4.227678,2.0129033 4.011422,2.7207477 7.073527,7.2926707 9.463099,12.6385787 0.603833,1.312045 1.170968,2.656718 1.721294,3.995987 2.398439,5.902032 4.095149,10.831992 7.285563,15.26294 0,0 3e-6,5e-6 3e-6,5e-6 4.145393,5.803649 9.513194,9.091366 17.383454,12.098742 8.14504,3.173609 18.35504,5.447704 25.481,10.055201 4.36261,2.800064 7.19417,6.449754 6.96594,10.323792 -0.024,0.408743 -0.0811,0.813392 -0.16987,1.21292 0,0 0,0 0,0 z" /> + --><path + id="path04" + d="m 94.647955,202.87019 c -1.827588,-1.45751 -3.711362,-2.89715 -5.571521,-4.2717 -2.328628,-1.70235 -4.620711,-3.26669 -6.707399,-4.51589 -1.587422,-0.91905 -2.933465,-1.65494 -3.865672,-2.08902 -0.703586,-0.32902 -1.123174,-0.70449 -1.197029,-1.16762 -0.0879,-0.54575 -0.251412,-1.23222 -0.555231,-2.1502 -0.184234,-0.46122 -0.406301,-0.92169 -0.67534,-1.38444 -0.3259,-0.55536 -0.717911,-1.11038 -1.190324,-1.67044 -0.55228,-0.64681 -1.146714,-1.26591 -1.796774,-1.85809 -0.82232,0.55607 -1.717798,1.16509 -2.615892,1.77558 -0.549712,0.37389 -1.104355,0.75629 -1.663873,1.14636 -4.151352,2.88706 -9.401811,6.74372 -14.161432,10.18035 0,0 -2e-6,0 -2e-6,0 -6.454756,4.67725 -12.486469,8.99305 -19.247985,13.47428 0,0 -2e-6,0 -2e-6,0 -0.635334,0.42111 -1.270552,0.83924 -1.906304,1.25473 4.081891,-7.66467 7.013715,-14.43175 9.027738,-20.23064 0.312357,-0.89869 0.604312,-1.77859 0.876648,-2.64011 1.521149,-4.90644 2.477391,-9.15444 2.968386,-12.58132 0,0 1e-6,0 1e-6,0 0.256484,-1.70486 0.476381,-3.18014 0.73089,-4.68006 -0.832921,-0.19719 -1.675398,-0.38161 -2.530317,-0.55779 0,0 -1e-6,0 -1e-6,0 -1.391414,-0.29026 -2.795436,-0.55272 -4.240208,-0.81284 0,0 -1e-6,0 -1e-6,0 -4.569955,-0.87191 -9.343627,-1.92172 -14.320558,-3.75887 -1.002628,-0.37291 -2.015311,-0.77506 -3.037666,-1.21243 0,0 -2e-6,0 -2e-6,0 -4.668944,-2.04608 -9.493523,-4.70468 -14.1874257,-8.44301 5.8909097,0.45452 11.9223927,-0.0959 17.6611007,-1.36228 0,0 2e-6,0 2e-6,0 6.70498,-1.47224 12.964442,-3.89372 18.871811,-6.78666 0,0 3e-6,0 3e-6,0 4.100014,-2.00733 7.987235,-4.21984 11.727765,-6.47 1.103046,-3.57681 2.112968,-7.46035 3.045658,-11.71714 0.440033,-2.01474 0.8596,-4.09886 1.26112,-6.26287 2.710424,-14.42319 3.841157,-27.977921 5.933283,-48.939718 2.102254,3.870523 4.000342,7.909287 5.747574,12.027252 2.517235,5.953359 4.577933,11.909345 6.362334,18.022786 1.551357,5.31268 2.6607,10.37831 3.444514,15.42916 10e-7,1e-5 10e-7,1e-5 10e-7,1e-5 0.221039,1.5821 0.407546,3.11052 0.562731,4.59173 0.275165,2.71016 0.446203,5.2204 0.536756,7.55259 0.0123,0.35463 0.02805,0.70529 0.04735,1.05213 0.101171,0.0591 0.456054,0.10205 1.034097,0.0969 0.900791,0.0493 2.180617,0.50377 3.835444,1.19639 2.166875,0.96627 4.540823,2.28008 7.196273,3.72225 0,0 10e-7,0 10e-7,0 8.00818,4.45089 17.74375,8.83663 30.5888,9.68085 -4.50794,6.00992 -10.37387,9.55975 -17.64839,12.28815 0,0 0,0 0,0 -3.28977,1.17947 -6.64336,2.08486 -10.110566,2.92557 -1.570845,0.39546 -3.123344,0.80208 -4.644945,1.25058 0,0 -2e-6,0 -2e-6,0 -0.246903,0.0712 -0.492726,0.14443 -0.737453,0.21989 0.614902,2.68084 0.957256,5.37823 1.111515,8.37859 0,0 0,0 0,0 0.05245,0.99538 0.0627,2.01946 0.04348,3.08557 -0.05384,3.02283 -0.368401,6.32682 -0.565787,10.04332 0,0 0,1e-5 0,1e-5 -0.273938,4.63674 -0.397937,9.94954 0.562822,16.16811 z" + inkscape:transform-center-y="-3.8375164" + inkscape:transform-center-x="1.2271471" + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect29" + inkscape:original-d="M 93.738085,209.30952 61.705799,195.44847 32.127798,213.97786 35.411919,179.23004 8.6493148,156.82559 42.711304,149.2113 l 13.037801,-32.3761 17.767346,30.04193 34.820399,2.39492 -23.081156,26.18122 z" /> + <g + id="g03" + inkscape:path-effect="#path-effect24"> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + d="m 232.36885,96.854783 c 0.13375,0.177033 0.26519,0.354137 0.39428,0.531335 1.17076,1.607367 2.14298,3.214432 2.88368,4.836532 0,0 0,0 0,0 2.71414,5.94244 2.09119,11.60432 -1.89362,17.5602 -3.97009,5.93388 -10.77301,11.43312 -18.02328,16.91999 0,0 -1e-5,0 -1e-5,0 -2.41459,1.8539 -4.95136,3.74263 -7.19026,5.41412 -3.60824,2.63129 -6.49594,4.84148 -8.33606,6.61758 -1.2564,1.17204 -2.05079,2.00037 -2.41762,2.44562 -0.0133,0.0322 -0.0229,0.0635 -0.0288,0.0938 -0.0526,0.26911 0.19644,0.46193 0.73554,0.58466 0.48818,0.11833 1.22742,0.22996 2.14293,0.33214 0.86973,0.28006 1.48551,0.49158 1.79705,0.65814 0.0826,0.0442 0.14233,0.0845 0.17832,0.12124 0.0691,0.0878 0.0266,0.17036 -0.13474,0.24808 -0.67861,0.11735 -2.41277,-0.5643 -5.10417,-1.93149 1e-5,1e-5 -0.11754,-0.0603 -0.11752,-0.0603 -2.81035,-1.49796 -6.35182,-3.82206 -10.09009,-6.65405 -0.39746,-0.30086 -0.79874,-0.6088 -1.20314,-0.92345 -5.1787,-4.04993 -10.42248,-8.87069 -15.31697,-14.31866 -8.79006,-9.82919 -15.50476,-20.51366 -21.07654,-30.097969 -1e-5,-10e-7 -1e-5,-2e-6 -1e-5,-4e-6 -0.93982,-1.616696 -1.86064,-3.242654 -2.71182,-4.807245 -0.0947,-0.174029 -0.18872,-0.347748 -0.28211,-0.521104 -3.00607,-5.580246 -5.23976,-10.596056 -6.08783,-15.462728 -0.85689,-4.917324 -0.23393,-9.226555 1.24608,-14.039022 1.25149,-4.019544 3.52606,-9.312754 5.81552,-13.799308 0.19492,-0.379849 0.39325,-0.760516 0.59467,-1.140565 1.8733,-3.47159 4.09422,-7.044564 6.81148,-10.149985 2.62451,-2.996581 5.63403,-5.513828 9.28876,-7.303482 1.06465,-0.521795 2.16846,-0.972194 3.3023,-1.346244 0.49302,-0.162647 0.99122,-0.310474 1.4933,-0.442833 1.86749,-0.492313 3.78386,-0.769009 5.65001,-0.795881 1.80785,-0.02446 3.55133,0.190094 5.16745,0.677316 1.81896,0.548857 3.44742,1.435991 4.86921,2.675261 1.65158,1.41367 2.99585,3.206303 4.13513,5.308929 1.62937,2.989726 2.85275,6.551397 4.18643,10.156787 0.87147,2.370352 1.72203,4.673269 2.74659,7.035909 0,0 0,5e-6 0,5e-6 3.68655,8.393966 8.2341,14.379222 16.03309,21.714369 7.29214,6.858431 15.41669,13.077154 20.54281,19.862237 z" + id="path02" + inkscape:original-d="M 217.71428,95.916664 A 50.270832,49.136902 0 0 1 167.44345,145.05357 50.270832,49.136902 0 0 1 117.17262,95.916664 50.270832,49.136902 0 0 1 167.44345,46.779762 50.270832,49.136902 0 0 1 217.71428,95.916664 Z" /> + <path + inkscape:connector-curvature="0" + id="path01" + d="m 203.56541,244.87182 c -0.0459,0.0191 -1.19485,0.49862 -1.24075,0.51772 -1.70199,0.71748 -3.38947,1.42826 -5.0408,2.09632 0,0 0,0 0,0 -2.86045,1.13914 -5.5299,2.13252 -7.79774,2.68775 0,0 0,0 0,0 -1.70813,0.39903 -3.23545,0.52601 -4.56272,0.25906 0,0 0,0 0,0 -1.12524,-0.2714 -2.06023,-0.7825 -2.74168,-1.55201 -0.64224,-0.70264 -1.09236,-1.58199 -1.32526,-2.63485 -0.0778,-0.26695 -0.15551,-0.54823 -0.23428,-0.84175 -1.01434,1.5928 -2.38615,2.99715 -4.08481,4.22093 -1.0525,0.75509 -2.21279,1.44268 -3.46698,2.06288 -4.25148,2.00502 -9.27272,2.91943 -14.82057,3.17454 0,0 0,0 0,0 -5.18651,0.2324 -10.56263,-0.13311 -16.022,-0.75994 10.46426,-10.19238 19.50372,-20.4488 26.83349,-30.48713 1.45253,-1.98979 2.85235,-3.98167 4.19672,-5.97231 -0.57214,-1.64211 -1.20994,-3.24711 -1.92115,-4.83518 -0.19738,-0.45204 -0.40109,-0.90199 -0.6112,-1.35036 0,0 0,0 0,0 -2.36553,-5.10886 -5.26007,-9.47201 -8.53306,-14.08685 -0.26386,-0.3756 -0.52808,-0.7485 -0.79307,-1.12052 -1.06154,-1.49724 -2.12883,-2.9629 -3.129,-4.39344 -1.29439,-1.85178 -2.49326,-3.67785 -3.36292,-5.41004 3.38479,-0.34286 7.6749,-0.26822 11.94673,-0.0941 4.97106,0.19814 10.0575,0.53106 14.52948,0.61469 0,0 0,0 0,0 0.40854,0.008 0.81194,0.0145 1.21006,0.0185 4.05628,0.10605 7.56727,0.054 10.52217,-0.33113 0.11473,-0.0157 0.22805,-0.0319 0.33996,-0.0486 1.9041,-3.35473 3.52091,-6.79981 4.84626,-10.33737 0,0 0,-1e-5 0,-1e-5 2.35048,-6.24892 3.72646,-12.83643 4.20007,-19.81249 0.0306,-0.57148 0.0545,-1.14325 0.0718,-1.71534 0.0346,-1.47857 0.026,-2.95368 -0.0246,-4.42572 0,-1e-5 0,-1e-5 0,-1e-5 -0.0234,-0.7123 -0.0573,-1.4233 -0.10154,-2.13307 0.0193,0.42078 0.032,0.84368 0.0382,1.26874 0,0 0,0 0,0 0.002,0.2166 0.002,0.43359 -1.2e-4,0.65098 0,0 0,0 0,0 -0.01,1.33163 -0.0849,2.67541 -0.2227,4.0318 -0.31108,2.87076 -0.90513,5.7609 -1.73959,8.6662 -1.06447,3.58522 -2.04233,7.17705 -2.90823,10.84005 0,0 0,0 0,0 -0.20471,0.82733 -0.40077,1.6522 -0.58802,2.47509 0,0 0,0 0,0 -0.67235,2.9793 -1.21525,5.93198 -1.62152,8.8672 0.006,0.0171 0.0118,0.0342 0.0187,0.0512 0.37977,0.37769 1.18107,0.47783 2.4877,0.37299 0,0 0,0 0,0 1.76334,-0.2053 4.60047,-0.69223 8.64644,-1.30989 0,0 0,0 0,0 2.30015,-0.37801 4.93211,-0.78859 7.85301,-1.19205 0,0 0,0 0,0 9.89713,-1.32248 23.3873,-2.25933 40.13033,-2.20065 -13.72565,4.60704 -25.42823,9.24918 -35.18539,14.39246 -2.7157,1.43583 -5.25687,2.90063 -7.6348,4.40549 -1.84545,1.16156 -3.58574,2.34275 -5.22701,3.54811 -3.33621,2.48073 -6.22822,5.01304 -8.73615,7.60944 -1.43648,1.46191 -2.72095,2.93524 -3.86892,4.42405 -0.13722,3.0756 -0.11648,6.08491 0.17434,8.99554 0.0342,0.35055 0.0721,0.69977 0.11404,1.04765 0.66923,5.68112 2.35278,11.05618 6.18502,16.10728 0.9336,1.22775 1.99496,2.44048 3.20214,3.63805 z" + inkscape:transform-center-y="-3.8375164" + inkscape:transform-center-x="1.2271471" + style="fill:none;stroke:#ff0000;stroke-width:0.26458332" + inkscape:original-d="m 203.35118,233.5 -32.03229,-13.86105 -29.578,18.52939 3.28412,-34.74782 -26.7626,-22.40445 34.06199,-7.61429 13.0378,-32.3761 17.76735,30.04193 34.8204,2.39492 -23.08116,26.18122 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/EnvelopeDeformation_multi_mm_1_0_2.svg b/testfiles/lpe_tests/EnvelopeDeformation_multi_mm_1_0_2.svg new file mode 100644 index 0000000..9b61685 --- /dev/null +++ b/testfiles/lpe_tests/EnvelopeDeformation_multi_mm_1_0_2.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="envelope" + id="path-effect41" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="M 48.80433,18.853938 H 122.9452" + bendpath2="m 122.9452,18.853938 c 67.19349,33.820026 32.94292,58.904451 0,84.101482" + bendpath3="M 48.80433,102.95542 H 122.9452" + bendpath4="m 48.80433,18.853938 c -91.912834,22.20358 -45.125946,53.20521 0,84.101482" + bendpath4-nodetypes="cc" + bendpath2-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect39" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="m 13.680256,83.095282 c 64.095465,36.664878 63.031385,2.155511 91.587044,0" + bendpath2="m 105.2673,83.095282 c 168.98396,69.210468 64.39482,75.405318 0,90.858648" + bendpath3="M 13.680256,173.95393 H 105.2673" + bendpath4="M 13.680256,83.095282 V 173.95393" + bendpath2-nodetypes="cc" + bendpath1-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect37" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="m 100.19122,109.26503 c 59.66088,4.3091 107.39936,88.346 180.91577,0" + bendpath2="m 281.10699,109.26503 c 26.78068,59.79683 62.91968,120.88466 0,168.30718" + bendpath3="m 100.19122,277.57221 c 68.04805,54.27753 129.49726,62.29671 180.91577,0" + bendpath4="M 100.19122,109.26503 V 277.57221" + bendpath1-nodetypes="cc" + bendpath2-nodetypes="cc" + bendpath3-nodetypes="cc" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path09" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 161.25784,59.630864 c -0.0441,0.438411 -0.11507,0.874357 -0.21255,1.305832 -0.23936,1.061566 -0.63681,2.090485 -1.18234,3.068656 -1.33818,2.401142 -3.46324,4.407987 -6.08433,6.129791 -1.21485,0.796307 -2.52183,1.517485 -3.88986,2.179881 -4.08556,1.974315 -8.66524,3.37734 -13.07773,4.658382 -1.29215,0.374739 -2.64009,0.756336 -3.89849,1.116662 -6.41357,1.835826 -11.34624,3.346491 -16.1733,5.719256 -4.70409,2.312317 -8.18239,4.923095 -11.6724,7.893607 C 97.969339,97.743953 92.977218,102.9307 85.825604,102.92309 78.638525,102.91543 73.613261,97.734951 65.873169,91.625405 62.053069,88.610056 58.111107,85.912573 52.679955,83.425827 47.105523,80.873479 41.292652,79.115413 33.695075,76.942531 31.477751,76.309063 31.255829,76.248973 29.038505,75.615505 23.751799,74.097006 18.189177,72.443708 13.066914,70.231921 11.345704,69.488879 9.6831007,68.689735 8.0974694,67.815109 4.6843837,65.927287 1.6760084,63.739582 -0.51164799,61.089909 -1.4041165,60.009272 -2.1474096,58.864259 -2.7125149,57.660896 -2.9426304,57.170909 -3.1393872,56.67014 -3.3003967,56.161734 c -0.7310786,-2.308461 -0.7129598,-4.740806 0.2077328,-6.956223 0.2650917,-0.637467 0.6035746,-1.253679 1.0167639,-1.841255 1.15355143,-1.648448 2.82776585,-3.031151 4.812124,-4.133729 2.4388345,-1.357026 5.3018508,-2.273536 8.335088,-2.942909 7e-6,-2e-6 0.03755,-0.0083 0.03755,-0.0083 8.7292,-1.949476 20.302953,-1.741104 27.989776,-2.332196 0.416765,-0.03033 0.829381,-0.06229 1.238218,-0.09612 13.574845,-1.094932 19.909258,-3.997725 27.365614,-9.446971 7.011827,-5.124375 11.760997,-9.576565 18.125265,-9.584388 6.259943,-0.0077 10.627522,4.410014 16.462885,9.668634 6.33194,5.70611 11.27948,8.921354 22.70247,11.46864 0.33914,0.07653 0.68115,0.151833 1.02637,0.226184 6.47888,1.432142 15.85878,2.5459 22.87032,5.151734 -2e-5,-2e-6 0.0295,0.01096 0.0295,0.01096 2.40178,0.883615 4.62055,1.924688 6.52615,3.235626 1.54972,1.061792 2.84244,2.27449 3.82375,3.656719 0.34907,0.491782 0.65677,1.005412 0.92015,1.537022 0.91537,1.842425 1.26827,3.870329 1.06853,5.855743 z" + inkscape:path-effect="#path-effect41" + inkscape:original-d="M 122.9452,60.904677 A 37.070435,42.050739 0 0 1 85.874764,102.95542 37.070435,42.050739 0 0 1 48.80433,60.904677 37.070435,42.050739 0 0 1 85.874764,18.853938 37.070435,42.050739 0 0 1 122.9452,60.904677 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path08" + sodipodi:sides="5" + sodipodi:cx="61.447475" + sodipodi:cy="131.24544" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 106.62224,163.61589 c -1.15243,-1.43162 -2.51312,-2.72739 -4.03267,-3.89515 0,0 0,0 0,0 -0.63587,-0.47085 -1.3045,-0.91627 -2.00606,-1.33652 -3.303621,-1.98327 -7.267475,-3.374 -12.239957,-4.39856 0,0 -2e-6,0 -2e-6,0 -2.771463,-0.62974 -5.558166,-1.30565 -8.494988,-2.15421 -1.297647,0.45253 -2.57778,0.90446 -3.830142,1.35189 0,0 -2e-6,0 -2e-6,0 -6.340559,2.24926 -11.947662,4.50601 -16.749532,6.72316 -1.35643,0.62642 -2.654746,1.25236 -3.897421,1.87896 0,0 -2e-6,0 -2e-6,0 -6.398328,3.27796 -11.48237,6.66974 -15.59241,10.18758 0.339004,-4.83744 1.644124,-9.45568 3.355673,-13.78936 0,0 0,0 0,0 1.735051,-4.37166 3.937544,-8.56543 6.083054,-12.48345 1.942374,-3.50536 3.683689,-6.68258 4.999748,-9.81524 0.02506,-0.061 0.04969,-0.12171 0.07388,-0.18219 -1.814036,-1.38128 -3.862106,-2.61251 -6.213547,-3.72126 -2.00906,-0.99254 -4.323613,-1.6253 -6.98347,-2.01505 -2.231938,-0.31672 -4.458176,-0.0334 -6.765086,0.6068 -2.057867,0.83068 -3.663409,1.31842 -4.979109,1.434 10e-7,0 -1e-6,0 -1e-6,0 -1.716965,-0.11804 -3.627502,-1.09133 -5.852636,-2.62427 -3.01437,-2.01402 -6.150535,-4.27404 -9.94655,-7.06255 1.029704,0.22989 2.035102,0.44805 3.020185,0.65477 17.762871,3.72924 30.174597,4.09798 40.875676,3.59321 -0.05829,-1.86332 -0.307374,-3.75822 -0.661723,-5.72354 -0.678996,-4.04541 -1.599481,-8.05749 -2.060071,-12.01182 -0.342334,-3.15938 -0.379429,-6.26132 0.201862,-9.380536 3.477601,3.920946 8.507267,7.588366 14.886929,11.060146 0,0 2e-6,0 2e-6,0 6.814762,3.66505 14.903643,6.96836 23.675441,10.13681 0.745795,0.27341 1.495184,0.5444 2.2487,0.81348 0.230342,0.0803 3.176623,1.10351 3.406965,1.18385 8.794174,-1.7089 16.914974,-3.30332 25.470164,-4.85001 4.47168,-0.7586 9.53625,-1.66671 14.54492,-2.76282 0,0 1e-5,0 1e-5,0 5.67903,-1.25576 12.0373,-2.97771 18.95353,-5.43198 2.32782,6.75717 2.55885,13.00676 0.41422,18.9094 0,0 0,1e-5 0,1e-5 -0.0364,0.0994 -0.0735,0.19863 -0.11134,0.29775 -0.90085,2.30175 -2.28023,4.32375 -4.41648,6.09351 -1.5477,1.26943 -3.3702,1.95856 -5.75017,1.92952 -1.83929,-0.29413 -3.46915,-0.78939 -4.83641,-1.67049 1e-5,0 0,0 0,0 -0.0205,-0.0101 -0.0411,-0.0201 -0.0617,-0.03 0,0 0,0 0,0 -1.3093,-0.61415 -2.86518,-0.85466 -4.46434,-0.59829 -0.62277,0.0923 -1.26662,0.19262 -1.93595,0.30681 0.18879,0.53844 0.14422,1.17063 -0.0831,1.91814 -0.38614,1.24221 -1.11893,2.47227 -2.11942,3.74993 0,0 0,0 0,0 -0.64229,0.81162 -1.35029,1.60924 -2.11692,2.39896 -2.21532,2.29187 -4.88938,4.48648 -7.82373,6.73613 0,0 -1e-5,0 -1e-5,0 -4.47471,3.43646 -9.38786,6.85963 -13.96277,10.47115 -1.45245,1.14773 -2.8704,2.31355 -4.22324,3.50134 z" + inkscape:transform-center-x="1.9737012" + inkscape:transform-center-y="-2.7208274" + inkscape:path-effect="#path-effect39" /> + <g + id="g07" + transform="translate(-67.802201,39.162892)" + inkscape:path-effect="#path-effect37"> + <g + id="g06" + transform="translate(14.129121,-23.707025)"> + <path + id="path05" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 201.53594,206.59553 c 0.10204,0.6683 0.18027,1.33911 0.2338,2.01182 0.48505,6.46728 -1.27666,12.81323 -5.49997,18.07597 0,0 0,0 0,0 -2.461,3.10001 -5.62301,5.71952 -9.19728,7.67794 -4.08403,2.24766 -8.63352,3.56395 -13.27218,3.8177 0,0 -1e-5,0 -1e-5,0 -3.69281,0.22521 -7.39625,-0.16271 -11.01929,-1.12429 -3.47823,-0.92315 -6.83157,-2.3608 -10.01424,-4.23299 0,0 0,0 0,0 -3.44822,-2.01496 -6.71158,-4.52453 -9.69528,-7.40921 -4.23673,-4.11129 -7.91581,-9.03933 -10.76006,-14.44512 -3.42914,-6.49561 -5.5624,-13.56173 -6.22814,-20.70209 -0.0765,-0.7896 -0.13494,-1.57634 -0.17527,-2.35917 -0.39803,-7.72529 0.9735,-15.18017 4.10429,-20.60464 2.38315,-4.13525 5.7104,-6.97288 10.01294,-8.14862 3.02578,-0.83428 6.39707,-0.80064 10.04894,-0.0337 0,0 1e-5,0 1e-5,0 3.35873,0.70595 6.8639,2.0146 10.35987,3.69658 3.61499,1.73924 7.23868,3.88763 10.62665,6.16746 0,0 0,0 0,0 4.20934,2.83372 8.32155,6.03155 11.91225,9.18339 3.20653,2.85044 6.24502,5.90305 8.87711,9.06119 0,0 0,0 0,0 4.95386,5.86499 8.60617,12.29681 9.68586,19.36782 z" + inkscape:original-d="M 195.32704,175.0228 A 37.070435,42.050739 0 0 1 158.2566,217.07354 37.070435,42.050739 0 0 1 121.18617,175.0228 37.070435,42.050739 0 0 1 158.2566,132.97206 37.070435,42.050739 0 0 1 195.32704,175.0228 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path04" + sodipodi:sides="5" + sodipodi:cx="133.82932" + sodipodi:cy="245.36356" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 169.25682,305.75963 c -6.61338,-5.41409 -12.69631,-11.24652 -18.63741,-16.99968 -3.12416,-3.01123 -6.17003,-5.93802 -9.2349,-8.74522 -0.28646,-0.2634 -0.5727,-0.52568 -0.8588,-0.78682 -3.30054,1.54421 -6.5505,3.09899 -9.87569,4.69968 -5.35517,2.57928 -10.7783,5.21707 -16.50617,7.91539 1.92494,-12.38701 2.7795,-23.81636 2.91683,-33.17402 0.002,-0.0474 0.0406,-1.04855 0.0425,-1.09599 -1.88554,-1.66244 -3.81783,-3.25133 -5.82334,-4.79719 -6.43969,-4.9567 -13.288222,-9.35123 -21.779752,-14.35369 -0.979943,-0.57776 -1.979134,-1.16183 -2.999902,-1.75424 9.31701,-1.388 17.406144,-1.86872 24.648624,-2.09293 3.93875,-0.11184 7.69847,-0.11344 11.34365,-0.051 1.05321,-2.23422 2.08657,-4.42499 3.14007,-6.67764 2.46758,-5.31736 4.63497,-10.38776 6.70773,-15.88822 0.14387,-0.38266 0.28671,-0.76597 0.42861,-1.15016 3.38865,5.59302 6.91543,11.3441 10.30408,16.93712 1.28316,2.11584 2.54913,4.22253 3.79693,6.32877 1.05297,1.75021 2.09106,3.46733 3.14376,5.20667 0.86148,0.26569 1.727,0.53208 2.59321,0.79731 6.68573,2.06663 13.63554,4.07775 21.11125,5.66635 0,0 10e-6,0 10e-6,0 3.18779,0.69385 6.4797,1.25959 9.90407,1.67128 -3.49433,2.76219 -6.87666,5.34495 -10.24297,7.89724 0.20054,-0.15377 -2.4348,1.86943 -2.23426,1.71566 -3.44314,2.62839 -6.74101,5.31027 -9.97883,8.1563 0.66363,2.54574 1.33008,5.19391 1.99505,7.96593 2.41068,9.14801 4.19677,19.60729 6.09568,32.60908 z" + inkscape:transform-center-x="1.9737001" + inkscape:transform-center-y="-2.7208323" /> + </g> + <g + id="g03" + transform="translate(85.77995,-10.499836)"> + <path + id="path02" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 218.29599,175.77156 c 2.71604,6.06126 3.68522,12.33007 2.48211,18.46208 -1.20362,6.13455 -4.47184,11.62286 -9.24383,16.51055 -7.17816,7.32713 -17.78378,13.179 -27.40273,16.81977 0,0 0,0 0,0 -1.80284,0.68906 -3.61306,1.30866 -5.41847,1.84898 -4.00369,1.19822 -7.97487,2.00455 -11.8746,2.34118 0,0 0,0 0,0 -4.86912,0.43589 -9.56248,0.16306 -13.99028,-0.85896 -2.36878,-0.55879 -4.60189,-1.34374 -6.68379,-2.33762 -9.90348,-4.83224 -16.34843,-14.22724 -17.73334,-23.87417 -0.44027,-3.06675 -0.37457,-6.1487 0.21592,-9.18613 0,0 0,0 0,0 1.68264,-8.77061 7.44973,-15.91121 15.93129,-23.48523 3.51005,-3.19383 7.56737,-6.52853 11.33891,-9.40828 0,0 0,0 0,0 3.06004,-2.30454 6.23458,-4.56042 9.25553,-6.46187 1.38092,-0.86917 2.75482,-1.68067 4.11715,-2.41555 0,0 0,0 0,0 7.14478,-3.83593 13.79334,-5.27417 21.15414,-3.27338 7.1089,1.93232 14.92905,7.24766 21.12941,14.69988 0,0 1e-5,0 1e-5,0 2.68742,3.2324 5.01965,6.81843 6.72257,10.61875 z" + inkscape:original-d="M 195.32704,175.0228 A 37.070435,42.050739 0 0 1 158.2566,217.07354 37.070435,42.050739 0 0 1 121.18617,175.0228 37.070435,42.050739 0 0 1 158.2566,132.97206 37.070435,42.050739 0 0 1 195.32704,175.0228 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path01" + sodipodi:sides="5" + sodipodi:cx="133.82932" + sodipodi:cy="245.36356" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 175.28156,290.48697 c -1.32574,0.19453 -2.662,0.39337 -4.05583,0.59309 0,0 0,10e-6 0,10e-6 -4.00374,0.58685 -8.2485,1.12214 -12.88317,1.35598 -3.6557,0.19152 -7.4957,0.20166 -11.56923,-0.0338 0,0 0,0 0,0 -0.34898,-0.0222 -0.69883,-0.0466 -1.04956,-0.0733 -8.53248,9.52925 -17.17908,19.83139 -24.98315,29.44244 -2.68803,3.31728 -5.16281,6.42873 -7.76338,9.68002 0.62148,-21.5207 2.426,-38.8807 3.80623,-52.85401 -1.05355,-0.95297 -2.09706,-1.91389 -3.13164,-2.88291 -4.42529,-4.02587 -8.70193,-8.15438 -12.91112,-12.32806 0.10702,0.10591 -1.548994,-1.53194 -1.441972,-1.42604 -3.332811,-3.35272 -6.620234,-6.72602 -9.783481,-9.98294 3.78254,0.0702 7.667335,0.0547 11.719883,-0.0945 4.35307,-0.13418 8.89135,-0.50658 13.68078,-1.1747 3.16461,-0.41134 6.46101,-0.93615 9.89003,-1.57947 0.0893,-0.16247 0.17864,-0.32455 0.26802,-0.48625 0.37362,-0.66941 0.74732,-1.33296 1.12077,-1.9908 0,0 1e-5,0 1e-5,0 3.23129,-5.70353 6.04579,-10.84038 8.89872,-16.56722 0,0 0,0 0,0 1.24649,-2.5231 2.41055,-5.03003 3.51163,-7.57094 2.65699,2.06689 5.27301,4.05096 7.84049,5.99182 2.1576,1.59761 4.28569,3.13415 6.39694,4.64685 3.2285,2.3171 6.32983,4.60526 9.22382,6.9035 1.47472,-0.39266 2.93649,-0.79068 4.3928,-1.19245 5.66732,-1.52822 11.58172,-3.27746 17.24904,-4.80568 6.33079,-1.68319 12.81498,-3.13758 19.61946,-4.07322 -0.004,0.004 -0.59972,0.55005 -0.60355,0.55356 0,0 0,0 0,0 -7.54165,6.8894 -14.72471,13.34663 -22.02323,20.99503 1.8e-4,-1.8e-4 -0.22467,0.23592 -0.22449,0.23574 0,0 0,0 0,0 -2.23283,2.40428 -4.45848,4.89135 -6.69561,7.51256 0.78043,4.64657 1.1162,9.55648 1.27025,14.8402 0.14412,5.20521 0.11696,10.68641 0.23054,16.36556 z" + inkscape:transform-center-x="1.9737001" + inkscape:transform-center-y="-2.7208323" /> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/EnvelopeDeformation_multi_px_1_0_2.svg b/testfiles/lpe_tests/EnvelopeDeformation_multi_px_1_0_2.svg new file mode 100644 index 0000000..511ab24 --- /dev/null +++ b/testfiles/lpe_tests/EnvelopeDeformation_multi_px_1_0_2.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="envelope" + id="path-effect41" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="M 48.80433,18.853938 H 122.9452" + bendpath2="m 122.9452,18.853938 c 67.19349,33.820026 32.94292,58.904451 0,84.101482" + bendpath3="M 48.80433,102.95542 H 122.9452" + bendpath4="m 48.80433,18.853938 c -91.912834,22.20358 -45.125946,53.20521 0,84.101482" + bendpath4-nodetypes="cc" + bendpath2-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect39" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="m 13.680256,83.095282 c 64.095465,36.664878 63.031385,2.155511 91.587044,0" + bendpath2="m 105.2673,83.095282 c 168.98396,69.210468 64.39482,75.405318 0,90.858648" + bendpath3="M 13.680256,173.95393 H 105.2673" + bendpath4="M 13.680256,83.095282 V 173.95393" + bendpath2-nodetypes="cc" + bendpath1-nodetypes="cc" /> + <inkscape:path-effect + effect="envelope" + id="path-effect37" + is_visible="true" + lpeversion="1" + yy="true" + xx="true" + bendpath1="m 100.19122,109.26503 c 59.66088,4.3091 107.39936,88.346 180.91577,0" + bendpath2="m 281.10699,109.26503 c 26.78068,59.79683 62.91968,120.88466 0,168.30718" + bendpath3="m 100.19122,277.57221 c 68.04805,54.27753 129.49726,62.29671 180.91577,0" + bendpath4="M 100.19122,109.26503 V 277.57221" + bendpath1-nodetypes="cc" + bendpath2-nodetypes="cc" + bendpath3-nodetypes="cc" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path09" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 161.25784,59.630864 c -0.0441,0.438411 -0.11507,0.874357 -0.21255,1.305832 -0.23936,1.061566 -0.63681,2.090485 -1.18234,3.068656 -1.33818,2.401142 -3.46324,4.407987 -6.08433,6.129791 -1.21485,0.796307 -2.52183,1.517485 -3.88986,2.179881 -4.08556,1.974315 -8.66524,3.37734 -13.07773,4.658382 -1.29215,0.374739 -2.64009,0.756336 -3.89849,1.116662 -6.41357,1.835826 -11.34624,3.346491 -16.1733,5.719256 -4.70409,2.312317 -8.18239,4.923095 -11.6724,7.893607 C 97.969339,97.743953 92.977218,102.9307 85.825604,102.92309 78.638525,102.91543 73.613261,97.734951 65.873169,91.625405 62.053069,88.610056 58.111107,85.912573 52.679955,83.425827 47.105523,80.873479 41.292652,79.115413 33.695075,76.942531 31.477751,76.309063 31.255829,76.248973 29.038505,75.615505 23.751799,74.097006 18.189177,72.443708 13.066914,70.231921 11.345704,69.488879 9.6831007,68.689735 8.0974694,67.815109 4.6843837,65.927287 1.6760084,63.739582 -0.51164799,61.089909 -1.4041165,60.009272 -2.1474096,58.864259 -2.7125149,57.660896 -2.9426304,57.170909 -3.1393872,56.67014 -3.3003967,56.161734 c -0.7310786,-2.308461 -0.7129598,-4.740806 0.2077328,-6.956223 0.2650917,-0.637467 0.6035746,-1.253679 1.0167639,-1.841255 1.15355143,-1.648448 2.82776585,-3.031151 4.812124,-4.133729 2.4388345,-1.357026 5.3018508,-2.273536 8.335088,-2.942909 7e-6,-2e-6 0.03755,-0.0083 0.03755,-0.0083 8.7292,-1.949476 20.302953,-1.741104 27.989776,-2.332196 0.416765,-0.03033 0.829381,-0.06229 1.238218,-0.09612 13.574845,-1.094932 19.909258,-3.997725 27.365614,-9.446971 7.011827,-5.124375 11.760997,-9.576565 18.125265,-9.584388 6.259943,-0.0077 10.627522,4.410014 16.46288,9.668634 6.33194,5.70611 11.27949,8.921354 22.70247,11.46864 0.33914,0.07653 0.68115,0.151833 1.02637,0.226184 6.47889,1.432142 15.85878,2.5459 22.87032,5.151734 -1e-5,-2e-6 0.0295,0.01096 0.0295,0.01096 2.40178,0.883615 4.62055,1.924688 6.52615,3.235626 1.54972,1.061792 2.84244,2.27449 3.82375,3.656719 0.34907,0.491782 0.65677,1.005412 0.92015,1.537022 0.91537,1.842425 1.26827,3.870329 1.06853,5.855743 z" + inkscape:path-effect="#path-effect41" + inkscape:original-d="M 122.9452,60.904677 A 37.070435,42.050739 0 0 1 85.874764,102.95542 37.070435,42.050739 0 0 1 48.80433,60.904677 37.070435,42.050739 0 0 1 85.874764,18.853938 37.070435,42.050739 0 0 1 122.9452,60.904677 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path08" + sodipodi:sides="5" + sodipodi:cx="61.447475" + sodipodi:cy="131.24544" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 106.62224,163.61589 c -1.15243,-1.43162 -2.51311,-2.72739 -4.03267,-3.89516 0,0 0,0 0,0 -0.63587,-0.47084 -1.30449,-0.91626 -2.00606,-1.33651 -3.303619,-1.98327 -7.267473,-3.374 -12.239955,-4.39856 -10e-7,0 -2e-6,0 -2e-6,0 -2.771464,-0.62975 -5.558166,-1.30566 -8.494989,-2.15422 -1.297646,0.45253 -2.57778,0.90447 -3.830141,1.3519 0,0 -3e-6,0 -3e-6,0 -6.340558,2.24926 -11.947661,4.50601 -16.749532,6.72316 -1.35643,0.62642 -2.654746,1.25236 -3.897421,1.87896 0,0 -2e-6,0 -2e-6,0 -6.398327,3.27796 -11.482369,6.66974 -15.59241,10.18758 0.339004,-4.83745 1.644124,-9.45568 3.355673,-13.78936 0,0 0,0 0,0 1.73505,-4.37166 3.937543,-8.56544 6.083054,-12.48345 1.942374,-3.50537 3.683688,-6.68258 4.999748,-9.81524 0.02506,-0.061 0.04969,-0.12171 0.07388,-0.18219 -1.814036,-1.38128 -3.862106,-2.61251 -6.213547,-3.72126 -2.00906,-0.99254 -4.323612,-1.6253 -6.98347,-2.01505 -2.231938,-0.31672 -4.458176,-0.0334 -6.765086,0.6068 -2.057867,0.83068 -3.663409,1.31842 -4.979109,1.43399 10e-7,0 -1e-6,0 -1e-6,0 -1.716965,-0.11803 -3.627502,-1.09132 -5.852636,-2.62426 -3.01437,-2.01402 -6.150535,-4.27404 -9.94655,-7.06255 1.029704,0.22989 2.035102,0.44805 3.020185,0.65477 17.762871,3.72924 30.174597,4.09798 40.875676,3.59321 -0.05829,-1.86332 -0.307374,-3.75822 -0.661723,-5.72354 -0.678996,-4.04541 -1.599481,-8.05749 -2.060071,-12.01182 -0.342334,-3.15938 -0.379429,-6.26132 0.201862,-9.380536 3.477601,3.920946 8.507267,7.588366 14.88693,11.060146 0,0 10e-7,0 10e-7,0 6.814762,3.66505 14.903643,6.96836 23.675441,10.13681 0.745795,0.27341 1.495184,0.5444 2.248701,0.81348 0.230341,0.0803 3.176623,1.10351 3.406964,1.18385 8.794174,-1.7089 16.914974,-3.30332 25.470164,-4.85001 4.47168,-0.7586 9.53625,-1.66671 14.54492,-2.76282 0,0 1e-5,0 1e-5,0 5.67903,-1.25576 12.0373,-2.97771 18.95354,-5.43198 2.32781,6.75717 2.55884,13.00676 0.41421,18.9094 0,0 0,1e-5 0,1e-5 -0.0364,0.0994 -0.0735,0.19863 -0.11134,0.29775 -0.90085,2.30174 -2.28023,4.32375 -4.41648,6.09351 -1.5477,1.26943 -3.3702,1.95856 -5.75017,1.92952 -1.83929,-0.29413 -3.46915,-0.78939 -4.8364,-1.67049 0,0 -1e-5,0 -1e-5,0 -0.0205,-0.0101 -0.0411,-0.0201 -0.0617,-0.03 0,0 0,0 0,0 -1.3093,-0.61415 -2.86518,-0.85466 -4.46434,-0.59829 -0.62277,0.0923 -1.26662,0.19262 -1.93595,0.30681 0.18879,0.53844 0.14422,1.17063 -0.0831,1.91814 -0.38614,1.24221 -1.11893,2.47227 -2.11942,3.74993 0,0 0,0 0,0 -0.64229,0.81162 -1.35029,1.60924 -2.11692,2.39896 -2.21532,2.29187 -4.88938,4.48648 -7.82373,6.73613 0,0 -1e-5,0 -1e-5,0 -4.47471,3.43646 -9.38786,6.85963 -13.96277,10.47115 -1.45245,1.14773 -2.8704,2.31355 -4.22324,3.50134 z" + inkscape:transform-center-x="2.9047658" + inkscape:transform-center-y="-4.5931336" + inkscape:path-effect="#path-effect39" + transform="matrix(1.471736,0,0,1.6881388,-6.453469,-57.181087)" /> + <g + id="g07" + transform="translate(-148.44757,20.389423)" + inkscape:path-effect="#path-effect37"> + <g + id="g06" + transform="translate(14.129121,-23.707025)"> + <path + id="path05" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 201.53594,206.59553 c 0.10205,0.6683 0.18027,1.33911 0.2338,2.01182 0.48505,6.46728 -1.27666,12.81323 -5.49997,18.07597 0,0 0,0 0,0 -2.461,3.10001 -5.62301,5.71952 -9.19728,7.67794 -4.08403,2.24766 -8.63352,3.56395 -13.27218,3.8177 0,0 -1e-5,0 -1e-5,0 -3.69281,0.2252 -7.39625,-0.16271 -11.01929,-1.12429 -3.47823,-0.92315 -6.83156,-2.36081 -10.01424,-4.23299 0,0 0,0 0,0 -3.44822,-2.01497 -6.71158,-4.52454 -9.69528,-7.40921 -4.23673,-4.11129 -7.91581,-9.03933 -10.76006,-14.44513 -3.42914,-6.49561 -5.5624,-13.56173 -6.22813,-20.70209 -0.0765,-0.7896 -0.13495,-1.57634 -0.17528,-2.35916 -0.39802,-7.72529 0.9735,-15.18018 4.10429,-20.60464 2.38315,-4.13525 5.7104,-6.97288 10.01294,-8.14862 3.02578,-0.83428 6.39707,-0.80064 10.04894,-0.0337 0,0 1e-5,0 1e-5,0 3.35873,0.70595 6.8639,2.0146 10.35987,3.69658 3.61499,1.73924 7.23868,3.88763 10.62665,6.16746 0,0 0,0 0,0 4.20934,2.83372 8.32155,6.03155 11.91225,9.18339 3.20653,2.85044 6.24502,5.90305 8.87711,9.06119 0,0 0,0 0,0 4.95386,5.86499 8.60617,12.29681 9.68586,19.36782 z" + inkscape:original-d="M 195.32704,175.0228 A 37.070435,42.050739 0 0 1 158.2566,217.07354 37.070435,42.050739 0 0 1 121.18617,175.0228 37.070435,42.050739 0 0 1 158.2566,132.97206 37.070435,42.050739 0 0 1 195.32704,175.0228 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path04" + sodipodi:sides="5" + sodipodi:cx="133.82932" + sodipodi:cy="245.36356" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 169.25682,305.75963 c -6.61338,-5.41409 -12.6963,-11.24652 -18.63741,-16.99968 -3.12416,-3.01124 -6.17003,-5.93802 -9.2349,-8.74522 -0.28645,-0.2634 -0.5727,-0.52568 -0.8588,-0.78682 -3.30054,1.54421 -6.5505,3.09899 -9.87569,4.69967 -5.35517,2.57929 -10.7783,5.21708 -16.50617,7.9154 1.92494,-12.38701 2.7795,-23.81636 2.91684,-33.17402 0.002,-0.0474 0.0406,-1.04855 0.0425,-1.09599 -1.88554,-1.66244 -3.81782,-3.25133 -5.82333,-4.79719 -6.43969,-4.95671 -13.288229,-9.35123 -21.779759,-14.35369 -0.979943,-0.57777 -1.979134,-1.16184 -2.999902,-1.75424 9.31701,-1.38801 17.406141,-1.86873 24.648621,-2.09293 3.93875,-0.11184 7.69848,-0.11344 11.34365,-0.051 1.05321,-2.23421 2.08657,-4.42499 3.14007,-6.67763 2.46758,-5.31736 4.63497,-10.38776 6.70773,-15.88823 0.14387,-0.38265 0.28671,-0.76596 0.42861,-1.15015 3.38866,5.59302 6.91543,11.34409 10.30408,16.93712 1.28316,2.11583 2.54913,4.22253 3.79694,6.32877 1.05296,1.75021 2.09105,3.46732 3.14375,5.20666 0.86149,0.2657 1.727,0.53208 2.59322,0.79732 6.68573,2.06663 13.63553,4.07775 21.11124,5.66635 10e-6,0 10e-6,0 10e-6,0 3.18779,0.69385 6.4797,1.25959 9.90407,1.67128 -3.49433,2.76219 -6.87666,5.34494 -10.24297,7.89724 0.20054,-0.15377 -2.4348,1.86943 -2.23425,1.71566 -3.44315,2.62839 -6.74102,5.31027 -9.97884,8.1563 0.66363,2.54574 1.33008,5.19391 1.99505,7.96593 2.41069,9.14801 4.19677,19.60729 6.09568,32.60908 z" + inkscape:transform-center-x="1.9737001" + inkscape:transform-center-y="-2.7208323" /> + </g> + <g + id="g03" + transform="translate(85.77995,-10.499836)"> + <path + id="path02" + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.264583" + d="m 218.29599,175.77156 c 2.71604,6.06126 3.68522,12.33007 2.48211,18.46208 -1.20362,6.13455 -4.47184,11.62286 -9.24382,16.51055 -7.17817,7.32713 -17.78379,13.179 -27.40274,16.81977 0,0 0,0 0,0 -1.80284,0.68906 -3.61306,1.30866 -5.41847,1.84898 -4.00369,1.19822 -7.97487,2.00455 -11.8746,2.34118 0,0 0,0 0,0 -4.86912,0.43589 -9.56248,0.16306 -13.99028,-0.85896 -2.36878,-0.55879 -4.60189,-1.34374 -6.68379,-2.33762 -9.90348,-4.83224 -16.34843,-14.22724 -17.73334,-23.87417 -0.44027,-3.06675 -0.37457,-6.14871 0.21592,-9.18613 0,0 0,0 0,0 1.68264,-8.77061 7.44973,-15.91121 15.93129,-23.48523 3.51005,-3.19383 7.56737,-6.52853 11.33891,-9.40828 0,0 0,0 0,0 3.06004,-2.30454 6.23458,-4.56042 9.25553,-6.46187 1.38092,-0.86917 2.75482,-1.68067 4.11715,-2.41555 0,0 0,0 0,0 7.14478,-3.83593 13.79334,-5.27417 21.15414,-3.27338 7.1089,1.93232 14.92905,7.24766 21.12941,14.69988 0,0 1e-5,0 1e-5,0 2.68742,3.2324 5.01965,6.81843 6.72257,10.61875 z" + inkscape:original-d="M 195.32704,175.0228 A 37.070435,42.050739 0 0 1 158.2566,217.07354 37.070435,42.050739 0 0 1 121.18617,175.0228 37.070435,42.050739 0 0 1 158.2566,132.97206 37.070435,42.050739 0 0 1 195.32704,175.0228 Z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.264583" + id="path01" + sodipodi:sides="5" + sodipodi:cx="133.82932" + sodipodi:cy="245.36356" + sodipodi:r1="48.571922" + sodipodi:r2="24.285961" + sodipodi:arg1="0.81059959" + sodipodi:arg2="1.4389181" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 175.28156,290.48697 c -1.32574,0.19453 -2.662,0.39337 -4.05583,0.59309 0,0 0,0 0,0 -4.00374,0.58686 -8.2485,1.12215 -12.88317,1.35599 -3.6557,0.19152 -7.4957,0.20166 -11.56923,-0.0338 0,0 0,0 0,0 -0.34898,-0.0222 -0.69883,-0.0466 -1.04956,-0.0733 -8.53248,9.52924 -17.17908,19.83139 -24.98315,29.44244 -2.68803,3.31728 -5.16281,6.42873 -7.76338,9.68002 0.62148,-21.5207 2.426,-38.8807 3.80623,-52.85402 -1.05355,-0.95296 -2.09706,-1.91388 -3.13164,-2.8829 -4.42529,-4.02587 -8.70193,-8.15438 -12.91112,-12.32806 0.10702,0.1059 -1.548993,-1.53195 -1.441971,-1.42604 -3.332812,-3.35272 -6.620234,-6.72603 -9.783481,-9.98294 3.78254,0.0702 7.667335,0.0547 11.719882,-0.0945 4.35308,-0.13418 8.89135,-0.50659 13.68078,-1.1747 3.16461,-0.41134 6.46101,-0.93615 9.89003,-1.57947 0.0893,-0.16247 0.17864,-0.32455 0.26802,-0.48625 0.37362,-0.66942 0.74732,-1.33296 1.12078,-1.9908 0,0 0,0 0,0 3.23129,-5.70353 6.04579,-10.84038 8.89872,-16.56722 0,0 0,0 0,0 1.24649,-2.5231 2.41055,-5.03003 3.51163,-7.57094 2.65699,2.06689 5.27301,4.05096 7.84049,5.99182 2.1576,1.5976 4.28569,3.13415 6.39694,4.64685 3.2285,2.3171 6.32983,4.60526 9.22382,6.9035 1.47473,-0.39266 2.93649,-0.79068 4.3928,-1.19245 5.66732,-1.52822 11.58172,-3.27746 17.24904,-4.80568 6.33079,-1.68319 12.81498,-3.13758 19.61947,-4.07322 -0.004,0.004 -0.59973,0.55005 -0.60356,0.55356 0,0 0,0 0,0 -7.54165,6.8894 -14.72471,13.34663 -22.02323,20.99503 1.8e-4,-1.8e-4 -0.22467,0.23592 -0.22449,0.23574 0,0 0,0 0,0 -2.23283,2.40428 -4.45848,4.89135 -6.69561,7.51256 0.78043,4.64657 1.1162,9.55648 1.27025,14.8402 0.14412,5.20521 0.11696,10.68641 0.23054,16.36556 z" + inkscape:transform-center-x="1.9737001" + inkscape:transform-center-y="-2.7208323" /> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FillBetweenMany_multi_0_92_5.svg b/testfiles/lpe_tests/FillBetweenMany_multi_0_92_5.svg new file mode 100644 index 0000000..1e49184 --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenMany_multi_0_92_5.svg @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.001"> + <defs + id="defs2"> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect3734" + is_visible="true" + linkedpaths="#path04,0|#path03,1|#path01,0" + allow_transforms="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect3730" + is_visible="true" /> + <inkscape:path-effect + effect="bspline" + id="path-effect3726" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 22.678571,108.0119 C 33.262024,79.789361 43.845357,51.567141 64.507858,47.0315 c 20.6625,-4.535641 51.404912,14.615369 66.397932,37.419746 14.99303,22.804374 14.23707,49.262764 13.48111,75.721374" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3726" + inkscape:original-d="M 22.678571,108.0119 C 33.26217,79.789416 43.845503,51.567196 54.428572,23.345238 c 30.741979,19.150311 61.484388,38.301323 92.226188,57.452381 -0.75569,26.458011 -1.51164,52.916401 -2.26786,79.375001" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -5.2916666,156.39285 c -27.1522684,-2.14561 -54.9036854,3.99173 -78.6190474,17.38691 -17.285636,9.76347 -32.633686,23.59057 -42.023916,41.08178 -9.39022,17.4912 -12.36827,38.82308 -5.84774,57.57411 3.26026,9.37552 8.83518,17.97722 16.27365,24.5498 7.43846,6.57259 16.746289,11.07105 26.567807,12.50891 9.821519,1.43785 20.121775,-0.23727 28.838558,-4.98567 8.716783,-4.74841 15.765782,-12.58882 19.280928,-21.87178 2.825705,-7.46226 3.362292,-15.60038 3.126311,-23.57623 -0.235981,-7.97585 -1.212894,-15.92101 -1.291112,-23.89997 -0.07822,-7.97895 0.786954,-16.12082 4.050139,-23.40241 1.631592,-3.64079 3.859137,-7.03318 6.696338,-9.83814 2.8372,-2.80495 6.293815,-5.01194 10.096894,-6.21778 5.786689,-1.83479 12.1869269,-1.27081 17.83350099,0.95819 5.64657411,2.229 10.57523701,6.04272 14.67107801,10.52338 8.191683,8.96131 13.069404,20.36433 19.084158,30.91097 3.007377,5.27332 6.347451,10.39822 10.486716,14.83879 4.139265,4.44058 9.120739,8.19245 14.802733,10.32954 5.681994,2.13709 12.098574,2.57639 17.842098,0.61064 2.871762,-0.98287 5.549393,-2.55576 7.748875,-4.64749 2.199481,-2.09173 3.913275,-4.705 4.876079,-7.58355 1.822459,-5.44871 0.864697,-11.51833 -1.409699,-16.7944 -2.274395,-5.27607 -5.776321,-9.91315 -9.21537,-14.51562 -3.43905,-4.60247 -6.88547,-9.29212 -9.023794,-14.62479 -1.069163,-2.66634 -1.799962,-5.48228 -1.988053,-8.34882 -0.18809,-2.86654 0.176466,-5.78637 1.226201,-8.46041 2.059289,-5.24573 6.856736,-9.32631 12.364911,-10.51727 5.508175,-1.19096 11.562868,0.54322 15.605328,4.46965" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3730" + inkscape:original-d="m -5.2916666,156.39285 c -26.2060844,5.79538 -52.4124334,11.59101 -78.6190474,17.38691 -26.206616,5.7959 28.726455,72.57116 43.089287,108.85715 14.362829,36.28596 15.119311,-57.95662 22.67857,-86.93453 7.559259,-28.97791 71.563755,37.29338 107.345238,55.94047 35.781479,18.64709 -13.606878,-41.82962 -20.410715,-62.74404 -6.803837,-20.91442 18.647089,-4.03201 27.970239,-6.04762" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 22.678571,108.0119 C 33.262024,79.789361 43.845357,51.567141 64.507858,47.0315 c 20.6625,-4.535641 51.404912,14.615369 66.397932,37.419746 14.99303,22.804374 14.23707,49.262764 13.48111,75.721374 l -47.624995,22.67857 c -4.04246,-3.92643 -10.097153,-5.66061 -15.605328,-4.46965 -5.508175,1.19096 -10.305622,5.27154 -12.364911,10.51727 -1.049735,2.67404 -1.414291,5.59387 -1.226201,8.46041 0.188091,2.86654 0.91889,5.68248 1.988053,8.34882 2.138324,5.33267 5.584744,10.02232 9.023794,14.62479 3.439049,4.60247 6.940975,9.23955 9.21537,14.51562 2.274396,5.27607 3.232158,11.34569 1.409699,16.7944 -0.962804,2.87855 -2.676598,5.49182 -4.876079,7.58355 -2.199482,2.09173 -4.877113,3.66462 -7.748875,4.64749 -5.743524,1.96575 -12.160104,1.52645 -17.842098,-0.61064 -5.681994,-2.13709 -10.663468,-5.88896 -14.802733,-10.32954 -4.139265,-4.44057 -7.479339,-9.56547 -10.486716,-14.83879 -6.014754,-10.54664 -10.892475,-21.94966 -19.084158,-30.91097 -4.095841,-4.48066 -9.0245039,-8.29438 -14.67107801,-10.52338 -5.64657409,-2.229 -12.04681199,-2.79298 -17.83350099,-0.95819 -3.803079,1.20584 -7.259694,3.41283 -10.096894,6.21778 -2.837201,2.80496 -5.064746,6.19735 -6.696338,9.83814 -3.263185,7.28159 -4.128357,15.42346 -4.050139,23.40241 0.07822,7.97896 1.055131,15.92412 1.291112,23.89997 0.235981,7.97585 -0.300606,16.11397 -3.126311,23.57623 -3.515146,9.28296 -10.564145,17.12337 -19.280928,21.87178 -8.716783,4.7484 -19.017039,6.42352 -28.838558,4.98567 -9.821518,-1.43786 -19.129347,-5.93632 -26.567807,-12.50891 -7.43847,-6.57258 -13.01339,-15.17428 -16.27365,-24.5498 -6.52053,-18.75103 -3.54248,-40.08291 5.84774,-57.57411 9.39023,-17.49121 24.73828,-31.31831 42.023916,-41.08178 23.715362,-13.39518 51.466779,-19.53252 78.6190474,-17.38691 L -61.232142,118.59524 -120.95238,21.077381 -43.089284,-17.47619 0.75595238,55.851189 Z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3734" + inkscape:original-d="m -11.339286,80.041667 c 0,-3.779763 -60.476189,-65.767858 -60.476189,-65.767858 l -60.476185,65.767858 59.720233,47.625003 55.184522,-9.07143" + transform="translate(36.285714,28.72619)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M -61.232142,118.59524 -120.95238,21.077381 -43.089284,-17.47619 0.75595238,55.851189" + id="path01" + inkscape:connector-curvature="0" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FillBetweenMany_multi_mm_1_0_2.svg b/testfiles/lpe_tests/FillBetweenMany_multi_mm_1_0_2.svg new file mode 100644 index 0000000..a05e76c --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenMany_multi_mm_1_0_2.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect152" + is_visible="true" + linkedpaths="#path04,1,1|#path03,1,1|#path01,0,1" + allow_transforms="false" + join="true" + close="true" + autoreverse="true" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect134" + is_visible="true" + linkedpaths="#path04,0,1|#path03,1,1|#path01,0,1" + allow_transforms="false" + join="true" + close="true" + autoreverse="false" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect130" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect126" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect3734" + is_visible="true" + linkedpaths="#path04,0,1|#path03,0,1|#path01,0,1" + allow_transforms="false" + join="false" + close="false" + autoreverse="false" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect3730" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect3726" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 161.85997,122.26608 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804373 14.23707,49.262763 13.48111,75.721373" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3726" + inkscape:original-d="m 161.85997,122.26608 c 10.5836,-28.222479 21.16693,-56.444702 31.75,-84.66666 30.74199,19.15031 61.48439,38.301323 92.22619,57.452381 -0.75569,26.458009 -1.51164,52.916399 -2.26786,79.374999" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 133.88973,170.64703 c -27.15227,-2.1456 -54.903679,3.99173 -78.619039,17.38691 -17.285637,9.76347 -32.63369,23.59057 -42.023912,41.08177 -9.3902218,17.49121 -12.36827197,38.82308 -5.8477502,57.57412 3.2602612,9.37552 8.8351842,17.97721 16.2736492,24.5498 7.438466,6.57258 16.746289,11.07105 26.567807,12.5089 9.821518,1.43786 20.121775,-0.23726 28.838558,-4.98566 8.716782,-4.74841 15.765781,-12.58882 19.280928,-21.87178 2.825709,-7.46225 3.362289,-15.60038 3.126309,-23.57623 -0.23598,-7.97585 -1.21289,-15.92101 -1.29111,-23.89996 -0.0782,-7.97896 0.78695,-16.12083 4.05014,-23.40242 1.63159,-3.64079 3.85914,-7.03318 6.69634,-9.83814 2.8372,-2.80495 6.29381,-5.01194 10.09689,-6.21778 5.78669,-1.83479 12.18693,-1.27081 17.8335,0.95819 5.64658,2.22899 10.57524,6.04272 14.67108,10.52338 8.19169,8.96131 13.06941,20.36433 19.08416,30.91097 3.00738,5.27332 6.34746,10.39822 10.48672,14.8388 4.13927,4.44057 9.12074,8.19244 14.80274,10.32953 5.68199,2.13709 12.09857,2.57639 17.8421,0.61064 2.87176,-0.98287 5.54939,-2.55575 7.74887,-4.64749 2.19948,-2.09173 3.91328,-4.705 4.87608,-7.58355 1.82246,-5.44871 0.8647,-11.51833 -1.4097,-16.7944 -2.2744,-5.27607 -5.77632,-9.91315 -9.21537,-14.51562 -3.43905,-4.60247 -6.88547,-9.29212 -9.0238,-14.62479 -1.06916,-2.66634 -1.79996,-5.48228 -1.98805,-8.34882 -0.18809,-2.86654 0.17646,-5.78637 1.2262,-8.46041 2.05929,-5.24573 6.85674,-9.32632 12.36491,-10.51727 5.50818,-1.19096 11.56287,0.54322 15.60533,4.46965" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3730" + inkscape:original-d="m 133.88973,170.64703 c -26.20608,5.79538 -52.412429,11.59101 -78.619039,17.38691 -26.20662,5.7959 28.72645,72.57116 43.08928,108.85715 14.362829,36.28596 15.119309,-57.95662 22.678569,-86.93453 7.55926,-28.97791 71.56376,37.29338 107.34525,55.94047 35.78147,18.64709 -13.60688,-41.82962 -20.41072,-62.74404 -6.80384,-20.91442 18.64709,-4.03201 27.97024,-6.04762" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 161.85997,122.26608 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804373 14.23707,49.262763 13.48111,75.721373 l -47.62499,22.67857 c -4.04246,-3.92643 -10.09715,-5.66061 -15.60533,-4.46965 -5.50817,1.19095 -10.30562,5.27154 -12.36491,10.51727 -1.04974,2.67404 -1.41429,5.59387 -1.2262,8.46041 0.18809,2.86654 0.91889,5.68248 1.98805,8.34882 2.13833,5.33267 5.58475,10.02232 9.0238,14.62479 3.43905,4.60247 6.94097,9.23955 9.21537,14.51562 2.2744,5.27607 3.23216,11.34569 1.4097,16.7944 -0.9628,2.87855 -2.6766,5.49182 -4.87608,7.58355 -2.19948,2.09174 -4.87711,3.66462 -7.74887,4.64749 -5.74353,1.96575 -12.16011,1.52645 -17.8421,-0.61064 -5.682,-2.13709 -10.66347,-5.88896 -14.80274,-10.32953 -4.13926,-4.44058 -7.47934,-9.56548 -10.48672,-14.8388 -6.01475,-10.54664 -10.89247,-21.94966 -19.08416,-30.91097 -4.09584,-4.48066 -9.0245,-8.29439 -14.67108,-10.52338 -5.64657,-2.229 -12.04681,-2.79298 -17.8335,-0.95819 -3.80308,1.20584 -7.25969,3.41283 -10.09689,6.21778 -2.8372,2.80496 -5.06475,6.19735 -6.69634,9.83814 -3.26319,7.28159 -4.12836,15.42346 -4.05014,23.40242 0.0782,7.97895 1.05513,15.92411 1.29111,23.89996 0.23598,7.97585 -0.3006,16.11398 -3.126309,23.57623 -3.515147,9.28296 -10.564146,17.12337 -19.280928,21.87178 -8.716783,4.7484 -19.01704,6.42352 -28.838558,4.98566 -9.821518,-1.43785 -19.129341,-5.93632 -26.567807,-12.5089 -7.438465,-6.57259 -13.013388,-15.17428 -16.2736492,-24.5498 -6.52052177,-18.75104 -3.5424716,-40.08291 5.8477502,-57.57412 9.390222,-17.4912 24.738275,-31.3183 42.023912,-41.08177 23.71536,-13.39518 51.466769,-19.53251 78.619039,-17.38691 L 77.949261,132.84942 18.229021,35.331563 96.092121,-3.2220086 139.93735,70.105371 Z" + id="path06" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect134" + inkscape:original-d="m 916.5197,-97.499061 c 0,-3.779759 -60.47619,-65.767849 -60.47619,-65.767849 l -60.47618,65.767849 59.72023,47.625004 55.18452,-9.071434" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 161.85997,122.26608 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804373 14.23707,49.262763 13.48111,75.721373 m -149.67857,-3.77977 c -27.15227,-2.1456 -54.903679,3.99173 -78.619039,17.38691 -17.285637,9.76347 -32.63369,23.59057 -42.023912,41.08177 -9.3902218,17.49121 -12.36827197,38.82308 -5.8477502,57.57412 3.2602612,9.37552 8.8351842,17.97721 16.2736492,24.5498 7.438466,6.57258 16.746289,11.07105 26.567807,12.5089 9.821518,1.43786 20.121775,-0.23726 28.838558,-4.98566 8.716782,-4.74841 15.765781,-12.58882 19.280928,-21.87178 2.825709,-7.46225 3.362289,-15.60038 3.126309,-23.57623 -0.23598,-7.97585 -1.21289,-15.92101 -1.29111,-23.89996 -0.0782,-7.97896 0.78695,-16.12083 4.05014,-23.40242 1.63159,-3.64079 3.85914,-7.03318 6.69634,-9.83814 2.8372,-2.80495 6.29381,-5.01194 10.09689,-6.21778 5.78669,-1.83479 12.18693,-1.27081 17.8335,0.95819 5.64658,2.22899 10.57524,6.04272 14.67108,10.52338 8.19169,8.96131 13.06941,20.36433 19.08416,30.91097 3.00738,5.27332 6.34746,10.39822 10.48672,14.8388 4.13927,4.44057 9.12074,8.19244 14.80274,10.32953 5.68199,2.13709 12.09857,2.57639 17.8421,0.61064 2.87176,-0.98287 5.54939,-2.55575 7.74887,-4.64749 2.19948,-2.09173 3.91328,-4.705 4.87608,-7.58355 1.82246,-5.44871 0.8647,-11.51833 -1.4097,-16.7944 -2.2744,-5.27607 -5.77632,-9.91315 -9.21537,-14.51562 -3.43905,-4.60247 -6.88547,-9.29212 -9.0238,-14.62479 -1.06916,-2.66634 -1.79996,-5.48228 -1.98805,-8.34882 -0.18809,-2.86654 0.17646,-5.78637 1.2262,-8.46041 2.05929,-5.24573 6.85674,-9.32632 12.36491,-10.51727 5.50818,-1.19096 11.56287,0.54322 15.60533,4.46965 M 77.949261,132.84942 18.229021,35.331563 96.092121,-3.2220086 139.93735,70.105371" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3734" + inkscape:original-d="m 1379.6776,-24.629157 c 0,-3.779763 -60.4762,-65.767854 -60.4762,-65.767854 l -60.4761,65.767854 59.7202,47.625006 55.1845,-9.071432" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 77.949261,132.84942 18.229021,35.331563 96.092121,-3.2220086 139.93735,70.105371" + id="path01" + inkscape:connector-curvature="0" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 161.85997,122.26608 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804373 14.23707,49.262763 13.48111,75.721373 l -47.62499,22.67857 c -4.04246,-3.92643 -10.09715,-5.66061 -15.60533,-4.46965 -5.50817,1.19095 -10.30562,5.27154 -12.36491,10.51727 -1.04974,2.67404 -1.41429,5.59387 -1.2262,8.46041 0.18809,2.86654 0.91889,5.68248 1.98805,8.34882 2.13833,5.33267 5.58475,10.02232 9.0238,14.62479 3.43905,4.60247 6.94097,9.23955 9.21537,14.51562 2.2744,5.27607 3.23216,11.34569 1.4097,16.7944 -0.9628,2.87855 -2.6766,5.49182 -4.87608,7.58355 -2.19948,2.09174 -4.87711,3.66462 -7.74887,4.64749 -5.74353,1.96575 -12.16011,1.52645 -17.8421,-0.61064 -5.682,-2.13709 -10.66347,-5.88896 -14.80274,-10.32953 -4.13926,-4.44058 -7.47934,-9.56548 -10.48672,-14.8388 -6.01475,-10.54664 -10.89247,-21.94966 -19.08416,-30.91097 -4.09584,-4.48066 -9.0245,-8.29439 -14.67108,-10.52338 -5.64657,-2.229 -12.04681,-2.79298 -17.8335,-0.95819 -3.80308,1.20584 -7.25969,3.41283 -10.09689,6.21778 -2.8372,2.80496 -5.06475,6.19735 -6.69634,9.83814 -3.26319,7.28159 -4.12836,15.42346 -4.05014,23.40242 0.0782,7.97895 1.05513,15.92411 1.29111,23.89996 0.23598,7.97585 -0.3006,16.11398 -3.126309,23.57623 -3.515147,9.28296 -10.564146,17.12337 -19.280928,21.87178 -8.716783,4.7484 -19.01704,6.42352 -28.838558,4.98566 -9.821518,-1.43785 -19.129341,-5.93632 -26.567807,-12.5089 -7.438465,-6.57259 -13.013388,-15.17428 -16.2736492,-24.5498 -6.52052177,-18.75104 -3.5424716,-40.08291 5.8477502,-57.57412 9.390222,-17.4912 24.738275,-31.3183 42.023912,-41.08177 23.71536,-13.39518 51.466769,-19.53251 78.619039,-17.38691 L 139.93735,70.105371 96.092121,-3.2220086 18.229021,35.331563 77.949261,132.84942 Z" + id="path05" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect152" + inkscape:original-d="m 1379.6776,-24.629157 c 0,-3.779763 -60.4762,-65.767854 -60.4762,-65.767854 l -60.4761,65.767854 59.7202,47.625006 55.1845,-9.071432" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FillBetweenMany_multi_px_1_0_2.svg b/testfiles/lpe_tests/FillBetweenMany_multi_px_1_0_2.svg new file mode 100644 index 0000000..316df7b --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenMany_multi_px_1_0_2.svg @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870, 2021-01-15)" + sodipodi:docname="FillBetweenMany_multi_px_1_0_2.svg"> + <metadata + id="metadata79"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1011" + id="namedview77" + showgrid="false" + inkscape:zoom="1.544" + inkscape:cx="3.1338782" + inkscape:cy="87.806634" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect152" + is_visible="true" + linkedpaths="#path04,1,1|#path03,1,1|#path01,0,1" + allow_transforms="false" + join="true" + close="true" + autoreverse="true" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect134" + is_visible="true" + linkedpaths="#path04,0,1|#path03,1,1|#path01,0,1" + allow_transforms="false" + join="true" + close="true" + autoreverse="false" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect130" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect126" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="fill_between_many" + id="path-effect3734" + is_visible="true" + linkedpaths="#path04,0,1|#path03,0,1|#path01,0,1" + allow_transforms="false" + join="false" + close="false" + autoreverse="false" + method="bsplinespiro" + lpeversion="1" + applied="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect3730" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect3726" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 164.58461,84.581377 C 175.16806,56.358842 185.7514,28.136621 206.4139,23.600982 227.0764,19.065343 257.81881,38.216349 272.81183,61.020724 287.80486,83.8251 287.0489,110.28349 286.29294,136.7421" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3726" + inkscape:original-d="m 164.58461,84.581377 c 10.5836,-28.222479 21.16693,-56.444702 31.75,-84.66665955 C 227.0766,19.065027 257.819,38.21604 288.5608,57.367098 287.80511,83.825107 287.04916,110.2835 286.29294,136.7421" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 136.61437,132.96233 c -27.15226,-2.1456 -54.903677,3.99173 -78.619037,17.38691 -17.285637,9.76347 -32.633689,23.59056 -42.023911,41.08177 -9.3902227,17.49121 -12.3682734,38.82308 -5.847752,57.57412 3.26026,9.37551 8.835183,17.97721 16.273648,24.5498 7.438465,6.57258 16.746289,11.07104 26.567806,12.5089 9.821518,1.43786 20.121774,-0.23726 28.838557,-4.98566 8.716783,-4.74841 15.765782,-12.58882 19.280929,-21.87178 2.82571,-7.46225 3.36229,-15.60038 3.12631,-23.57623 -0.23598,-7.97585 -1.21289,-15.92101 -1.29111,-23.89996 -0.0782,-7.97896 0.78695,-16.12083 4.05014,-23.40242 1.63159,-3.64079 3.85914,-7.03318 6.69634,-9.83814 2.8372,-2.80495 6.29381,-5.01194 10.09689,-6.21778 5.78669,-1.83479 12.18693,-1.27081 17.8335,0.95819 5.64658,2.22899 10.57524,6.04272 14.67108,10.52338 8.19169,8.96131 13.06941,20.36433 19.08416,30.91097 3.00738,5.27332 6.34746,10.39822 10.48672,14.8388 4.13927,4.44057 9.12074,8.19244 14.80274,10.32953 5.68199,2.13709 12.09857,2.57639 17.8421,0.61064 2.87176,-0.98287 5.54939,-2.55575 7.74887,-4.64749 2.19948,-2.09173 3.91328,-4.705 4.87608,-7.58355 1.82246,-5.44871 0.8647,-11.51833 -1.4097,-16.7944 -2.2744,-5.27607 -5.77632,-9.91315 -9.21537,-14.51562 -3.43905,-4.60247 -6.88547,-9.29212 -9.0238,-14.62479 -1.06916,-2.66634 -1.79996,-5.48228 -1.98805,-8.34882 -0.18809,-2.86654 0.17646,-5.78637 1.2262,-8.46041 2.05929,-5.24573 6.85674,-9.32632 12.36491,-10.51727 5.50818,-1.19096 11.56287,0.54322 15.60533,4.46965" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3730" + inkscape:original-d="m 136.61437,132.96233 c -26.20608,5.79538 -52.412427,11.59101 -78.619037,17.38691 -26.20662,5.7959 28.72645,72.57116 43.089277,108.85715 14.36283,36.28596 15.11931,-57.95662 22.67857,-86.93453 7.55926,-28.97791 71.56376,37.29338 107.34525,55.94047 35.78147,18.64709 -13.60688,-41.82962 -20.41072,-62.74404 -6.80384,-20.91442 18.64709,-4.03201 27.97024,-6.04762" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 164.58461,84.581377 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804376 14.23707,49.262766 13.48111,75.721376 l -47.62499,22.67857 c -4.04246,-3.92643 -10.09715,-5.66061 -15.60533,-4.46965 -5.50817,1.19095 -10.30562,5.27154 -12.36491,10.51727 -1.04974,2.67404 -1.41429,5.59387 -1.2262,8.46041 0.18809,2.86654 0.91889,5.68248 1.98805,8.34882 2.13833,5.33267 5.58475,10.02232 9.0238,14.62479 3.43905,4.60247 6.94097,9.23955 9.21537,14.51562 2.2744,5.27607 3.23216,11.34569 1.4097,16.7944 -0.9628,2.87855 -2.6766,5.49182 -4.87608,7.58355 -2.19948,2.09174 -4.87711,3.66462 -7.74887,4.64749 -5.74353,1.96575 -12.16011,1.52645 -17.8421,-0.61064 -5.682,-2.13709 -10.66347,-5.88896 -14.80274,-10.32953 -4.13926,-4.44058 -7.47934,-9.56548 -10.48672,-14.8388 -6.01475,-10.54664 -10.89247,-21.94966 -19.08416,-30.91097 -4.09584,-4.48066 -9.0245,-8.29439 -14.67108,-10.52338 -5.64657,-2.229 -12.04681,-2.79298 -17.8335,-0.95819 -3.80308,1.20584 -7.25969,3.41283 -10.09689,6.21778 -2.8372,2.80496 -5.06475,6.19735 -6.69634,9.83814 -3.26319,7.28159 -4.12836,15.42346 -4.05014,23.40242 0.0782,7.97895 1.05513,15.92411 1.29111,23.89996 0.23598,7.97585 -0.3006,16.11398 -3.12631,23.57623 -3.515147,9.28296 -10.564146,17.12337 -19.280929,21.87178 -8.716783,4.7484 -19.017039,6.42352 -28.838557,4.98566 -9.821517,-1.43786 -19.129341,-5.93632 -26.567806,-12.5089 -7.438465,-6.57259 -13.013388,-15.17429 -16.273648,-24.5498 -6.5205214,-18.75104 -3.5424707,-40.08291 5.847752,-57.57412 9.390222,-17.49121 24.738274,-31.3183 42.023911,-41.08177 23.71536,-13.39518 51.466777,-19.53251 78.619037,-17.38691 L 80.673903,95.164717 20.953663,-2.3531396 98.816761,-40.906712 142.66199,32.420668 Z" + id="path06" + inkscape:test-ignore="true" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect134" + inkscape:original-d="m 710.18478,-139.75065 c 0,-3.77975 -60.47619,-65.76784 -60.47619,-65.76784 l -60.47618,65.76784 59.72023,47.625008 55.18452,-9.071428" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 164.58461,84.581377 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804376 14.23707,49.262766 13.48111,75.721376 m -149.67857,-3.77977 c -27.15226,-2.1456 -54.903677,3.99173 -78.619037,17.38691 -17.285637,9.76347 -32.633689,23.59056 -42.023911,41.08177 -9.3902227,17.49121 -12.3682734,38.82308 -5.847752,57.57412 3.26026,9.37551 8.835183,17.97721 16.273648,24.5498 7.438465,6.57258 16.746289,11.07104 26.567806,12.5089 9.821518,1.43786 20.121774,-0.23726 28.838557,-4.98566 8.716783,-4.74841 15.765782,-12.58882 19.280929,-21.87178 2.82571,-7.46225 3.36229,-15.60038 3.12631,-23.57623 -0.23598,-7.97585 -1.21289,-15.92101 -1.29111,-23.89996 -0.0782,-7.97896 0.78695,-16.12083 4.05014,-23.40242 1.63159,-3.64079 3.85914,-7.03318 6.69634,-9.83814 2.8372,-2.80495 6.29381,-5.01194 10.09689,-6.21778 5.78669,-1.83479 12.18693,-1.27081 17.8335,0.95819 5.64658,2.22899 10.57524,6.04272 14.67108,10.52338 8.19169,8.96131 13.06941,20.36433 19.08416,30.91097 3.00738,5.27332 6.34746,10.39822 10.48672,14.8388 4.13927,4.44057 9.12074,8.19244 14.80274,10.32953 5.68199,2.13709 12.09857,2.57639 17.8421,0.61064 2.87176,-0.98287 5.54939,-2.55575 7.74887,-4.64749 2.19948,-2.09173 3.91328,-4.705 4.87608,-7.58355 1.82246,-5.44871 0.8647,-11.51833 -1.4097,-16.7944 -2.2744,-5.27607 -5.77632,-9.91315 -9.21537,-14.51562 -3.43905,-4.60247 -6.88547,-9.29212 -9.0238,-14.62479 -1.06916,-2.66634 -1.79996,-5.48228 -1.98805,-8.34882 -0.18809,-2.86654 0.17646,-5.78637 1.2262,-8.46041 2.05929,-5.24573 6.85674,-9.32632 12.36491,-10.51727 5.50818,-1.19096 11.56287,0.54322 15.60533,4.46965 M 80.673903,95.164717 20.953663,-2.3531396 98.816761,-40.906712 142.66199,32.420668" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect3734" + inkscape:original-d="m 1382.4022,-62.313862 c 0,-3.77976 -60.4762,-65.767848 -60.4762,-65.767848 l -60.4761,65.767848 59.7202,47.625008 55.1845,-9.071432" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 80.673903,95.164717 20.953663,-2.3531396 98.816761,-40.906712 142.66199,32.420668" + id="path01" + inkscape:connector-curvature="0" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 164.58461,84.581377 c 10.58345,-28.222535 21.16679,-56.444756 41.82929,-60.980395 20.6625,-4.535639 51.40491,14.615367 66.39793,37.419742 14.99303,22.804376 14.23707,49.262766 13.48111,75.721376 l -47.62499,22.67857 c -4.04246,-3.92643 -10.09715,-5.66061 -15.60533,-4.46965 -5.50817,1.19095 -10.30562,5.27154 -12.36491,10.51727 -1.04974,2.67404 -1.41429,5.59387 -1.2262,8.46041 0.18809,2.86654 0.91889,5.68248 1.98805,8.34882 2.13833,5.33267 5.58475,10.02232 9.0238,14.62479 3.43905,4.60247 6.94097,9.23955 9.21537,14.51562 2.2744,5.27607 3.23216,11.34569 1.4097,16.7944 -0.9628,2.87855 -2.6766,5.49182 -4.87608,7.58355 -2.19948,2.09174 -4.87711,3.66462 -7.74887,4.64749 -5.74353,1.96575 -12.16011,1.52645 -17.8421,-0.61064 -5.682,-2.13709 -10.66347,-5.88896 -14.80274,-10.32953 -4.13926,-4.44058 -7.47934,-9.56548 -10.48672,-14.8388 -6.01475,-10.54664 -10.89247,-21.94966 -19.08416,-30.91097 -4.09584,-4.48066 -9.0245,-8.29439 -14.67108,-10.52338 -5.64657,-2.229 -12.04681,-2.79298 -17.8335,-0.95819 -3.80308,1.20584 -7.25969,3.41283 -10.09689,6.21778 -2.8372,2.80496 -5.06475,6.19735 -6.69634,9.83814 -3.26319,7.28159 -4.12836,15.42346 -4.05014,23.40242 0.0782,7.97895 1.05513,15.92411 1.29111,23.89996 0.23598,7.97585 -0.3006,16.11398 -3.12631,23.57623 -3.515147,9.28296 -10.564146,17.12337 -19.280929,21.87178 -8.716783,4.7484 -19.017039,6.42352 -28.838557,4.98566 -9.821517,-1.43786 -19.129341,-5.93632 -26.567806,-12.5089 -7.438465,-6.57259 -13.013388,-15.17429 -16.273648,-24.5498 -6.5205214,-18.75104 -3.5424707,-40.08291 5.847752,-57.57412 9.390222,-17.49121 24.738274,-31.3183 42.023911,-41.08177 23.71536,-13.39518 51.466777,-19.53251 78.619037,-17.38691 L 142.66199,32.420668 98.816761,-40.906712 20.953663,-2.3531396 80.673903,95.164717 Z" + id="path05" + inkscape:test-ignore="true" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect152" + inkscape:original-d="m 2020.2653,-269.29961 c 0,-3.77977 -60.4762,-65.76786 -60.4762,-65.76786 l -60.4761,65.76786 59.7202,47.625 55.1845,-9.07143" /> + </g> +</svg> diff --git a/testfiles/lpe_tests/FillBetweenStrokes_path_0_92_5.svg b/testfiles/lpe_tests/FillBetweenStrokes_path_0_92_5.svg new file mode 100644 index 0000000..bf8c35e --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenStrokes_path_0_92_5.svg @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg45" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.01"> + <defs + id="defs39"> + <inkscape:path-effect + effect="bspline" + id="path-effect78" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="bspline" + id="path-effect58" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="fill_between_strokes" + id="path-effect54" + is_visible="true" + linkedpath="#path01" + secondpath="#path03" + reversesecond="true" /> + <inkscape:path-effect + effect="fill_between_strokes" + id="path-effect50" + is_visible="true" + linkedpath="" + secondpath="" + reversesecond="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 12.85119,220.64881 c 34.018071,5.79567 68.035927,11.5913 87.31261,-3.27581 19.27668,-14.86712 23.81242,-50.39711 18.14298,-62.74433 -5.66944,-12.34722 -21.544573,-1.51181 -37.419875,9.32371" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect58" + inkscape:original-d="m 12.85119,220.64881 c 34.018122,5.79537 68.035979,11.591 102.05357,17.3869 4.53595,-35.5298 9.07169,-71.05979 13.60714,-106.58928 -15.8746,10.83496 -31.749731,21.67037 -47.624995,32.50595" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -57.452381,182.09524 c -13.10322,-20.91476 -26.206393,-41.82944 -15.371,-50.01888 10.835394,-8.18944 45.609322,-3.65371 64.3819922,3.40171 18.7726698,7.05542 21.5445138,16.63088 24.3163888,26.20645 l 65.011905,2.26786 c 15.875302,-10.83552 31.750435,-21.67093 37.419875,-9.32371 5.66944,12.34722 1.1337,47.87721 -18.14298,62.74433 -19.276683,14.86711 -53.294539,9.07148 -87.31261,3.27581" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect54" + inkscape:original-d="M 2.2678571,188.89881 -88.446426,105.74405 60.47619,151.85714" + transform="translate(60.47619,-105.07738)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -57.452381,182.09524 c -13.10322,-20.91476 -26.206393,-41.82944 -15.371,-50.01888 10.835394,-8.18944 45.609322,-3.65371 64.3819922,3.40171 18.7726698,7.05542 21.5445138,16.63088 24.3163888,26.20645" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect78" + inkscape:original-d="m -57.452381,182.09524 c -13.10291,-20.91495 -26.206085,-41.82963 -39.309524,-62.74405 34.773957,4.53543 69.547885,9.07116 104.3214288,13.60714 2.7720722,9.57507 5.5439152,19.15053 8.3154762,28.72619" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FillBetweenStrokes_path_multi_mm_1_0_2.svg b/testfiles/lpe_tests/FillBetweenStrokes_path_multi_mm_1_0_2.svg new file mode 100644 index 0000000..80d33e5 --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenStrokes_path_multi_mm_1_0_2.svg @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + inkscape:test-threshold="0.01"> + <defs + id="defs2"> + <inkscape:path-effect + effect="spiro" + id="path-effect51" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="spiro" + id="path-effect28" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="fill_between_strokes" + id="path-effect24" + is_visible="true" + lpeversion="1" + linkedpath="#path03" + secondpath="#path01" + reversesecond="true" + join="true" + close="true" /> + <inkscape:path-effect + effect="spiro" + id="path-effect22" + is_visible="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 45.577369,130.63608 c 11.425366,22.13704 25.467015,42.92234 41.739291,61.78502 9.590712,11.11747 20.09919,21.68459 32.68857,29.24021 12.58939,7.55561 27.50608,11.93474 42.05031,9.92345 7.27212,-1.00564 14.35489,-3.61173 20.36712,-7.82457 6.01224,-4.21283 10.92378,-10.05338 13.75511,-16.82675 2.83132,-6.77337 3.5282,-14.47127 1.65793,-21.57036 -1.87028,-7.09909 -6.35301,-13.53267 -12.53451,-17.49298 -4.65441,-2.98195 -10.10099,-4.52067 -15.56472,-5.35927 -5.46372,-0.83859 -11.0044,-1.01464 -16.51121,-1.4949 -5.5068,-0.48027 -11.0462,-1.28107 -16.19203,-3.29997 -5.14583,-2.01891 -9.91275,-5.35447 -12.83882,-10.04421 -3.15418,-5.05534 -3.93648,-11.43118 -2.535,-17.22265 1.40148,-5.79147 4.88497,-10.98318 9.42291,-14.84483 4.53794,-3.86166 10.08992,-6.43442 15.8725,-7.87214 5.78258,-1.43772 11.79945,-1.7707 17.75041,-1.4685 14.90284,0.7568 29.58217,5.53814 42.07186,13.70363" + id="path03" + inkscape:path-effect="#path-effect28" + inkscape:original-d="m 45.577369,130.63608 c 13.914097,20.59601 27.827194,41.19101 41.739291,61.78502 13.9121,20.594 65.32402,-16.36633 97.98453,-24.551 32.66051,-8.18467 -40.73685,-13.46457 -61.10678,-20.19835 -20.36992,-6.73379 27.00822,-27.60441 40.51082,-41.40812 13.50261,-13.803703 28.0489,9.13676 42.07186,13.70363" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 45.577369,130.63608 c 11.425366,22.13704 25.467015,42.92234 41.739291,61.78502 9.590712,11.11747 20.09919,21.68459 32.68857,29.24021 12.58939,7.55561 27.50608,11.93474 42.05031,9.92345 7.27212,-1.00564 14.35489,-3.61173 20.36712,-7.82457 6.01224,-4.21283 10.92378,-10.05338 13.75511,-16.82675 2.83132,-6.77337 3.5282,-14.47127 1.65793,-21.57036 -1.87028,-7.09909 -6.35301,-13.53267 -12.53451,-17.49298 -4.65441,-2.98195 -10.10099,-4.52067 -15.56472,-5.35927 -5.46372,-0.83859 -11.0044,-1.01464 -16.51121,-1.4949 -5.5068,-0.48027 -11.0462,-1.28107 -16.19203,-3.29997 -5.14583,-2.01891 -9.91275,-5.35447 -12.83882,-10.04421 -3.15418,-5.05534 -3.93648,-11.43118 -2.535,-17.22265 1.40148,-5.79147 4.88497,-10.98318 9.42291,-14.84483 4.53794,-3.86166 10.08992,-6.43442 15.8725,-7.87214 5.78258,-1.43772 11.79945,-1.7707 17.75041,-1.4685 14.90284,0.7568 29.58217,5.53814 42.07186,13.70363 l 75.19378,-7.40342 C 261.30668,81.797428 231.35585,57.35695 197.07015,43.283148 141.84297,20.613161 75.825772,26.274208 25.264437,58.015677 Z" + id="path02" + inkscape:path-effect="#path-effect22;#path-effect24" + inkscape:original-d="m 31.296121,90.573275 c 1.041529,-22.47889 2.082058,-44.95878 3.121587,-67.43967 1.039529,-22.48088978 54.028844,15.581935 81.041762,23.371402 27.01293,7.789467 5.24696,2.41351 7.86894,3.618764 2.62198,1.205255 27.35969,-16.708547 41.03804,-25.064321 13.67834,-8.355774 36.13826,14.918736 54.20588,22.376604" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 25.264437,58.015677 C 75.825772,26.274208 141.84297,20.613161 197.07015,43.283148 c 34.2857,14.073802 64.23653,38.51428 84.90072,69.280692" + id="path01" + inkscape:path-effect="#path-effect51" + inkscape:original-d="M 25.264437,58.015677 C 82.534008,53.105834 139.80258,48.194991 197.07015,43.283148 c 57.26757,-4.911843 56.60148,46.188125 84.90072,69.280692" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FillBetweenStrokes_path_multi_px_1_0_2.svg b/testfiles/lpe_tests/FillBetweenStrokes_path_multi_px_1_0_2.svg new file mode 100644 index 0000000..fa315e1 --- /dev/null +++ b/testfiles/lpe_tests/FillBetweenStrokes_path_multi_px_1_0_2.svg @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + + <defs + id="defs2"> + <inkscape:path-effect + effect="spiro" + id="path-effect51" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="spiro" + id="path-effect28" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="fill_between_strokes" + id="path-effect24" + is_visible="true" + lpeversion="1" + linkedpath="#path03" + secondpath="#path01" + reversesecond="true" + join="true" + close="true" /> + <inkscape:path-effect + effect="spiro" + id="path-effect22" + is_visible="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 45.577369,130.63608 c 11.425366,22.13704 25.467015,42.92234 41.739291,61.78502 9.590712,11.11747 20.09919,21.68459 32.68857,29.24021 12.58939,7.55561 27.50608,11.93474 42.05031,9.92345 7.27212,-1.00564 14.35489,-3.61173 20.36712,-7.82457 6.01224,-4.21283 10.92378,-10.05338 13.75511,-16.82675 2.83132,-6.77337 3.5282,-14.47127 1.65793,-21.57036 -1.87028,-7.09909 -6.35301,-13.53267 -12.53451,-17.49298 -4.65441,-2.98195 -10.10099,-4.52067 -15.56472,-5.35927 -5.46372,-0.83859 -11.0044,-1.01464 -16.51121,-1.4949 -5.5068,-0.48027 -11.0462,-1.28107 -16.19203,-3.29997 -5.14583,-2.01891 -9.91275,-5.35447 -12.83882,-10.04421 -3.15418,-5.05534 -3.93648,-11.43118 -2.535,-17.22265 1.40148,-5.79147 4.88497,-10.98318 9.42291,-14.84483 4.53794,-3.86166 10.08992,-6.43442 15.8725,-7.87214 5.78258,-1.43772 11.79945,-1.7707 17.75041,-1.4685 14.90284,0.7568 29.58217,5.53814 42.07186,13.70363" + id="path03" + inkscape:path-effect="#path-effect28" + inkscape:original-d="m 45.577369,130.63608 c 13.914097,20.59601 27.827194,41.19101 41.739291,61.78502 13.9121,20.594 65.32402,-16.36633 97.98453,-24.551 32.66051,-8.18467 -40.73685,-13.46457 -61.10678,-20.19835 -20.36992,-6.73379 27.00822,-27.60441 40.51082,-41.40812 13.50261,-13.803703 28.0489,9.13676 42.07186,13.70363" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 45.577369,130.63608 c 11.425366,22.13704 25.467015,42.92234 41.739291,61.78502 9.590712,11.11747 20.09919,21.68459 32.68857,29.24021 12.58939,7.55561 27.50608,11.93474 42.05031,9.92345 7.27212,-1.00564 14.35489,-3.61173 20.36712,-7.82457 6.01224,-4.21283 10.92378,-10.05338 13.75511,-16.82675 2.83132,-6.77337 3.5282,-14.47127 1.65793,-21.57036 -1.87028,-7.09909 -6.35301,-13.53267 -12.53451,-17.49298 -4.65441,-2.98195 -10.10099,-4.52067 -15.56472,-5.35927 -5.46372,-0.83859 -11.0044,-1.01464 -16.51121,-1.4949 -5.5068,-0.48027 -11.0462,-1.28107 -16.19203,-3.29997 -5.14583,-2.01891 -9.91275,-5.35447 -12.83882,-10.04421 -3.15418,-5.05534 -3.93648,-11.43118 -2.535,-17.22265 1.40148,-5.79147 4.88497,-10.98318 9.42291,-14.84483 4.53794,-3.86166 10.08992,-6.43442 15.8725,-7.87214 5.78258,-1.43772 11.79945,-1.7707 17.75041,-1.4685 14.90284,0.7568 29.58217,5.53814 42.07186,13.70363 l 75.19378,-7.40342 C 261.30668,81.797428 231.35585,57.35695 197.07015,43.283148 141.84297,20.613161 75.825772,26.274208 25.264437,58.015677 Z" + id="path02" + inkscape:path-effect="#path-effect22;#path-effect24" + inkscape:original-d="m 31.296121,90.573275 c 1.041529,-22.47889 2.082058,-44.95878 3.121587,-67.43967 1.039529,-22.48088978 54.028844,15.581935 81.041762,23.371402 27.01293,7.789467 5.24696,2.41351 7.86894,3.618764 2.62198,1.205255 27.35969,-16.708547 41.03804,-25.064321 13.67834,-8.355774 36.13826,14.918736 54.20588,22.376604" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 25.264437,58.015677 C 75.825772,26.274208 141.84297,20.613161 197.07015,43.283148 c 34.2857,14.073802 64.23653,38.51428 84.90072,69.280692" + id="path01" + inkscape:path-effect="#path-effect51" + inkscape:original-d="M 25.264437,58.015677 C 82.534008,53.105834 139.80258,48.194991 197.07015,43.283148 c 57.26757,-4.911843 56.60148,46.188125 84.90072,69.280692" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FilletChamfer_multi_mm_1_0_2.svg b/testfiles/lpe_tests/FilletChamfer_multi_mm_1_0_2.svg new file mode 100644 index 0000000..a61da2e --- /dev/null +++ b/testfiles/lpe_tests/FilletChamfer_multi_mm_1_0_2.svg @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect847" + is_visible="true" + lpeversion="1" + satellites_param="IF,0,0,1,0,0,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="F" + radius="200" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect843" + is_visible="true" + lpeversion="1" + satellites_param="IF,0,0,1,0,0,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="F" + radius="50" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect839" + is_visible="true" + lpeversion="1" + satellites_param="IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1" + unit="px" + method="auto" + mode="F" + radius="83" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect835" + is_visible="true" + lpeversion="1" + satellites_param="F,0,0,1,0,47.030329,0,4 @ F,0,0,1,0,45.435742,0,4 @ C,0,0,1,0,33.56938,0,4 @ IF,0,0,1,0,40.518268,0,4" + unit="px" + method="auto" + mode="F" + radius="0" + chamfer_steps="4" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="557.14286" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="252.9938" + height="150.28743" + x="-77.40638" + y="16.580982" + inkscape:path-effect="#path-effect835" + d="M -30.376051,16.580982 H 130.15168 a 45.435742,45.435742 45 0 1 45.43575,45.435742 v 71.282306 l -2.55532,12.84645 -7.27693,10.89069 -10.89069,7.27693 -12.84644,2.55531 H -36.888112 A 40.518268,40.518268 45 0 0 -77.40638,126.35014 V 63.611311 a 47.030329,47.030329 135 0 1 47.030329,-47.030329 z" + sodipodi:type="rect" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path837" + sodipodi:sides="5" + sodipodi:cx="-57.849785" + sodipodi:cy="283.23022" + sodipodi:r1="95.472244" + sodipodi:r2="47.736122" + sodipodi:arg1="0.7570233" + sodipodi:arg2="1.3853418" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -9.4414607,342.33717 -18.6172283,-5.72973 -38.209091,7.16842 -15.274411,12.08815 -17.562647,-8.32968 -0.303739,-19.47662 -18.624833,-34.12384 -16.21657,-10.79139 2.49485,-19.27708 18.4295,-6.30748 26.698316,-28.25811 5.252019,-18.7576 19.104545,-3.58421 11.693801,15.57838 35.125295,16.65937 19.4624972,-0.80145 9.3124148,17.06192 -11.202341,15.93545 -4.9896874,38.55417 6.7764664,18.26228 z" + inkscape:transform-center-x="5.44007" + inkscape:transform-center-y="-3.7866475" + inkscape:path-effect="#path-effect839" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 92.46953,231.12081 98.13013,138.75038 c 6.07682,-4.05633 14.42469,-2.5065 18.64351,3.45866 44.03613,-29.39451 207.24585,-138.47638 250.27605,-169.20695 -6.71967,-2.82497 -7.33665,-9.53058 -1.41683,-13.7583 -36.73902,-15.44525 -148.34111,-57.2327 -185.78178,-71.20137 -0.99176,7.23849 -7.34691,11.04219 -14.19227,8.48827 L 240.5962,255.61303 a 7.6639145,7.6639145 37.886124 0 1 10.46757,8.14471 l 138.2488,-55.93847 a 23.243851,23.243851 128.32444 0 1 14.25941,-18.03972 L 430.47253,13.535211" + id="path841" + inkscape:path-effect="#path-effect843" + inkscape:original-d="M 92.46953,231.12081 198.2385,380.67207 c 0,0 271.7365,-181.14831 271.7365,-184.6038 0,-3.45549 -210.0509,-81.52349 -210.0509,-81.52349 L 238.80044,268.71975 401.5759,202.85726 430.47253,13.535211" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 206.34916,-85.729169 322.92453,-7.20939 a 30.913407,30.913407 58.428006 0 0 27.95064,45.482916 l -67.0977,125.47856 A 45.817985,45.817985 167.24724 0 0 422.55932,93.315261 L 324.32748,20.99953 c 21.79366,-19.4715398 18.71636,-51.05189 -4.81044,-68.371712 38.78753,-34.654704 98.64238,-78.484008 136.38097,-59.525698 -13.76573,24.784298 -3.00976,80.913492 22.43831,93.697555 -41.17539,74.133594 -215.56109,102.593833 -270.31122,52.137358 14.15064,-24.109478 23.05863,-78.113161 1.69301,-97.803225 45.32541,-77.224238 153.4537,-75.522218 153.4537,-75.522218" + id="path845" + inkscape:path-effect="#path-effect847" + inkscape:original-d="M 206.34916,-85.729169 582.17717,-94.119646 465.17379,124.68692 281.71301,-10.372129 c 0,0 168.14472,-185.471901 202.94372,-54.004639 C 519.45574,67.090496 171.99098,118.35686 192.37179,-9.1996275 212.75261,-136.75612 363.17181,-134.38841 363.17181,-134.38841" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/FilletChamfer_multi_px_1_0_2.svg b/testfiles/lpe_tests/FilletChamfer_multi_px_1_0_2.svg new file mode 100644 index 0000000..865db0b --- /dev/null +++ b/testfiles/lpe_tests/FilletChamfer_multi_px_1_0_2.svg @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect847" + is_visible="true" + lpeversion="1" + satellites_param="IF,0,0,1,0,0,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,52.916667,0,1 @ IF,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="IF" + radius="200" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect843" + is_visible="true" + lpeversion="1" + satellites_param="IF,0,0,1,0,0,0,1 @ IF,0,0,1,0,13.229167,0,1 @ F,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,13.229167,0,1 @ IF,0,0,1,0,0,0,1" + unit="px" + method="auto" + mode="IF" + radius="50" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect839" + is_visible="true" + lpeversion="1" + satellites_param="IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1 @ IC,0,0,1,0,21.960417,0,1" + unit="px" + method="auto" + mode="IC" + radius="83" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect835" + is_visible="true" + lpeversion="1" + satellites_param="F,0,0,1,0,47.030329,0,4 @ F,0,0,1,0,45.435742,0,4 @ C,0,0,1,0,33.56938,0,4 @ IF,0,0,1,0,40.518268,0,4" + unit="px" + method="auto" + mode="F" + radius="0" + chamfer_steps="4" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:22.2253;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="562.28693" + height="334.01868" + x="-1.3634367" + y="201.31145" + inkscape:path-effect="#path-effect835" + d="m 45.666892,201.31145 469.820858,0 a 45.435742,45.435742 45 0 1 45.43574,45.43574 v 255.01355 l -2.55532,12.84645 -7.27692,10.89069 -10.89069,7.27693 -12.84645,2.55531 H 39.154831 A 40.518268,40.518268 45 0 0 -1.3634367,494.81186 V 248.34178 A 47.030329,47.030329 135 0 1 45.666892,201.31145 Z" + sodipodi:type="rect" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:22.2253;stroke-miterlimit:4;stroke-dasharray:none" + id="path837" + sodipodi:sides="5" + sodipodi:cx="42.101727" + sodipodi:cy="793.948" + sodipodi:r1="212.19016" + sodipodi:r2="106.09508" + sodipodi:arg1="0.7570233" + sodipodi:arg2="1.3853418" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 175.35038,933.21223 -92.696558,-28.52877 -38.209091,7.16842 -76.052415,60.18781 -17.562647,-8.32968 -1.512338,-96.97554 -18.624829,-34.12384 -80.743502,-53.73109 2.49484,-19.27708 91.761881,-31.40541 26.698313,-28.25811 26.1501869,-93.39545 19.1045451,-3.58421 58.224297,77.56592 35.125297,16.65937 96.9052,-3.99047 9.31242,17.06192 -55.77728,79.34378 -4.98969,38.55417 33.74052,90.9292 z" + inkscape:transform-center-x="15.546215" + inkscape:transform-center-y="-10.82121" + inkscape:path-effect="#path-effect839" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.588044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 376.19127,678.13316 227.43612,321.58166 c 6.07773,-4.05497 14.42571,-2.50497 18.64452,3.46018 75.03925,-50.06513 510.55729,-340.87433 582.78879,-394.54405 5.8411,-4.34005 5.2143,-11.67583 -1.3956,-14.6579 -64.1816,-28.95605 -376.56704,-145.6057 -442.90301,-170.31909 -0.99174,7.23836 -7.34681,11.0426 -14.19338,8.49192 l -43.3565,316.44542 a 7.6639148,7.6639148 37.886125 0 1 10.46757,8.14471 L 1050.9269,620.27852 a 23.24385,23.24385 128.32444 0 1 14.2594,-18.03972 l 62.2276,-407.69667" + id="path841" + inkscape:path-effect="#path-effect843" + inkscape:original-d="m 376.19127,678.13316 235.07496,332.38254 c 0,0 603.94317,-402.60801 603.94317,-410.28794 0,-7.67994 -466.84493,-181.1886 -466.84493,-181.1886 l -46.94802,342.65886 361.77375,-146.38151 64.2237,-420.77438" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.588044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 629.29243,-26.076168 782.38637,-17.467019 a 30.913407,30.913407 58.428006 0 0 27.9507,45.4829164 L 1229.4913,394.9164 a 45.817982,45.817982 167.24724 0 0 -67.5673,15.29234 L 839.40548,172.77895 c 20.81728,-20.51208 17.78144,-52.00447 -5.75156,-69.32885 88.29628,-87.001828 310.80968,-282.10896 395.06658,-131.264643 -2.3684,29.0529797 9.9075,76.228716 24.0899,101.619458 C 1233.7309,307.85697 650.67002,396.81001 599.83777,196.53785 608.77238,168.92517 617.64596,120.88347 610.46331,92.584803 685.34099,-138.82699 977.83584,-134.2229 977.83584,-134.2229" + id="path845" + inkscape:path-effect="#path-effect847" + inkscape:original-d="M 629.29243,-26.076168 1464.5823,-44.724274 1204.5385,441.5804 796.79102,141.40729 c 0,0 373.70708,-412.2173 451.04898,-120.027056 C 1325.1819,313.57048 552.93026,427.51163 598.22727,144.01321 643.5243,-139.48522 977.83584,-134.2229 977.83584,-134.2229" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Gears_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Gears_multi_mm_1_0_2.svg new file mode 100644 index 0000000..8594682 --- /dev/null +++ b/testfiles/lpe_tests/Gears_multi_mm_1_0_2.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="gears" + id="path-effect12" + is_visible="true" + teeth="17" + phi="5.9" + min_radius="6.2" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + id="path01" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="76.729164" + sodipodi:cy="103.47619" + sodipodi:rx="49.514877" + sodipodi:ry="59.720234" + d="m 120.26727,99.48557 c 0,0 1.97572,-2.880358 8.12583,-5.919733 2.50265,1.856896 4.90337,3.847367 7.19171,5.962746 -1.84757,6.606667 -4.31211,9.081747 -4.31211,9.081747 l -6.16059,6.1654 c 2.97301,2.97069 5.6661,6.20888 8.04516,9.67354 l 7.18498,-4.93367 c 0,0 2.88282,-1.97214 9.71557,-2.5846 1.66286,2.63557 3.18243,5.35887 4.55207,8.15804 -4.1094,5.49312 -7.30162,6.91077 -7.30162,6.91077 l -7.97178,3.5236 c 1.69911,3.84406 3.04057,7.83644 4.0074,11.92655 l 8.48204,-2.005 c 0,0 3.40057,-0.79757 9.99317,1.09961 0.59849,3.05828 1.03168,6.14661 1.29766,9.25154 -5.81626,3.6377 -9.30502,3.80645 -9.30502,3.80645 l -8.70634,0.40592 c 0.19574,4.19827 0.004,8.40564 -0.57158,12.56882 l 8.63356,1.19446 c 0,0 3.45905,0.48471 8.92113,4.6353 -0.5467,3.06797 -1.25841,6.10423 -2.13201,9.09558 -6.73759,1.29097 -10.05172,0.18804 -10.05172,0.18804 l -8.26506,-2.76658 c -1.33407,3.98548 -3.03236,7.83962 -5.07336,11.5136 l 7.61907,4.2326 c 0,0 3.05036,1.70154 6.64423,7.54497 -1.61805,2.66331 -3.37852,5.23744 -5.27374,7.7112 -6.74896,-1.23009 -9.44088,-3.45575 -9.44088,-3.45575 l -6.70752,-5.56544 c -2.68371,3.23442 -5.65959,6.21481 -8.88996,8.9034 l 5.57557,6.69911 c 0,0 2.22972,2.68855 3.47001,9.43564 -2.47089,1.89895 -5.04237,3.66331 -7.70323,5.28539 -5.84885,-3.58504 -7.55499,-6.63283 -7.55499,-6.63283 l -4.24412,-7.61266 c -3.67088,2.04655 -7.52246,3.75066 -11.505912,5.09075 l 2.779062,8.26086 c 0,0 1.10794,3.31247 -0.17286,10.052 -2.990015,0.87812 -6.025202,1.59441 -9.092343,2.14575 -4.158831,-5.4558 -4.648769,-8.91411 -4.648769,-8.91411 l -1.207508,-8.63175 c -4.162299,0.58227 -8.369379,0.77996 -12.567938,0.59057 l -0.392766,8.70694 c 0,0 -0.163484,3.48901 -3.792385,9.31076 -3.105326,-0.26129 -6.194308,-0.68981 -9.253496,-1.28369 -1.907133,-6.58972 -1.1147,-9.99148 -1.1147,-9.99148 l 1.992178,-8.48507 c -4.091569,-0.96064 -8.085968,-2.29607 -11.93259,-3.98937 l -3.511553,7.97709 c 0,0 -1.412823,3.19436 -6.899728,7.31206 -2.801242,-1.36542 -5.526833,-2.88087 -8.164909,-4.53975 0.602135,-6.83367 2.569916,-9.71946 2.569916,-9.71946 l 4.922809,-7.19243 c -3.468249,-2.37382 -6.710502,-5.06201 -9.68568,-8.03053 l -6.156085,6.1699 c 0,0 -2.471351,2.46828 -9.075224,4.32582 -2.118834,-2.28514 -4.1129299,-4.68285 -5.9736051,-7.18269 3.0300801,-6.15469 5.9074501,-8.13477 5.9074501,-8.13477 l 7.188587,-4.92841 c -2.376523,-3.4664 -4.428745,-7.14431 -6.130665,-10.98712 l -7.9692034,3.52942 c 0,0 -3.1961107,1.40885 -10.0250615,0.75536 -1.1502664,-2.89624 -2.1435522,-5.85239 -2.975533,-8.85557 5.0487963,-4.64449 8.4471503,-5.45143 8.4471503,-5.45143 l 8.4835066,-1.9988 C 9.1391104,174.80337 8.5540833,170.63247 8.3552761,166.43435 l -8.70603751,0.41228 c 0,0 -3.48921739,0.15914 -9.62095829,-2.91712 -0.026349,-3.11618 0.1153239,-6.23153 0.4244011,-9.33246 6.3856449,-2.50702 9.84601626,-2.03184 9.84601626,-2.03184 L 8.93138,153.76598 c 0.5790245,-4.16275 1.540203,-8.26333 2.871358,-12.24978 l -8.2670723,-2.76054 c 0,0 -3.31108598,-1.11206 -7.9174915,-6.19562 1.1011276,-2.91528 2.358625,-5.76907 3.76701758,-8.54895 6.86007672,-0.031 9.91512322,1.66215 9.91512322,1.66215 l 7.615966,4.23817 c 2.043683,-3.67248 4.421256,-7.14893 7.102593,-10.38532 l -6.711594,-5.56054 c 0,0 -2.685774,-2.23306 -5.144723,-8.63737 2.07989,-2.32065 4.28338,-4.52747 6.600877,-6.610861 6.408017,2.449271 8.645138,5.131671 8.645138,5.131671 l 5.570671,6.70318 c 3.232332,-2.68622 6.705193,-5.06904 10.374584,-7.11827 L 39.10415,95.824342 c 0,0 -1.697734,-3.052485 -1.677133,-9.912601 2.777753,-1.412591 5.629642,-2.674398 8.543253,-3.779929 5.090519,4.59872 6.207578,7.908122 6.207578,7.908122 l 2.773027,8.262892 c 3.984435,-1.337176 8.083557,-2.304549 12.245428,-2.889862 l -1.213817,-8.630859 c 0,0 -0.480405,-3.459649 2.016965,-9.849074 3.100464,-0.313762 6.215589,-0.460142 9.331813,-0.438501 3.085519,6.127086 2.931652,9.61654 2.931652,9.61654 l -0.399131,8.706651 c 4.198419,0.192464 8.370191,0.771189 12.462461,1.728842 l 1.985974,-8.486517 c 0,0 0.801806,-3.399569 5.43866,-8.455377 3.00444,0.827443 5.96209,1.816261 8.86006,2.96215 0.6638,6.827956 -0.74021,10.026191 -0.74021,10.026191 l -3.51738,7.97453 c 3.84538,1.69611 7.52638,3.74277 10.99637,6.11406 l 4.91755,-7.19603 M 36.035672,40.152209 c 0,0 -3.698766,-0.350277 -8.672081,-5.494786 0.491361,-2.665963 1.197876,-5.287743 2.112613,-7.839616 6.884861,-1.948978 10.2588,-0.393308 10.2588,-0.393308 l 8.067696,3.779648 c 1.577511,-3.367214 3.730822,-6.43314 6.362934,-9.05967 l -6.29305,-6.306424 c 0,0 -2.608266,-2.645849 -3.11122,-9.7835566 2.090053,-1.7264053 4.316523,-3.2806659 6.657564,-4.64753284 6.526888,2.93249994 8.11151,6.29293794 8.11151,6.29293794 l 3.750703,8.0811935 C 66.653988,13.215664 70.274259,12.25115 73.978875,11.931 L 73.21181,3.0549047 c 0,0 -0.297329,-3.70339913 3.905416,-9.4944928 2.710786,0.020957 5.41542,0.2614712 8.087366,0.7191826 3.114913,6.44182857 2.168756,10.0346487 2.168756,10.0346487 l -2.321287,8.6014588 c 3.589991,0.968835 6.983257,2.557039 10.026946,4.693071 l 5.117843,-7.292543 c 0,0 2.15273,-3.0280878 9.09466,-4.7628503 2.06311,1.7585136 3.98038,3.6812631 5.733,5.7493843 -1.75457,6.936954 -4.78878,9.081036 -4.78878,9.081036 l -7.30712,5.097005 c 2.12733,3.049773 3.70585,6.447558 4.66443,10.040299 l 8.60805,-2.29673 c 0,0 3.59551,-0.9359 10.02842,2.197383 0.45008,2.673242 0.68288,5.378551 0.6961,8.089385 -5.80306,4.186202 -9.5056,3.878306 -9.5056,3.878306 l -8.87387,-0.792393 c -0.33072,3.703687 -1.30556,7.321191 -2.88061,10.689557 l 8.07045,3.77375 c 0,0 3.35591,1.594205 6.26977,8.129436 -1.37354,2.337131 -2.93415,4.559155 -4.66652,6.644273 -7.13624,-0.523321 -9.77463,-3.139127 -9.77463,-3.139127 l -6.288442,-6.311022 c -2.634031,2.624605 -5.70609,4.769158 -9.077792,6.337054 l 3.756609,8.078449 c 0,0 1.546035,3.378365 -0.422583,10.257636 -2.554474,0.90745 -5.178258,1.60648 -7.845614,2.090232 -5.130295,-4.987976 -5.470015,-8.687728 -5.470015,-8.687728 l -0.760576,-8.876653 c -3.704849,0.317441 -7.436674,-0.01442 -11.027372,-0.980628 l -2.314998,8.603153 c 0,0 -0.987239,3.581749 -6.917199,7.586174 -2.540138,-0.946837 -4.999401,-2.097885 -7.353663,-3.441853 -0.723825,-7.118701 1.394089,-10.171243 1.394089,-10.171243 l 5.123167,-7.2888 c -3.042127,-2.138257 -5.687556,-4.791246 -7.817122,-7.839463 l -7.303391,5.102346 c 0,0 -3.058573,2.109194 -10.17518,1.365056 -1.337244,-2.358088 -2.481269,-4.820626 -3.420853,-7.363455 4.021331,-5.918508 7.605883,-6.895522 7.605883,-6.895522 l 8.609725,-2.290436 C 44.903313,48.3748 44.582106,44.642043 44.910119,40.938115 l -8.874447,-0.785906 m 83.110928,27.71077 c 0,0 -0.7115,-3.721364 3.16853,-9.851018 2.6144,-0.22593 5.24342,-0.22593 7.85782,0 3.88004,6.129654 3.16853,9.851018 3.16853,9.851018 l -1.74601,8.761062 c 3.51967,0.701443 6.8671,2.087995 9.85188,4.08078 l 4.96038,-7.429623 c 0,0 2.1283,-3.134512 9.20622,-4.72523 2.00841,1.688903 3.86741,3.547897 5.55631,5.556313 -1.59072,7.077922 -4.72523,9.206214 -4.72523,9.206214 l -7.42962,4.960389 c 1.99278,2.984776 3.37934,6.332209 4.08078,9.851876 l 8.76106,-1.746013 c 0,0 3.72137,-0.711504 9.85102,3.168535 0.22593,2.614398 0.22593,5.243418 0,7.857818 -6.12965,3.88003 -9.85102,3.16853 -9.85102,3.16853 l -8.76106,-1.74601 c -0.70144,3.51966 -2.088,6.8671 -4.08078,9.85187 l 7.42962,4.96039 c 0,0 3.13451,2.12829 4.72523,9.20622 -1.6889,2.00841 -3.5479,3.86741 -5.55631,5.55631 -7.07792,-1.59072 -9.20622,-4.72523 -9.20622,-4.72523 l -4.96038,-7.42962 c -2.98478,1.99278 -6.33221,3.37933 -9.85188,4.08078 l 1.74601,8.76106 c 0,0 0.71151,3.72136 -3.16853,9.85102 -2.6144,0.22593 -5.24342,0.22593 -7.85782,0 -3.88003,-6.12966 -3.16853,-9.85102 -3.16853,-9.85102 l 1.74601,-8.76106 c -3.51966,-0.70145 -6.8671,-2.088 -9.85187,-4.08078 l -4.96039,7.42962 c 0,0 -2.12829,3.13451 -9.206216,4.72523 -2.008416,-1.6889 -3.86741,-3.5479 -5.556313,-5.55631 1.590718,-7.07793 4.72523,-9.20622 4.72523,-9.20622 l 7.429619,-4.96039 c -1.99278,-2.98477 -3.37933,-6.33221 -4.080777,-9.85187 l -8.761061,1.74601 c 0,0 -3.721364,0.7115 -9.851018,-3.16853 -0.22593,-2.6144 -0.22593,-5.24342 0,-7.857818 6.129654,-3.880039 9.851018,-3.168535 9.851018,-3.168535 l 8.761061,1.746013 c 0.701447,-3.519667 2.087997,-6.8671 4.080777,-9.851876 l -7.429619,-4.960389 c 0,0 -3.134512,-2.128292 -4.72523,-9.206214 1.688903,-2.008416 3.547897,-3.86741 5.556313,-5.556313 7.077926,1.590718 9.206216,4.72523 9.206216,4.72523 l 4.96039,7.429623 c 2.98477,-1.992785 6.33221,-3.379337 9.85187,-4.08078 l -1.74601,-8.761062" + transform="scale(0.5)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Gears_multi_px_1_0_2.svg b/testfiles/lpe_tests/Gears_multi_px_1_0_2.svg new file mode 100644 index 0000000..ccf1f1e --- /dev/null +++ b/testfiles/lpe_tests/Gears_multi_px_1_0_2.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="gears" + id="path-effect12" + is_visible="true" + teeth="17" + phi="5.9" + min_radius="6.2" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + id="path01" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="76.729164" + sodipodi:cy="103.47619" + sodipodi:rx="49.514877" + sodipodi:ry="59.720234" + d="m 120.26727,99.48557 c 0,0 1.97572,-2.880358 8.12583,-5.919733 2.50265,1.856896 4.90337,3.847367 7.19171,5.962746 -1.84757,6.606667 -4.31211,9.081747 -4.31211,9.081747 l -6.16059,6.1654 c 2.97301,2.97069 5.6661,6.20888 8.04516,9.67354 l 7.18498,-4.93367 c 0,0 2.88282,-1.97214 9.71557,-2.5846 1.66286,2.63557 3.18243,5.35887 4.55207,8.15804 -4.1094,5.49312 -7.30162,6.91077 -7.30162,6.91077 l -7.97178,3.5236 c 1.69911,3.84406 3.04057,7.83644 4.0074,11.92655 l 8.48204,-2.005 c 0,0 3.40057,-0.79757 9.99317,1.09961 0.59849,3.05828 1.03168,6.14661 1.29766,9.25154 -5.81626,3.6377 -9.30502,3.80645 -9.30502,3.80645 l -8.70634,0.40592 c 0.19574,4.19827 0.004,8.40564 -0.57158,12.56882 l 8.63356,1.19446 c 0,0 3.45905,0.48471 8.92113,4.6353 -0.5467,3.06797 -1.25841,6.10423 -2.13201,9.09558 -6.73759,1.29097 -10.05172,0.18804 -10.05172,0.18804 l -8.26506,-2.76658 c -1.33407,3.98548 -3.03236,7.83962 -5.07336,11.5136 l 7.61907,4.2326 c 0,0 3.05036,1.70154 6.64423,7.54497 -1.61805,2.66331 -3.37852,5.23744 -5.27374,7.7112 -6.74896,-1.23009 -9.44088,-3.45575 -9.44088,-3.45575 l -6.70752,-5.56544 c -2.68371,3.23442 -5.65959,6.21481 -8.88996,8.9034 l 5.57557,6.69911 c 0,0 2.22972,2.68855 3.47001,9.43564 -2.47089,1.89895 -5.04237,3.66331 -7.70323,5.28539 -5.84885,-3.58504 -7.55499,-6.63283 -7.55499,-6.63283 l -4.24412,-7.61266 c -3.67088,2.04655 -7.52246,3.75066 -11.505912,5.09075 l 2.779062,8.26086 c 0,0 1.10794,3.31247 -0.17286,10.052 -2.990015,0.87812 -6.025202,1.59441 -9.092343,2.14575 -4.158831,-5.4558 -4.648769,-8.91411 -4.648769,-8.91411 l -1.207508,-8.63175 c -4.162299,0.58227 -8.369379,0.77996 -12.567938,0.59057 l -0.392766,8.70694 c 0,0 -0.163484,3.48901 -3.792385,9.31076 -3.105326,-0.26129 -6.194308,-0.68981 -9.253496,-1.28369 -1.907133,-6.58972 -1.1147,-9.99148 -1.1147,-9.99148 l 1.992178,-8.48507 c -4.091569,-0.96064 -8.085968,-2.29607 -11.93259,-3.98937 l -3.511553,7.97709 c 0,0 -1.412823,3.19436 -6.899728,7.31206 -2.801242,-1.36542 -5.526833,-2.88087 -8.164909,-4.53975 0.602135,-6.83367 2.569916,-9.71946 2.569916,-9.71946 l 4.922809,-7.19243 c -3.468249,-2.37382 -6.710502,-5.06201 -9.68568,-8.03053 l -6.156085,6.1699 c 0,0 -2.471351,2.46828 -9.075224,4.32582 -2.118834,-2.28514 -4.1129299,-4.68285 -5.9736051,-7.18269 3.0300801,-6.15469 5.9074501,-8.13477 5.9074501,-8.13477 l 7.188587,-4.92841 c -2.376523,-3.4664 -4.428745,-7.14431 -6.130665,-10.98712 l -7.9692034,3.52942 c 0,0 -3.1961107,1.40885 -10.0250615,0.75536 -1.1502664,-2.89624 -2.1435522,-5.85239 -2.975533,-8.85557 5.0487963,-4.64449 8.4471503,-5.45143 8.4471503,-5.45143 l 8.4835066,-1.9988 C 9.1391104,174.80337 8.5540833,170.63247 8.3552761,166.43435 l -8.70603751,0.41228 c 0,0 -3.48921739,0.15914 -9.62095829,-2.91712 -0.026349,-3.11618 0.1153239,-6.23153 0.4244011,-9.33246 6.3856449,-2.50702 9.84601626,-2.03184 9.84601626,-2.03184 L 8.93138,153.76598 c 0.5790245,-4.16275 1.540203,-8.26333 2.871358,-12.24978 l -8.2670723,-2.76054 c 0,0 -3.31108598,-1.11206 -7.9174915,-6.19562 1.1011276,-2.91528 2.358625,-5.76907 3.76701758,-8.54895 6.86007672,-0.031 9.91512322,1.66215 9.91512322,1.66215 l 7.615966,4.23817 c 2.043683,-3.67248 4.421256,-7.14893 7.102593,-10.38532 l -6.711594,-5.56054 c 0,0 -2.685774,-2.23306 -5.144723,-8.63737 2.07989,-2.32065 4.28338,-4.52747 6.600877,-6.610861 6.408017,2.449271 8.645138,5.131671 8.645138,5.131671 l 5.570671,6.70318 c 3.232332,-2.68622 6.705193,-5.06904 10.374584,-7.11827 L 39.10415,95.824342 c 0,0 -1.697734,-3.052485 -1.677133,-9.912601 2.777753,-1.412591 5.629642,-2.674398 8.543253,-3.779929 5.090519,4.59872 6.207578,7.908122 6.207578,7.908122 l 2.773027,8.262892 c 3.984435,-1.337176 8.083557,-2.304549 12.245428,-2.889862 l -1.213817,-8.630859 c 0,0 -0.480405,-3.459649 2.016965,-9.849074 3.100464,-0.313762 6.215589,-0.460142 9.331813,-0.438501 3.085519,6.127086 2.931652,9.61654 2.931652,9.61654 l -0.399131,8.706651 c 4.198419,0.192464 8.370191,0.771189 12.462461,1.728842 l 1.985974,-8.486517 c 0,0 0.801806,-3.399569 5.43866,-8.455377 3.00444,0.827443 5.96209,1.816261 8.86006,2.96215 0.6638,6.827956 -0.74021,10.026191 -0.74021,10.026191 l -3.51738,7.97453 c 3.84538,1.69611 7.52638,3.74277 10.99637,6.11406 l 4.91755,-7.19603 M 36.035672,40.152209 c 0,0 -3.698766,-0.350277 -8.672081,-5.494786 0.491361,-2.665963 1.197876,-5.287743 2.112613,-7.839616 6.884861,-1.948978 10.2588,-0.393308 10.2588,-0.393308 l 8.067696,3.779648 c 1.577511,-3.367214 3.730822,-6.43314 6.362934,-9.05967 l -6.29305,-6.306424 c 0,0 -2.608266,-2.645849 -3.11122,-9.7835566 2.090053,-1.7264053 4.316523,-3.2806659 6.657564,-4.64753284 6.526888,2.93249994 8.11151,6.29293794 8.11151,6.29293794 l 3.750703,8.0811935 C 66.653988,13.215664 70.274259,12.25115 73.978875,11.931 L 73.21181,3.0549047 c 0,0 -0.297329,-3.70339913 3.905416,-9.4944928 2.710786,0.020957 5.41542,0.2614712 8.087366,0.7191826 3.114913,6.44182857 2.168756,10.0346487 2.168756,10.0346487 l -2.321287,8.6014588 c 3.589991,0.968835 6.983257,2.557039 10.026946,4.693071 l 5.117843,-7.292543 c 0,0 2.15273,-3.0280878 9.09466,-4.7628503 2.06311,1.7585136 3.98038,3.6812631 5.733,5.7493843 -1.75457,6.936954 -4.78878,9.081036 -4.78878,9.081036 l -7.30712,5.097005 c 2.12733,3.049773 3.70585,6.447558 4.66443,10.040299 l 8.60805,-2.29673 c 0,0 3.59551,-0.9359 10.02842,2.197383 0.45008,2.673242 0.68288,5.378551 0.6961,8.089385 -5.80306,4.186202 -9.5056,3.878306 -9.5056,3.878306 l -8.87387,-0.792393 c -0.33072,3.703687 -1.30556,7.321191 -2.88061,10.689557 l 8.07045,3.77375 c 0,0 3.35591,1.594205 6.26977,8.129436 -1.37354,2.337131 -2.93415,4.559155 -4.66652,6.644273 -7.13624,-0.523321 -9.77463,-3.139127 -9.77463,-3.139127 l -6.288442,-6.311022 c -2.634031,2.624605 -5.70609,4.769158 -9.077792,6.337054 l 3.756609,8.078449 c 0,0 1.546035,3.378365 -0.422583,10.257636 -2.554474,0.90745 -5.178258,1.60648 -7.845614,2.090232 -5.130295,-4.987976 -5.470015,-8.687728 -5.470015,-8.687728 l -0.760576,-8.876653 c -3.704849,0.317441 -7.436674,-0.01442 -11.027372,-0.980628 l -2.314998,8.603153 c 0,0 -0.987239,3.581749 -6.917199,7.586174 -2.540138,-0.946837 -4.999401,-2.097885 -7.353663,-3.441853 -0.723825,-7.118701 1.394089,-10.171243 1.394089,-10.171243 l 5.123167,-7.2888 c -3.042127,-2.138257 -5.687556,-4.791246 -7.817122,-7.839463 l -7.303391,5.102346 c 0,0 -3.058573,2.109194 -10.17518,1.365056 -1.337244,-2.358088 -2.481269,-4.820626 -3.420853,-7.363455 4.021331,-5.918508 7.605883,-6.895522 7.605883,-6.895522 l 8.609725,-2.290436 C 44.903313,48.3748 44.582106,44.642043 44.910119,40.938115 l -8.874447,-0.785906 m 83.110928,27.71077 c 0,0 -0.7115,-3.721364 3.16853,-9.851018 2.6144,-0.22593 5.24342,-0.22593 7.85782,0 3.88004,6.129654 3.16853,9.851018 3.16853,9.851018 l -1.74601,8.761062 c 3.51967,0.701443 6.8671,2.087995 9.85188,4.08078 l 4.96038,-7.429623 c 0,0 2.1283,-3.134512 9.20622,-4.72523 2.00841,1.688903 3.86741,3.547897 5.55631,5.556313 -1.59072,7.077922 -4.72523,9.206214 -4.72523,9.206214 l -7.42962,4.960389 c 1.99278,2.984776 3.37934,6.332209 4.08078,9.851876 l 8.76106,-1.746013 c 0,0 3.72137,-0.711504 9.85102,3.168535 0.22593,2.614398 0.22593,5.243418 0,7.857818 -6.12965,3.88003 -9.85102,3.16853 -9.85102,3.16853 l -8.76106,-1.74601 c -0.70144,3.51966 -2.088,6.8671 -4.08078,9.85187 l 7.42962,4.96039 c 0,0 3.13451,2.12829 4.72523,9.20622 -1.6889,2.00841 -3.5479,3.86741 -5.55631,5.55631 -7.07792,-1.59072 -9.20622,-4.72523 -9.20622,-4.72523 l -4.96038,-7.42962 c -2.98478,1.99278 -6.33221,3.37933 -9.85188,4.08078 l 1.74601,8.76106 c 0,0 0.71151,3.72136 -3.16853,9.85102 -2.6144,0.22593 -5.24342,0.22593 -7.85782,0 -3.88003,-6.12966 -3.16853,-9.85102 -3.16853,-9.85102 l 1.74601,-8.76106 c -3.51966,-0.70145 -6.8671,-2.088 -9.85187,-4.08078 l -4.96039,7.42962 c 0,0 -2.12829,3.13451 -9.206216,4.72523 -2.008416,-1.6889 -3.86741,-3.5479 -5.556313,-5.55631 1.590718,-7.07793 4.72523,-9.20622 4.72523,-9.20622 l 7.429619,-4.96039 c -1.99278,-2.98477 -3.37933,-6.33221 -4.080777,-9.85187 l -8.761061,1.74601 c 0,0 -3.721364,0.7115 -9.851018,-3.16853 -0.22593,-2.6144 -0.22593,-5.24342 0,-7.857818 6.129654,-3.880039 9.851018,-3.168535 9.851018,-3.168535 l 8.761061,1.746013 c 0.701447,-3.519667 2.087997,-6.8671 4.080777,-9.851876 l -7.429619,-4.960389 c 0,0 -3.134512,-2.128292 -4.72523,-9.206214 1.688903,-2.008416 3.547897,-3.86741 5.556313,-5.556313 7.077926,1.590718 9.206216,4.72523 9.206216,4.72523 l 4.96039,7.429623 c 2.98477,-1.992785 6.33221,-3.379337 9.85187,-4.08078 l -1.74601,-8.761062" + transform="scale(0.5)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Gears_path_0_92_5.svg b/testfiles/lpe_tests/Gears_path_0_92_5.svg new file mode 100644 index 0000000..a212018 --- /dev/null +++ b/testfiles/lpe_tests/Gears_path_0_92_5.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="1.svg" + inkscape:test-threshold="0.01"> + <defs + id="defs2"> + <inkscape:path-effect + effect="gears" + id="path-effect12" + is_visible="true" + teeth="17" + phi="5.9" + min_radius="6.2" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + id="path01" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="76.729164" + sodipodi:cy="103.47619" + sodipodi:rx="49.514877" + sodipodi:ry="59.720234" + d="m 120.26727,99.48557 c 0,0 1.97572,-2.880358 8.12583,-5.919733 2.50265,1.856896 4.90337,3.847367 7.19171,5.962746 -1.84757,6.606667 -4.31211,9.081747 -4.31211,9.081747 l -6.16059,6.1654 c 2.97301,2.97069 5.6661,6.20888 8.04516,9.67354 l 7.18498,-4.93367 c 0,0 2.88282,-1.97214 9.71557,-2.5846 1.66286,2.63557 3.18243,5.35887 4.55207,8.15804 -4.1094,5.49312 -7.30162,6.91077 -7.30162,6.91077 l -7.97178,3.5236 c 1.69911,3.84406 3.04057,7.83644 4.0074,11.92655 l 8.48204,-2.005 c 0,0 3.40057,-0.79757 9.99317,1.09961 0.59849,3.05828 1.03168,6.14661 1.29766,9.25154 -5.81626,3.6377 -9.30502,3.80645 -9.30502,3.80645 l -8.70634,0.40592 c 0.19574,4.19827 0.004,8.40564 -0.57158,12.56882 l 8.63356,1.19446 c 0,0 3.45905,0.48471 8.92113,4.6353 -0.5467,3.06797 -1.25841,6.10423 -2.13201,9.09558 -6.73759,1.29097 -10.05172,0.18804 -10.05172,0.18804 l -8.26506,-2.76658 c -1.33407,3.98548 -3.03236,7.83962 -5.07336,11.5136 l 7.61907,4.2326 c 0,0 3.05036,1.70154 6.64423,7.54497 -1.61805,2.66331 -3.37852,5.23744 -5.27374,7.7112 -6.74896,-1.23009 -9.44088,-3.45575 -9.44088,-3.45575 l -6.70752,-5.56544 c -2.68371,3.23442 -5.65959,6.21481 -8.88996,8.9034 l 5.57557,6.69911 c 0,0 2.22972,2.68855 3.47001,9.43564 -2.47089,1.89895 -5.04237,3.66331 -7.70323,5.28539 -5.84885,-3.58504 -7.55499,-6.63283 -7.55499,-6.63283 l -4.24412,-7.61266 c -3.67088,2.04655 -7.52246,3.75066 -11.505912,5.09075 l 2.779062,8.26086 c 0,0 1.10794,3.31247 -0.17286,10.052 -2.990015,0.87812 -6.025202,1.59441 -9.092343,2.14575 -4.158831,-5.4558 -4.648769,-8.91411 -4.648769,-8.91411 l -1.207508,-8.63175 c -4.162299,0.58227 -8.369379,0.77996 -12.567938,0.59057 l -0.392766,8.70694 c 0,0 -0.163484,3.48901 -3.792385,9.31076 -3.105326,-0.26129 -6.194308,-0.68981 -9.253496,-1.28369 -1.907133,-6.58972 -1.1147,-9.99148 -1.1147,-9.99148 l 1.992178,-8.48507 c -4.091569,-0.96064 -8.085968,-2.29607 -11.93259,-3.98937 l -3.511553,7.97709 c 0,0 -1.412823,3.19436 -6.899728,7.31206 -2.801242,-1.36542 -5.526833,-2.88087 -8.164909,-4.53975 0.602135,-6.83367 2.569916,-9.71946 2.569916,-9.71946 l 4.922809,-7.19243 c -3.468249,-2.37382 -6.710502,-5.06201 -9.68568,-8.03053 l -6.156085,6.1699 c 0,0 -2.471351,2.46828 -9.075224,4.32582 -2.118834,-2.28514 -4.1129299,-4.68285 -5.9736051,-7.18269 3.0300801,-6.15469 5.9074501,-8.13477 5.9074501,-8.13477 l 7.188587,-4.92841 c -2.376523,-3.4664 -4.428745,-7.14431 -6.130665,-10.98712 l -7.9692034,3.52942 c 0,0 -3.1961107,1.40885 -10.0250615,0.75536 -1.1502664,-2.89624 -2.1435522,-5.85239 -2.975533,-8.85557 5.0487963,-4.64449 8.4471503,-5.45143 8.4471503,-5.45143 l 8.4835066,-1.9988 C 9.1391104,174.80337 8.5540833,170.63247 8.3552761,166.43435 l -8.70603751,0.41228 c 0,0 -3.48921739,0.15914 -9.62095829,-2.91712 -0.026349,-3.11618 0.1153239,-6.23153 0.4244011,-9.33246 6.3856449,-2.50702 9.84601626,-2.03184 9.84601626,-2.03184 L 8.93138,153.76598 c 0.5790245,-4.16275 1.540203,-8.26333 2.871358,-12.24978 l -8.2670723,-2.76054 c 0,0 -3.31108598,-1.11206 -7.9174915,-6.19562 1.1011276,-2.91528 2.358625,-5.76907 3.76701758,-8.54895 6.86007672,-0.031 9.91512322,1.66215 9.91512322,1.66215 l 7.615966,4.23817 c 2.043683,-3.67248 4.421256,-7.14893 7.102593,-10.38532 l -6.711594,-5.56054 c 0,0 -2.685774,-2.23306 -5.144723,-8.63737 2.07989,-2.32065 4.28338,-4.52747 6.600877,-6.610861 6.408017,2.449271 8.645138,5.131671 8.645138,5.131671 l 5.570671,6.70318 c 3.232332,-2.68622 6.705193,-5.06904 10.374584,-7.11827 L 39.10415,95.824342 c 0,0 -1.697734,-3.052485 -1.677133,-9.912601 2.777753,-1.412591 5.629642,-2.674398 8.543253,-3.779929 5.090519,4.59872 6.207578,7.908122 6.207578,7.908122 l 2.773027,8.262892 c 3.984435,-1.337176 8.083557,-2.304549 12.245428,-2.889862 l -1.213817,-8.630859 c 0,0 -0.480405,-3.459649 2.016965,-9.849074 3.100464,-0.313762 6.215589,-0.460142 9.331813,-0.438501 3.085519,6.127086 2.931652,9.61654 2.931652,9.61654 l -0.399131,8.706651 c 4.198419,0.192464 8.370191,0.771189 12.462461,1.728842 l 1.985974,-8.486517 c 0,0 0.801806,-3.399569 5.43866,-8.455377 3.00444,0.827443 5.96209,1.816261 8.86006,2.96215 0.6638,6.827956 -0.74021,10.026191 -0.74021,10.026191 l -3.51738,7.97453 c 3.84538,1.69611 7.52638,3.74277 10.99637,6.11406 l 4.91755,-7.19603 M 36.035672,40.152209 c 0,0 -3.698766,-0.350277 -8.672081,-5.494786 0.491361,-2.665963 1.197876,-5.287743 2.112613,-7.839616 6.884861,-1.948978 10.2588,-0.393308 10.2588,-0.393308 l 8.067696,3.779648 c 1.577511,-3.367214 3.730822,-6.43314 6.362934,-9.05967 l -6.29305,-6.306424 c 0,0 -2.608266,-2.645849 -3.11122,-9.7835566 2.090053,-1.7264053 4.316523,-3.2806659 6.657564,-4.64753284 6.526888,2.93249994 8.11151,6.29293794 8.11151,6.29293794 l 3.750703,8.0811935 C 66.653988,13.215664 70.274259,12.25115 73.978875,11.931 L 73.21181,3.0549047 c 0,0 -0.297329,-3.70339913 3.905416,-9.4944928 2.710786,0.020957 5.41542,0.2614712 8.087366,0.7191826 3.114913,6.44182857 2.168756,10.0346487 2.168756,10.0346487 l -2.321287,8.6014588 c 3.589991,0.968835 6.983257,2.557039 10.026946,4.693071 l 5.117843,-7.292543 c 0,0 2.15273,-3.0280878 9.09466,-4.7628503 2.06311,1.7585136 3.98038,3.6812631 5.733,5.7493843 -1.75457,6.936954 -4.78878,9.081036 -4.78878,9.081036 l -7.30712,5.097005 c 2.12733,3.049773 3.70585,6.447558 4.66443,10.040299 l 8.60805,-2.29673 c 0,0 3.59551,-0.9359 10.02842,2.197383 0.45008,2.673242 0.68288,5.378551 0.6961,8.089385 -5.80306,4.186202 -9.5056,3.878306 -9.5056,3.878306 l -8.87387,-0.792393 c -0.33072,3.703687 -1.30556,7.321191 -2.88061,10.689557 l 8.07045,3.77375 c 0,0 3.35591,1.594205 6.26977,8.129436 -1.37354,2.337131 -2.93415,4.559155 -4.66652,6.644273 -7.13624,-0.523321 -9.77463,-3.139127 -9.77463,-3.139127 l -6.288442,-6.311022 c -2.634031,2.624605 -5.70609,4.769158 -9.077792,6.337054 l 3.756609,8.078449 c 0,0 1.546035,3.378365 -0.422583,10.257636 -2.554474,0.90745 -5.178258,1.60648 -7.845614,2.090232 -5.130295,-4.987976 -5.470015,-8.687728 -5.470015,-8.687728 l -0.760576,-8.876653 c -3.704849,0.317441 -7.436674,-0.01442 -11.027372,-0.980628 l -2.314998,8.603153 c 0,0 -0.987239,3.581749 -6.917199,7.586174 -2.540138,-0.946837 -4.999401,-2.097885 -7.353663,-3.441853 -0.723825,-7.118701 1.394089,-10.171243 1.394089,-10.171243 l 5.123167,-7.2888 c -3.042127,-2.138257 -5.687556,-4.791246 -7.817122,-7.839463 l -7.303391,5.102346 c 0,0 -3.058573,2.109194 -10.17518,1.365056 -1.337244,-2.358088 -2.481269,-4.820626 -3.420853,-7.363455 4.021331,-5.918508 7.605883,-6.895522 7.605883,-6.895522 l 8.609725,-2.290436 C 44.903313,48.3748 44.582106,44.642043 44.910119,40.938115 l -8.874447,-0.785906 m 83.110928,27.71077 c 0,0 -0.7115,-3.721364 3.16853,-9.851018 2.6144,-0.22593 5.24342,-0.22593 7.85782,0 3.88004,6.129654 3.16853,9.851018 3.16853,9.851018 l -1.74601,8.761062 c 3.51967,0.701443 6.8671,2.087995 9.85188,4.08078 l 4.96038,-7.429623 c 0,0 2.1283,-3.134512 9.20622,-4.72523 2.00841,1.688903 3.86741,3.547897 5.55631,5.556313 -1.59072,7.077922 -4.72523,9.206214 -4.72523,9.206214 l -7.42962,4.960389 c 1.99278,2.984776 3.37934,6.332209 4.08078,9.851876 l 8.76106,-1.746013 c 0,0 3.72137,-0.711504 9.85102,3.168535 0.22593,2.614398 0.22593,5.243418 0,7.857818 -6.12965,3.88003 -9.85102,3.16853 -9.85102,3.16853 l -8.76106,-1.74601 c -0.70144,3.51966 -2.088,6.8671 -4.08078,9.85187 l 7.42962,4.96039 c 0,0 3.13451,2.12829 4.72523,9.20622 -1.6889,2.00841 -3.5479,3.86741 -5.55631,5.55631 -7.07792,-1.59072 -9.20622,-4.72523 -9.20622,-4.72523 l -4.96038,-7.42962 c -2.98478,1.99278 -6.33221,3.37933 -9.85188,4.08078 l 1.74601,8.76106 c 0,0 0.71151,3.72136 -3.16853,9.85102 -2.6144,0.22593 -5.24342,0.22593 -7.85782,0 -3.88003,-6.12966 -3.16853,-9.85102 -3.16853,-9.85102 l 1.74601,-8.76106 c -3.51966,-0.70145 -6.8671,-2.088 -9.85187,-4.08078 l -4.96039,7.42962 c 0,0 -2.12829,3.13451 -9.206216,4.72523 -2.008416,-1.6889 -3.86741,-3.5479 -5.556313,-5.55631 1.590718,-7.07793 4.72523,-9.20622 4.72523,-9.20622 l 7.429619,-4.96039 c -1.99278,-2.98477 -3.37933,-6.33221 -4.080777,-9.85187 l -8.761061,1.74601 c 0,0 -3.721364,0.7115 -9.851018,-3.16853 -0.22593,-2.6144 -0.22593,-5.24342 0,-7.857818 6.129654,-3.880039 9.851018,-3.168535 9.851018,-3.168535 l 8.761061,1.746013 c 0.701447,-3.519667 2.087997,-6.8671 4.080777,-9.851876 l -7.429619,-4.960389 c 0,0 -3.134512,-2.128292 -4.72523,-9.206214 1.688903,-2.008416 3.547897,-3.86741 5.556313,-5.556313 7.077926,1.590718 9.206216,4.72523 9.206216,4.72523 l 4.96039,7.429623 c 2.98477,-1.992785 6.33221,-3.379337 9.85187,-4.08078 l -1.74601,-8.761062" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/InterpolatePoints_multi_mm_1_0_2.svg b/testfiles/lpe_tests/InterpolatePoints_multi_mm_1_0_2.svg new file mode 100644 index 0000000..a5922e0 --- /dev/null +++ b/testfiles/lpe_tests/InterpolatePoints_multi_mm_1_0_2.svg @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg27" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs21"> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect48" + is_visible="true" + interpolator_type="SpiroInterpolator" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect44" + is_visible="true" + interpolator_type="Linear" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect42" + is_visible="true" + interpolator_type="CubicBezierFit" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect40" + is_visible="true" + interpolator_type="CentripetalCatmullRom" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect32" + is_visible="true" + interpolator_type="CubicBezierJohan" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 130.24112,95.961128 c 14.37149,19.335152 59.50293,40.776972 59.50293,40.776972 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:path-effect="#path-effect44" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + d="M 34.773811,74.75 99.785714,18.053571 130.24112,95.961128 189.74405,136.7381 148.92262,196.45833 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 34.773811,74.75" + id="path05" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,4.1897188,12.67491)" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,58.61829,221.31777)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path04" + d="M 34.773811,74.75 99.785714,18.053571 C 106.95915,506.55326 115.59038,777.99385 124.2686,788.00717 132.94681,798.02049 141.63838,546.56775 148.92262,74.75 c 4.14986,-268.79658 7.81732,-604.56491 11.74671,-904.67256 3.92939,-300.10764 8.24,-569.67094 13.0688,-675.93464 2.4144,-53.1319 4.93675,-63.9261 7.36272,-16.3578 2.42598,47.5683 4.75221,154.8596 6.59089,320.1134 1.83868,165.2539 3.16933,389.60745 3.59216,633.18189 0.42283,243.57444 -0.097,504.911059 -1.53985,705.65781 -1.14397,159.16758 -2.82214,276.26416 -4.65995,344.42111 -1.83782,68.15696 -3.83012,89.0334 -5.78675,77.31372 C 175.38411,535.03358 171.67421,385.62674 168.00138,248.55834 156.37101,-185.48246 144.22794,-514.85458 131.82572,-568.6805 119.4235,-622.50642 106.69919,-387.97832 96.005952,242.57143 89.145288,647.12508 83.309013,1200.32 77.142927,1704.4476 c -6.166085,504.1276 -12.918549,972.1746 -20.663381,1157.9879 -3.872415,92.9066 -7.952494,111.9177 -11.842763,26.7958 -3.89027,-85.1219 -7.581113,-277.4836 -10.306902,-567.8083 -2.725788,-290.3247 -4.434023,-680.6542 -4.44104,-1078.8843 -0.007,-398.23011 1.763099,-798.84182 4.88497,-1046.08037 1.892009,-149.838853 4.236823,-241.715619 6.643135,-260.297694 2.406312,-18.582075 4.864384,36.205736 6.964008,155.220316 L 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect48" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -2.45409,98.54183 -21.74267,111.82024 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,102.46353,6.627291)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path03" + d="M 34.773811,74.75 C 98.674757,19.022429 103.7156,-22.536384 176.4255,73.391806 c 13.03371,17.195732 18.02451,42.288644 13.31855,63.346294 -5.25902,23.53243 -24.83372,41.66959 -40.82143,59.72023 -26.68232,30.1252 -83.914868,95.98077 -114.148809,0 -66.552596,-211.278094 52.415383,-57.64509 0,-121.70833" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect42" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 176.4255,73.391806 c 14.37149,19.33515 13.31855,63.346294 13.31855,63.346294 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,1.9218616,141.18681)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path02" + d="m 34.773811,74.75 c 10.835317,-9.449405 53.812326,-61.747756 65.011903,-56.696429 11.778326,5.312359 -14.768811,75.658158 0.591306,95.405249 15.11197,19.42807 83.53673,7.70413 89.36703,23.27928 5.16012,13.78482 -25.04821,41.98079 -40.82143,59.72023 -15.53716,17.47395 -34.35247,45.45073 -52.916668,46.1131 -19.400194,0.6922 -51.975866,-24.11401 -61.232141,-46.1131 C 23.891281,170.59418 53.917011,110.74431 48.380954,91.380952 45.88785,82.660873 37.041668,77.521825 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect40" + inkscape:original-d="m 34.773811,74.75 65.011903,-56.696429 0.591306,95.405249 c 14.37149,19.33515 89.36703,23.27928 89.36703,23.27928 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + d="m 34.773811,74.75 c 13.002381,0 52.009522,-56.696429 65.011903,-56.696429 9.827386,0 39.309526,56.696429 49.136906,56.696429 -3.46857,0 -13.8743,61.7758 -17.34287,61.7758 3.46857,0 13.8743,59.93253 17.34287,59.93253 -10.58333,0 -42.33333,46.1131 -52.916668,46.1131 -12.246428,0 -48.985713,-46.1131 -61.232141,-46.1131 2.721429,0 10.885714,-105.077378 13.607143,-105.077378 C 45.659525,91.380952 37.49524,74.75 34.773811,74.75" + id="path01" + inkscape:path-effect="#path-effect32" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 -17.34287,61.7758 -17.34287,61.7758 0,0 36.63145,46.65412 17.34287,59.93253 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,110.02305,128.33562)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/InterpolatePoints_multi_px_1_0_2.svg b/testfiles/lpe_tests/InterpolatePoints_multi_px_1_0_2.svg new file mode 100644 index 0000000..42f8cab --- /dev/null +++ b/testfiles/lpe_tests/InterpolatePoints_multi_px_1_0_2.svg @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250.00001" + version="1.1" + id="svg27" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs21"> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect48" + is_visible="true" + interpolator_type="SpiroInterpolator" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect44" + is_visible="true" + interpolator_type="Linear" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect42" + is_visible="true" + interpolator_type="CubicBezierFit" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect40" + is_visible="true" + interpolator_type="CentripetalCatmullRom" + lpeversion="1" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect32" + is_visible="true" + interpolator_type="CubicBezierJohan" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 130.24112,95.961128 c 14.37149,19.335152 59.50293,40.776972 59.50293,40.776972 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:path-effect="#path-effect44" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + d="M 34.773811,74.75 99.785714,18.053571 130.24112,95.961128 189.74405,136.7381 148.92262,196.45833 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 34.773811,74.75" + id="path05" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,4.1897188,12.67491)" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,58.61829,221.31777)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path04" + d="M 34.773811,74.75 99.785714,18.053571 C 106.95915,506.55326 115.59038,777.99385 124.2686,788.00717 132.94681,798.02049 141.63838,546.56775 148.92262,74.75 c 4.14986,-268.79658 7.81732,-604.56491 11.74671,-904.67256 3.92939,-300.10764 8.24,-569.67094 13.0688,-675.93464 2.4144,-53.1319 4.93675,-63.9261 7.36272,-16.3578 2.42598,47.5683 4.75221,154.8596 6.59089,320.1134 1.83868,165.2539 3.16933,389.60745 3.59216,633.18189 0.42283,243.57444 -0.097,504.911059 -1.53985,705.65781 -1.14397,159.16758 -2.82214,276.26416 -4.65995,344.42111 -1.83782,68.15696 -3.83012,89.0334 -5.78675,77.31372 C 175.38411,535.03358 171.67421,385.62674 168.00138,248.55834 156.37101,-185.48246 144.22794,-514.85458 131.82572,-568.6805 119.4235,-622.50642 106.69919,-387.97832 96.005952,242.57143 89.145288,647.12508 83.309013,1200.32 77.142927,1704.4476 c -6.166085,504.1276 -12.918549,972.1746 -20.663381,1157.9879 -3.872415,92.9066 -7.952494,111.9177 -11.842763,26.7958 -3.89027,-85.1219 -7.581113,-277.4836 -10.306902,-567.8083 -2.725788,-290.3247 -4.434023,-680.6542 -4.44104,-1078.8843 -0.007,-398.23011 1.763099,-798.84182 4.88497,-1046.08037 1.892009,-149.838853 4.236823,-241.715619 6.643135,-260.297694 2.406312,-18.582075 4.864384,36.205736 6.964008,155.220316 L 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect48" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -2.45409,98.54183 -21.74267,111.82024 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,102.46353,6.627291)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path03" + d="M 34.773811,74.75 C 98.674757,19.022429 103.7156,-22.536384 176.4255,73.391806 c 13.03371,17.195732 18.02451,42.288644 13.31855,63.346294 -5.25902,23.53243 -24.83372,41.66959 -40.82143,59.72023 -26.68232,30.1252 -83.914868,95.98077 -114.148809,0 -66.552596,-211.278094 52.415383,-57.64509 0,-121.70833" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect42" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 176.4255,73.391806 c 14.37149,19.33515 13.31855,63.346294 13.31855,63.346294 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,1.9218616,141.18681)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path02" + d="m 34.773811,74.75 c 10.835317,-9.449405 53.812326,-61.747756 65.011903,-56.696429 11.778326,5.312359 -14.768811,75.658158 0.591306,95.405249 15.11197,19.42807 83.53673,7.70413 89.36703,23.27928 5.16012,13.78482 -25.04821,41.98079 -40.82143,59.72023 -15.53716,17.47395 -34.35247,45.45073 -52.916668,46.1131 -19.400194,0.6922 -51.975866,-24.11401 -61.232141,-46.1131 C 23.891281,170.59418 53.917011,110.74431 48.380954,91.380952 45.88785,82.660873 37.041668,77.521825 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + inkscape:path-effect="#path-effect40" + inkscape:original-d="m 34.773811,74.75 65.011903,-56.696429 0.591306,95.405249 c 14.37149,19.33515 89.36703,23.27928 89.36703,23.27928 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + d="m 34.773811,74.75 c 13.002381,0 52.009522,-56.696429 65.011903,-56.696429 9.827386,0 39.309526,56.696429 49.136906,56.696429 -3.46857,0 -13.8743,61.7758 -17.34287,61.7758 3.46857,0 13.8743,59.93253 17.34287,59.93253 -10.58333,0 -42.33333,46.1131 -52.916668,46.1131 -12.246428,0 -48.985713,-46.1131 -61.232141,-46.1131 2.721429,0 10.885714,-105.077378 13.607143,-105.077378 C 45.659525,91.380952 37.49524,74.75 34.773811,74.75" + id="path01" + inkscape:path-effect="#path-effect32" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 -17.34287,61.7758 -17.34287,61.7758 0,0 36.63145,46.65412 17.34287,59.93253 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,110.02305,128.33562)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/InterpolatePoints_path_0_92_5.svg b/testfiles/lpe_tests/InterpolatePoints_path_0_92_5.svg new file mode 100644 index 0000000..1db823f --- /dev/null +++ b/testfiles/lpe_tests/InterpolatePoints_path_0_92_5.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg27" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs21"> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect48" + is_visible="true" + interpolator_type="SpiroInterpolator" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect44" + is_visible="true" + interpolator_type="Linear" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect42" + is_visible="true" + interpolator_type="CubicBezierFit" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect40" + is_visible="true" + interpolator_type="CentripetalCatmullRom" /> + <inkscape:path-effect + effect="interpolate_points" + id="path-effect32" + is_visible="true" + interpolator_type="CubicBezierJohan" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:path-effect="#path-effect44" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 189.74405,136.7381 148.92262,196.45833 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 34.773811,74.75" + id="path05" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,4.1897188,12.67491)" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,58.61829,221.31777)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path04" + d="M 34.773811,74.75 99.785714,18.053571 C 114.81123,817.30703 133.71669,839.12102 148.92262,74.75 c 3.70507,-186.2461 7.17917,-414.82088 10.79067,-618.61822 3.61151,-203.79735 7.41394,-384.61953 11.48423,-463.92898 4.07029,-79.3095 8.4604,-49.94 12.10323,148.20204 1.82142,99.07101 3.4289,239.42261 4.58048,411.84434 1.15159,172.42174 1.8364,377.163782 1.86282,584.48892 0.0267,209.1746 -0.61764,417.41955 -1.74475,593.6509 -1.1271,176.23135 -2.72569,320.6694 -4.54915,423.1939 -3.64691,205.0488 -8.08204,238.4334 -12.19015,159.1971 -4.10812,-79.2363 -7.9406,-263.4798 -11.56164,-473.06381 -3.62103,-209.58401 -7.08466,-446.27069 -10.77574,-643.25786 -8.12591,-433.66758 -17.32333,-667.74216 -26.53395,-663.60853 -9.21062,4.13362 -18.41473,247.67782 -26.382718,709.72163 -6.87445,398.63242 -12.720285,948.48837 -18.879662,1450.59307 -6.159376,502.1048 -12.88988,969.5892 -20.613277,1156.6182 -3.861698,93.5145 -7.931641,113.5866 -11.815677,29.8324 -3.884035,-83.7542 -7.572756,-274.4447 -10.302106,-563.1982 -2.72935,-288.7535 -4.446913,-677.6421 -4.466293,-1074.9686 -0.01938,-397.32649 1.73572,-797.59617 4.844874,-1044.98997 1.889446,-150.342262 4.235045,-242.560169 6.642477,-261.150888 2.407431,-18.590718 4.866802,36.522143 6.964666,156.07351 L 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + inkscape:path-effect="#path-effect48" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,102.46353,6.627291)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path03" + d="m 34.773811,74.75 c 77.958849,-67.9873741 51.3127,-82.9014221 114.148809,0 14.94469,19.716942 40.82143,37.24741 40.82143,61.9881 0,24.11292 -24.83372,41.66959 -40.82143,59.72023 -26.68232,30.1252 -83.914868,95.98077 -114.148809,0 -66.552596,-211.278094 52.415383,-57.64509 0,-121.70833" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + inkscape:path-effect="#path-effect42" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + transform="matrix(0.42453817,0,0,0.42453817,1.9218616,141.18681)" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path02" + d="M 34.773811,74.75 C 45.609128,65.300595 80.24073,16.687853 99.785714,18.053571 118.01347,19.327247 133.89644,54.910908 148.92262,74.75 c 14.94544,19.732495 40.99742,41.57625 40.82143,61.9881 -0.17374,20.15123 -25.04821,41.98079 -40.82143,59.72023 -15.53716,17.47395 -34.35247,45.45073 -52.916668,46.1131 -19.400194,0.6922 -51.975866,-24.11401 -61.232141,-46.1131 C 23.891281,170.59418 53.917011,110.74431 48.380954,91.380952 45.88785,82.660873 37.041668,77.521825 34.773811,74.75" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + inkscape:path-effect="#path-effect40" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + d="m 34.773811,74.75 c 13.002381,0 52.009523,-56.696429 65.011903,-56.696429 9.827386,0 39.309526,56.696429 49.136906,56.696429 8.16429,0 32.65714,61.9881 40.82143,61.9881 -8.16429,0 -32.65714,59.72023 -40.82143,59.72023 -10.58333,0 -42.33333,46.1131 -52.916668,46.1131 -12.246428,0 -48.985713,-46.1131 -61.232141,-46.1131 2.721429,0 10.885714,-105.077378 13.607143,-105.077378 C 45.659525,91.380952 37.49524,74.75 34.773811,74.75" + id="path01" + inkscape:path-effect="#path-effect32" + inkscape:original-d="M 34.773811,74.75 99.785714,18.053571 148.92262,74.75 c 14.37149,19.33515 40.82143,61.9881 40.82143,61.9881 0,0 -21.53285,46.44182 -40.82143,59.72023 L 96.005952,242.57143 34.773811,196.45833 48.380954,91.380952 Z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + transform="matrix(0.42453817,0,0,0.42453817,110.02305,128.33562)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Interpolate_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Interpolate_multi_mm_1_0_2.svg new file mode 100644 index 0000000..3b7a64e --- /dev/null +++ b/testfiles/lpe_tests/Interpolate_multi_mm_1_0_2.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 249.99999" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="interpolate" + id="path-effect20" + is_visible="true" + trajectory="m 120.32157,109.54558 c -83.344568,49.87599 -1.29768,80.66835 8.31548,119.81845" + equidistant_spacing="false" + steps="19" + trajectory-nodetypes="cc" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect18" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect14" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 76.854315,163.2182 C 65.262995,120.38071 53.671725,77.543413 70.680705,57.888743 87.689684,38.234074 133.29901,41.761866 153.45766,58.266589 c 20.15865,16.504722 14.86695,45.987021 18.14276,69.169771 3.27581,23.18275 15.11894,40.06551 26.96223,56.9485 M 63.66785,167.27674 C 53.476456,125.64318 43.285098,84.009799 60.140071,65.629038 c 16.854974,-18.38076 60.756409,-13.50903 79.417159,2.897714 18.66076,16.406744 12.08115,44.349128 15.14697,66.614938 3.06583,22.2658 15.7769,38.85458 28.48812,55.44358 M 53.481002,171.27421 C 44.689534,130.84456 35.898087,90.415102 52.599055,73.308251 c 16.700967,-17.10685 58.894505,-10.891184 76.057365,5.417582 17.16286,16.308765 9.29534,42.711247 12.15118,64.060097 2.85585,21.34885 16.43485,37.64365 30.01401,53.93867 M 46.033338,175.21589 C 38.641795,135.99016 31.25026,96.764627 47.797222,80.931686 64.344184,65.098744 104.82983,72.658348 120.4948,88.869135 c 15.66496,16.210785 6.50953,41.073355 9.15539,61.505255 2.64586,20.4319 17.0928,36.43273 31.5399,52.43376 M 41.064424,179.1071 c -5.991618,-38.02182 -11.98324,-76.04342 4.409715,-90.602456 16.392956,-14.559032 55.170711,-5.655491 69.337781,10.457318 14.16707,16.112808 3.72373,39.435458 6.1596,58.950418 2.43588,19.51495 17.75076,35.2218 33.06579,50.92884 M 38.313827,182.95313 c -4.591692,-36.8179 -9.183403,-73.63558 7.055547,-86.9207 16.23895,-13.285122 53.308818,-3.037644 65.977996,12.97719 12.66917,16.01483 0.93791,37.79757 3.1638,56.39557 2.22589,18.59801 18.40871,34.01088 34.59168,49.42393 M 37.521114,186.7593 c -3.191767,-35.61398 -6.383566,-71.22774 9.701378,-83.23895 16.084944,-12.011215 51.446921,-0.4198 62.618198,15.49705 11.17128,15.91685 -1.84789,36.15968 0.16802,53.84074 2.0159,17.68106 19.06666,32.79995 36.11757,47.91901 M 38.42585,190.5309 c -1.791841,-34.41006 -3.583728,-68.8199 12.34721,-79.5572 15.930938,-10.7373 49.58502,2.19805 59.25841,18.01692 9.67339,15.81887 -4.6337,34.52179 -2.82778,51.2859 1.80593,16.76411 19.72462,31.58902 37.64346,46.4141 M 40.767604,194.27324 c -0.391915,-33.20615 -0.783891,-66.41206 14.993042,-75.87545 15.776932,-9.4634 47.723124,4.81589 55.898614,20.53679 8.1755,15.72089 -7.4195,32.8839 -5.82356,48.73106 1.59593,15.84716 20.38256,30.37809 39.16934,44.90918 M 44.285942,197.99162 c 1.00801,-32.00223 2.015946,-64.00422 17.638873,-72.1937 15.622926,-8.18949 45.861225,7.43374 52.538825,23.05666 6.6776,15.62291 -10.20531,31.246 -8.81936,46.17622 1.38596,14.93021 21.04052,29.16716 40.69524,43.40427 M 48.72043,201.69134 c 2.407935,-30.79831 4.815783,-61.59637 20.284704,-68.51195 15.46892,-6.91557 43.999336,10.05159 49.179036,25.57653 5.1797,15.52494 -12.99112,29.60812 -11.81515,43.62138 1.17597,14.01326 21.69847,27.95624 42.22112,41.89936 M 53.810634,205.37771 c 3.807861,-29.59439 7.615621,-59.18853 22.930536,-64.8302 15.314914,-5.64166 42.13744,12.66944 45.81924,28.0964 3.68181,15.42696 -15.77692,27.97023 -14.81094,41.06654 0.96599,13.09631 22.35643,26.74531 43.74702,40.39444 M 59.296123,209.05603 c 5.207786,-28.39048 10.415458,-56.78069 25.576367,-61.14844 15.16091,-4.36776 40.27554,15.28728 42.45945,30.61626 2.18391,15.32898 -18.56273,26.33233 -17.80673,38.5117 0.756,12.17936 23.01438,25.53439 45.2729,38.88953 M 64.916461,212.73161 c 6.607712,-27.18656 13.215296,-54.37285 28.222199,-57.4667 15.0069,-3.09384 38.41364,17.90513 39.09966,33.13613 0.68602,15.231 -21.34854,24.69445 -20.80252,35.95686 0.54601,11.26242 23.67233,24.32347 46.79879,37.38462 M 70.411217,216.40974 c 8.007637,-25.98264 16.015133,-51.96501 30.868033,-53.78494 14.85289,-1.81994 36.55174,20.52297 35.73987,35.65599 -0.81188,15.13303 -24.13435,23.05656 -23.79832,33.40203 0.33603,10.34546 24.33028,23.11253 48.32468,35.8797 M 75.519956,220.09573 c 9.407563,-24.77872 18.814971,-49.55716 33.513864,-50.10319 14.69889,-0.54603 34.68985,23.14082 32.38007,38.17587 -2.30977,15.03504 -26.92015,21.41866 -26.7941,30.84718 0.12605,9.42852 24.98824,21.90161 49.85057,34.37479 M 79.982246,223.79489 c 10.807488,-23.57481 21.614804,-47.14932 36.159694,-46.42144 14.54488,0.72788 32.82795,25.75866 29.02028,40.69573 -3.80766,14.93707 -29.70596,19.78078 -29.78989,28.29235 -0.0839,8.51157 25.64619,20.69068 51.37646,32.86987 M 83.537653,227.51252 c 12.207414,-22.3709 24.414647,-44.74149 38.805527,-42.7397 14.39088,2.0018 30.96605,28.37652 25.66049,43.2156 -5.30556,14.83909 -32.49177,18.14289 -32.78569,25.73751 -0.29392,7.59462 26.30415,19.47976 52.90235,31.36496 M 85.925743,231.25391 c 13.60734,-21.16697 27.214487,-42.33364 41.451357,-39.05794 14.23687,3.2757 29.10416,30.99436 22.3007,45.73547 -6.80345,14.74111 -35.27757,16.50499 -35.78148,23.18267 -0.5039,6.67767 26.9621,18.26882 54.42824,29.86004" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect14;#path-effect20" + inkscape:original-d="M 76.854315,163.2182 C 65.263308,120.38063 53.672039,77.543328 42.080504,34.706292 c 45.609202,3.527496 91.218526,7.055289 136.827386,10.583333 -5.29138,29.481723 -10.58307,58.964025 -15.875,88.446425 11.84364,16.88285 23.68677,33.76561 35.52976,50.64881 M 85.925743,231.25391 c 13.607407,-21.16693 27.214547,-42.3336 40.821427,-63.5 14.86712,27.71759 29.7344,55.43625 44.6012,83.15476 -28.47404,1.76363 -56.94816,3.52752 -85.422627,5.29167 27.466807,11.59112 54.932807,23.18228 82.398817,34.77381" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Interpolate_multi_px_1_0_2.svg b/testfiles/lpe_tests/Interpolate_multi_px_1_0_2.svg new file mode 100644 index 0000000..6edb7f0 --- /dev/null +++ b/testfiles/lpe_tests/Interpolate_multi_px_1_0_2.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="interpolate" + id="path-effect20" + is_visible="true" + trajectory="m 120.32157,109.54558 c -83.344568,49.87599 -1.29768,80.66835 8.31548,119.81845" + equidistant_spacing="false" + steps="19" + trajectory-nodetypes="cc" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect18" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect14" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 76.854315,163.2182 C 65.262995,120.38071 53.671725,77.543413 70.680705,57.888743 87.689684,38.234074 133.29901,41.761866 153.45766,58.266589 c 20.15865,16.504722 14.86695,45.987021 18.14276,69.169771 3.27581,23.18275 15.11894,40.06551 26.96223,56.9485 M 63.66785,167.27674 C 53.476456,125.64318 43.285098,84.009799 60.140071,65.629038 c 16.854974,-18.38076 60.756409,-13.50903 79.417159,2.897714 18.66076,16.406744 12.08115,44.349128 15.14697,66.614938 3.06583,22.2658 15.7769,38.85458 28.48812,55.44358 M 53.481002,171.27421 C 44.689534,130.84456 35.898087,90.415102 52.599055,73.308251 c 16.700967,-17.10685 58.894505,-10.891184 76.057365,5.417582 17.16286,16.308765 9.29534,42.711247 12.15118,64.060097 2.85585,21.34885 16.43485,37.64365 30.01401,53.93867 M 46.033338,175.21589 C 38.641795,135.99016 31.25026,96.764627 47.797222,80.931686 64.344184,65.098744 104.82983,72.658348 120.4948,88.869135 c 15.66496,16.210785 6.50953,41.073355 9.15539,61.505255 2.64586,20.4319 17.0928,36.43273 31.5399,52.43376 M 41.064424,179.1071 c -5.991618,-38.02182 -11.98324,-76.04342 4.409715,-90.602456 16.392956,-14.559032 55.170711,-5.655491 69.337781,10.457318 14.16707,16.112808 3.72373,39.435458 6.1596,58.950418 2.43588,19.51495 17.75076,35.2218 33.06579,50.92884 M 38.313827,182.95313 c -4.591692,-36.8179 -9.183403,-73.63558 7.055547,-86.9207 16.23895,-13.285122 53.308818,-3.037644 65.977996,12.97719 12.66917,16.01483 0.93791,37.79757 3.1638,56.39557 2.22589,18.59801 18.40871,34.01088 34.59168,49.42393 M 37.521114,186.7593 c -3.191767,-35.61398 -6.383566,-71.22774 9.701378,-83.23895 16.084944,-12.011215 51.446921,-0.4198 62.618198,15.49705 11.17128,15.91685 -1.84789,36.15968 0.16802,53.84074 2.0159,17.68106 19.06666,32.79995 36.11757,47.91901 M 38.42585,190.5309 c -1.791841,-34.41006 -3.583728,-68.8199 12.34721,-79.5572 15.930938,-10.7373 49.58502,2.19805 59.25841,18.01692 9.67339,15.81887 -4.6337,34.52179 -2.82778,51.2859 1.80593,16.76411 19.72462,31.58902 37.64346,46.4141 M 40.767604,194.27324 c -0.391915,-33.20615 -0.783891,-66.41206 14.993042,-75.87545 15.776932,-9.4634 47.723124,4.81589 55.898614,20.53679 8.1755,15.72089 -7.4195,32.8839 -5.82356,48.73106 1.59593,15.84716 20.38256,30.37809 39.16934,44.90918 M 44.285942,197.99162 c 1.00801,-32.00223 2.015946,-64.00422 17.638873,-72.1937 15.622926,-8.18949 45.861225,7.43374 52.538825,23.05666 6.6776,15.62291 -10.20531,31.246 -8.81936,46.17622 1.38596,14.93021 21.04052,29.16716 40.69524,43.40427 M 48.72043,201.69134 c 2.407935,-30.79831 4.815783,-61.59637 20.284704,-68.51195 15.46892,-6.91557 43.999336,10.05159 49.179036,25.57653 5.1797,15.52494 -12.99112,29.60812 -11.81515,43.62138 1.17597,14.01326 21.69847,27.95624 42.22112,41.89936 M 53.810634,205.37771 c 3.807861,-29.59439 7.615621,-59.18853 22.930536,-64.8302 15.314914,-5.64166 42.13744,12.66944 45.81924,28.0964 3.68181,15.42696 -15.77692,27.97023 -14.81094,41.06654 0.96599,13.09631 22.35643,26.74531 43.74702,40.39444 M 59.296123,209.05603 c 5.207786,-28.39048 10.415458,-56.78069 25.576367,-61.14844 15.16091,-4.36776 40.27554,15.28728 42.45945,30.61626 2.18391,15.32898 -18.56273,26.33233 -17.80673,38.5117 0.756,12.17936 23.01438,25.53439 45.2729,38.88953 M 64.916461,212.73161 c 6.607712,-27.18656 13.215296,-54.37285 28.222199,-57.4667 15.0069,-3.09384 38.41364,17.90513 39.09966,33.13613 0.68602,15.231 -21.34854,24.69445 -20.80252,35.95686 0.54601,11.26242 23.67233,24.32347 46.79879,37.38462 M 70.411217,216.40974 c 8.007637,-25.98264 16.015133,-51.96501 30.868033,-53.78494 14.85289,-1.81994 36.55174,20.52297 35.73987,35.65599 -0.81188,15.13303 -24.13435,23.05656 -23.79832,33.40203 0.33603,10.34546 24.33028,23.11253 48.32468,35.8797 M 75.519956,220.09573 c 9.407563,-24.77872 18.814971,-49.55716 33.513864,-50.10319 14.69889,-0.54603 34.68985,23.14082 32.38007,38.17587 -2.30977,15.03504 -26.92015,21.41866 -26.7941,30.84718 0.12605,9.42852 24.98824,21.90161 49.85057,34.37479 M 79.982246,223.79489 c 10.807488,-23.57481 21.614804,-47.14932 36.159694,-46.42144 14.54488,0.72788 32.82795,25.75866 29.02028,40.69573 -3.80766,14.93707 -29.70596,19.78078 -29.78989,28.29235 -0.0839,8.51157 25.64619,20.69068 51.37646,32.86987 M 83.537653,227.51252 c 12.207414,-22.3709 24.414647,-44.74149 38.805527,-42.7397 14.39088,2.0018 30.96605,28.37652 25.66049,43.2156 -5.30556,14.83909 -32.49177,18.14289 -32.78569,25.73751 -0.29392,7.59462 26.30415,19.47976 52.90235,31.36496 M 85.925743,231.25391 c 13.60734,-21.16697 27.214487,-42.33364 41.451357,-39.05794 14.23687,3.2757 29.10416,30.99436 22.3007,45.73547 -6.80345,14.74111 -35.27757,16.50499 -35.78148,23.18267 -0.5039,6.67767 26.9621,18.26882 54.42824,29.86004" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect14;#path-effect20" + inkscape:original-d="M 76.854315,163.2182 C 65.263308,120.38063 53.672039,77.543328 42.080504,34.706292 c 45.609202,3.527496 91.218526,7.055289 136.827386,10.583333 -5.29138,29.481723 -10.58307,58.964025 -15.875,88.446425 11.84364,16.88285 23.68677,33.76561 35.52976,50.64881 M 85.925743,231.25391 c 13.607407,-21.16693 27.214547,-42.3336 40.821427,-63.5 14.86712,27.71759 29.7344,55.43625 44.6012,83.15476 -28.47404,1.76363 -56.94816,3.52752 -85.422627,5.29167 27.466807,11.59112 54.932807,23.18228 82.398817,34.77381" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Interpolate_path_0_92_5.svg b/testfiles/lpe_tests/Interpolate_path_0_92_5.svg new file mode 100644 index 0000000..b6555a7 --- /dev/null +++ b/testfiles/lpe_tests/Interpolate_path_0_92_5.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.01"> + <defs + id="defs2"> + <inkscape:path-effect + effect="interpolate" + id="path-effect20" + is_visible="true" + trajectory="m 87.312499,144.29762 c -157.231352,111.44831 -1.297683,80.66835 8.315479,119.81845" + equidistant_spacing="false" + steps="40" + trajectory-nodetypes="cc" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 43.845239,197.97024 C 32.254232,155.13267 20.662963,112.29537 9.0714282,69.458337 54.68063,72.985833 100.28995,76.513626 145.89881,80.04167 c -5.29138,29.48172 -10.58307,58.96402 -15.875,88.44642 11.84364,16.88285 23.68677,33.76561 35.52976,50.64881 M 32.379839,204.93847 C 21.434945,162.65656 10.48979,120.37492 -0.45563196,78.093541 44.365311,82.241295 89.186374,86.389367 134.00698,90.537679 c -5.88581,28.771001 -11.77192,57.542571 -17.65828,86.314251 12.24424,16.74716 24.48795,33.49424 36.73153,50.24176 M 22.103329,211.36711 C 11.804548,169.64085 1.5055051,127.91487 -8.7938032,86.189145 35.238881,90.957159 79.271686,95.725509 123.30403,100.49409 c -6.48023,28.06028 -12.96077,56.12113 -19.44154,84.18208 12.64482,16.61148 25.28913,33.22287 37.9333,49.8347 M 12.969231,217.2776 C 3.3165632,176.107 -6.3363664,134.93667 -15.989562,93.766611 27.254864,99.154883 70.499412,104.54351 113.7435,109.93236 c -7.07466,27.34956 -14.149617,54.69968 -21.224819,82.0499 13.045419,16.4758 26.090309,32.95151 39.135069,49.42766 M 4.9310697,222.69141 C -4.0754846,182.07647 -13.082301,141.4618 -22.089383,100.8474 c 42.456167,6.00853 84.912457,12.01743 127.368283,18.02655 -7.669086,26.63884 -15.338461,53.27823 -23.008087,79.91773 13.446016,16.34011 26.891487,32.68014 40.336847,49.02061 M -2.0576306,227.63001 c -8.3604414,-40.05929 -16.7211444,-80.1183 -25.0821134,-120.17705 41.667908,6.62879 83.335941,13.25798 125.003512,19.88736 -8.263516,25.92812 -16.527312,51.85678 -24.791362,77.78556 13.84661,16.20442 27.692674,32.40877 41.538614,48.61355 M -8.0433462,232.11484 C -15.757674,192.61121 -23.472264,153.10786 -31.18712,113.60476 c 40.8796497,7.24905 81.759425,14.49852 122.638737,21.74817 -8.857943,25.2174 -17.716159,50.43533 -26.574634,75.65339 14.247204,16.06873 28.493852,32.1374 42.740387,48.2065 M -13.072553,236.16737 c -7.068215,-38.94797 -14.136692,-77.89567 -21.205435,-116.8431 40.0913916,7.8693 80.18291,15.73905 120.273964,23.60897 -9.45237,24.50668 -18.905008,49.01388 -28.357907,73.52121 14.647798,15.93305 29.295033,31.86604 43.942151,47.79945 M -17.191727,239.80905 c -6.422102,-38.39231 -12.844466,-76.78435 -19.267095,-115.17613 39.3031321,8.48957 78.606393,16.97959 117.909189,25.46978 -10.046797,23.79596 -20.093856,47.59244 -30.141179,71.38904 15.048392,15.79737 30.096213,31.59467 45.143925,47.3924 M -20.447345,243.06136 c -5.775989,-37.83665 -11.55224,-75.67304 -17.328756,-113.50916 38.51487408,9.10983 77.029877,18.22013 115.544416,27.33059 -10.641225,23.08524 -21.282705,46.17098 -31.924452,69.25686 15.448986,15.66168 30.897393,31.3233 46.345695,46.98535 M -22.885883,245.94574 c -5.129875,-37.281 -10.260013,-74.56173 -15.390416,-111.84219 37.72661554,9.73009 75.453361,19.46067 113.179642,29.19139 -11.235652,22.37452 -22.471553,44.74954 -33.707724,67.12469 15.84958,15.526 31.698573,31.05194 47.547466,46.5783 M -24.553816,248.48365 c -4.483762,-36.72533 -8.967786,-73.4504 -13.452076,-110.17521 36.9383564,10.35034 73.876845,20.7012 110.814867,31.0522 -11.830079,21.6638 -23.660401,43.32808 -35.490996,64.99252 16.250174,15.39031 32.499754,30.78056 48.749236,46.17124 M -25.49762,250.69657 c -3.837649,-36.16969 -7.675561,-72.3391 -11.513737,-108.50825 36.15009765,10.9706 72.300328,21.94174 108.450093,32.91301 -12.424506,20.95307 -24.849249,41.90663 -37.274269,62.86034 16.650768,15.25463 33.300934,30.5092 49.951007,45.7642 M -25.763772,252.60593 c -3.191536,-35.61402 -6.383334,-71.22778 -9.575398,-106.84127 35.36183918,11.59086 70.723813,23.18228 106.085319,34.77381 -13.018933,20.24236 -26.038097,40.48519 -39.057541,60.72817 17.051362,15.11894 34.102115,30.23783 51.152778,45.35714 M -25.398749,254.23321 c -2.545422,-35.05837 -5.091107,-70.11646 -7.637058,-105.1743 34.573581,12.21112 69.147297,24.42282 103.720546,36.63462 -13.613361,19.53163 -27.226946,39.06374 -40.840814,58.596 17.451956,14.98325 34.903295,29.96646 52.354548,44.95009 M -24.449024,255.59986 c -1.89931,-34.50271 -3.798882,-69.00515 -5.698719,-103.50732 33.7853219,12.83137 67.57078,25.66335 101.355771,38.49542 -14.207788,18.82091 -28.415794,37.64229 -42.624086,56.46382 17.85255,14.84757 35.704475,29.6951 53.556319,44.54304 M -22.961076,256.72735 c -1.253196,-33.94705 -2.506655,-67.89384 -3.760379,-101.84036 32.997063,13.45164 65.994264,26.90389 98.990997,40.35623 -14.802215,18.1102 -29.604642,36.22084 -44.407358,54.33165 18.253143,14.71189 36.505655,29.42373 54.758089,44.13599 M -20.98138,257.63713 c -0.607083,-33.3914 -1.214428,-66.78253 -1.82204,-100.17339 32.2088052,14.0719 64.417749,28.14443 96.626224,42.21704 -15.396642,17.39947 -30.793491,34.79939 -46.190631,52.19947 18.653738,14.5762 37.306836,29.15237 55.95986,43.72894 M -18.556411,258.35066 c 0.03903,-32.83574 0.0778,-65.67121 0.116299,-98.50642 31.420546,14.69216 62.841233,29.38497 94.26145,44.07784 -15.99107,16.68876 -31.982339,33.37795 -47.973903,50.06731 19.054331,14.44051 38.108016,28.88099 57.16163,43.32189 M -15.732647,258.8894 c 0.685143,-32.28008 1.370024,-64.5599 2.054639,-96.83944 30.632288,15.31241 61.264716,30.6255 91.896675,45.93864 -16.585496,15.97804 -33.171187,31.9565 -49.757175,47.93513 19.454925,14.30483 38.909196,28.60963 58.363401,42.91484 m -99.381456,-39.56376 c 1.331257,-31.72443 2.6622504,-63.44858 3.9929787,-95.17247 29.8440293,15.93267 59.6882003,31.86604 89.5319013,47.79945 -17.179924,15.26731 -34.360035,30.53504 -51.540448,45.80296 19.85552,14.16914 39.710377,28.33826 59.565172,42.50778 M -9.0746346,259.52835 c 1.9773697,-31.16877 3.9544764,-62.33727 5.9313179,-93.5055 29.0557707,16.55293 58.1116837,33.10658 87.1671277,49.66026 -17.774351,14.55659 -35.548884,29.11359 -53.323721,43.67078 20.256114,14.03346 40.511557,28.0669 60.766943,42.10074 M -5.3333387,259.67147 c 2.6234829,-30.6131 5.24670276,-61.22594 7.8696573,-91.83852 28.2675114,17.17319 56.5351684,34.34711 84.8023534,51.52106 -18.368778,13.84588 -36.737732,27.69215 -55.106993,41.53862 20.656708,13.89777 41.312738,27.79552 61.968713,41.69368 M -1.3791511,259.72565 C 1.8904451,229.6682 5.159778,199.61102 8.4288457,169.5541 c 27.4792533,17.79345 54.9586523,35.58765 82.4375793,53.38187 -18.963205,13.13515 -37.92658,26.2707 -56.890265,39.40644 21.057302,13.76208 42.113918,27.52416 63.170484,41.28663 M 2.7414523,259.71234 c 3.9157093,-29.50179 7.8311557,-59.00332 11.7463367,-88.50458 26.690994,18.41371 53.382136,36.82819 80.072805,55.24267 -19.557633,12.42444 -39.115428,24.84925 -58.673537,37.27427 21.457895,13.6264 42.915098,27.25279 64.372253,40.87958 M 6.9819952,259.65299 c 4.5618228,-28.94613 9.1233818,-57.89201 13.6846758,-86.83761 25.902736,19.03397 51.80562,38.06873 77.708031,57.10348 -20.152059,11.71372 -40.304276,23.4278 -60.456809,35.14209 21.858489,13.49072 43.716278,26.98143 65.574027,40.47253 M 11.296002,259.56907 c 5.207935,-28.39048 10.415608,-56.78069 15.623015,-85.17064 25.114477,19.65423 50.229104,39.30927 75.343253,58.96429 -20.746483,11.00299 -41.493121,22.00635 -62.240078,33.00992 22.259083,13.35503 44.517459,26.71006 66.775798,40.06548 M 15.636996,259.48203 c 5.854049,-27.83482 11.707834,-55.66937 17.561354,-83.50366 24.326219,20.27448 48.652588,40.5498 72.97848,60.82509 -21.34091,10.29227 -42.681969,20.58491 -64.023351,30.87775 22.659678,13.21934 45.318639,26.43869 67.977571,39.65842 M 19.958501,259.41334 c 6.500162,-27.27916 13.000061,-54.55806 19.499694,-81.83669 23.53796,20.89475 47.076072,41.79034 70.613705,62.6859 -21.935336,9.58155 -43.870817,19.16346 -65.806622,28.74557 23.060271,13.08366 46.119819,26.16733 69.179332,39.25138 M 24.214042,259.38446 c 7.146275,-26.7235 14.292287,-53.44675 21.438034,-80.16972 22.749701,21.515 45.499555,43.03088 68.248934,64.5467 -22.529767,8.87084 -45.059669,17.74201 -67.589898,26.6134 23.460865,12.94798 46.920999,25.89596 70.381108,38.84433 M 28.357143,259.41684 c 7.792388,-26.16785 15.584513,-52.33543 23.376372,-78.50275 21.961443,22.13526 43.92304,44.27142 65.884165,66.40751 -23.124199,8.16011 -46.248521,16.32056 -69.373175,24.48123 23.861459,12.81229 47.72218,25.62459 71.582875,38.43727 M 32.341326,259.53194 c 8.438502,-25.61219 16.87674,-51.22411 25.314713,-76.83577 21.173184,22.75552 42.346521,45.51195 63.519391,68.26831 -23.718627,7.44939 -47.43737,14.89911 -71.156448,22.34906 24.262053,12.6766 48.52336,25.35322 72.784648,38.03022 M 36.120117,259.75123 c 9.084615,-25.05653 18.168966,-50.1128 27.253052,-75.1688 20.384925,23.37577 40.770011,46.75248 61.154611,70.12912 -24.31305,6.73867 -48.626212,13.47766 -72.939714,20.21688 24.662647,12.54092 49.324544,25.08185 73.986414,37.62317 M 39.647039,260.09616 c 9.730728,-24.50088 19.461192,-49.00149 29.191391,-73.50183 19.596667,23.99603 39.19349,47.99302 58.78984,71.98992 -24.90748,6.02795 -49.815063,12.05621 -74.722989,18.08471 25.063241,12.40523 50.125719,24.81049 75.188189,37.21612 M 42.875616,260.58819 c 10.376841,-23.94522 20.753418,-47.89017 31.129731,-71.83486 18.808408,24.6163 37.616973,49.23356 56.425063,73.85073 -25.5019,5.31723 -51.003909,10.63476 -76.506259,15.95254 25.463835,12.26954 50.926899,24.53911 76.389959,36.80906 M 45.759372,261.24878 c 11.022954,-23.38956 22.045645,-46.77886 33.06807,-70.16789 18.02015,25.23656 36.040458,50.4741 54.060288,75.71154 -26.09633,4.60651 -52.192756,9.21332 -78.28953,13.82036 25.864429,12.13386 51.72808,24.26775 77.59173,36.40202 M 48.251831,262.09939 c 11.669068,-22.8339 23.337871,-45.66754 35.00641,-68.50091 17.231889,25.85681 34.463939,51.71464 51.695519,77.57234 -26.69076,3.89579 -53.381609,7.79187 -80.072808,11.68819 26.265023,11.99818 52.529258,23.99638 78.793498,35.99496 M 50.306518,263.16149 c 12.31518,-22.27825 24.630097,-44.55623 36.944749,-66.83395 16.443633,26.47708 32.887423,52.95518 49.330743,79.43315 -27.28519,3.18507 -54.570456,6.37042 -81.856079,9.55602 26.665618,11.86249 53.330439,23.72501 79.995269,35.58791 m -82.844245,-56.4481 c 12.961293,-21.72259 25.922323,-43.44492 38.883088,-65.16697 15.655377,27.09733 31.310907,54.19571 46.965967,81.29395 -27.87961,2.47435 -55.759302,4.94897 -83.639348,7.42384 27.066211,11.72681 54.131618,23.45365 81.197038,35.18087 M 52.916667,266.00595 c 13.607407,-21.16693 27.21455,-42.3336 40.821428,-63.5 14.867115,27.71759 29.734395,55.43625 44.601195,83.15476 -28.47404,1.76363 -56.948153,3.52752 -85.422624,5.29167 27.466805,11.59112 54.932804,23.18228 82.398814,34.77381" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect20" + inkscape:original-d="M 43.845239,197.97024 C 32.254232,155.13267 20.662963,112.29537 9.0714284,69.458334 54.68063,72.98583 100.28995,76.513623 145.89881,80.041667 c -5.29138,29.481723 -10.58307,58.964023 -15.875,88.446423 11.84364,16.88285 23.68677,33.76561 35.52976,50.64881 M 52.916667,266.00595 c 13.607407,-21.16693 27.21455,-42.3336 40.821428,-63.5 14.867115,27.71759 29.734395,55.43625 44.601195,83.15476 -28.47404,1.76363 -56.948152,3.52752 -85.422623,5.29167 27.466805,11.59112 54.932803,23.18228 82.398813,34.77381" + transform="translate(30.415662,-31.012048)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/JoinType_multi_mm_1_0_2.svg b/testfiles/lpe_tests/JoinType_multi_mm_1_0_2.svg new file mode 100644 index 0000000..635808f --- /dev/null +++ b/testfiles/lpe_tests/JoinType_multi_mm_1_0_2.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg22" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs16"> + <inkscape:path-effect + effect="join_type" + id="path-effect4553" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="extrp_arc3" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4549" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="miter" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4545" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="bevel" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4541" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="round" + miter_limit="5" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4537" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="extrp_arc" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M -147.929,71.982881 -38.94523,272.87087 a 375.28212,375.28212 0 0 1 9.214451,-12.96611 C 16.283808,197.97795 82.974236,148.11524 111.5063,69.091545 L 121.47011,41.495329 96.678726,57.1866 C 69.156767,74.606142 19.288727,44.651728 -26.439169,37.603023 a 145.90805,145.90805 0 0 0 -28.31416,-1.576163 192.78774,192.78774 0 0 1 19.392762,18.319547 c 23.916539,25.951987 32.0144946,49.039013 32.0144946,49.039013 4.20182748,12.20403 3.70039508,20.33543 -10.9008296,23.5357 C -61.796797,137.34302 -98.159946,99.879836 -76.531976,70.068305 -48.060275,30.823528 -5.7045676,-34.302004 45.066882,6.9543643 109.37905,59.213784 149.6172,16.083773 152.13945,-16.705388 l -15.59514,7.5913035 c 5.87163,3.914415 42.38585,34.7589775 38.35903,49.8179875 -0.47968,1.793847 -2.17375,4.67181 -8.67915,7.382145 -24.73613,10.305789 -34.24125,28.057256 -37.30621,43.803679 -0.13369,0.686834 -2.89525,15.089153 0.46218,27.766503 l 19.43014,-5.1458 c -3.09937,-11.70297 1.5831,-25.053138 1.5831,-25.053138 2.89796,-7.83897 9.62312,-17.010238 23.56097,-22.81715 10.70766,-4.461121 17.85989,-11.369113 20.36673,-20.743873 7.88757,-29.496966 -37.40456,-65.58606 -46.62731,-71.734564 a 37.577571,37.577571 0 0 0 -22.74166,-6.263211 14.839912,14.839912 0 0 1 7.14652,13.854514 C 131.15918,-6.0338409 112.71296,36.023486 57.742638,-8.6448405 -10.012033,-63.701605 -65.330494,20.399788 -92.801356,58.26503 c -34.286764,47.26015 20.069605,102.05182 82.8577824,88.29003 36.9585956,-8.10052 31.9887016,-39.74033 19.5115964,-63.609579 0,0 -10.19504082,-20.569452 -30.1479338,-42.220462 l -8.921398,16.743384 C 12.032985,63.870687 70.07017,97.815786 107.42841,74.17054 L 92.60084,62.265595 C 65.316746,137.83286 1.3611292,184.36009 -45.864457,247.91666 L -28.963856,249.1183 -130.26148,62.398071 Z" + id="path05" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4537" + inkscape:original-d="M -139.09524,67.190476 -37.797618,253.91071 C 8.8224684,191.16902 74.145491,142.97405 102.05357,65.67857 69.581324,86.231309 15.647151,54.259095 -27.970239,47.535713 c 0,0 71.059523,77.107137 15.875001,89.202377 C -67.27976,148.83333 -112.6369,102.72024 -84.666666,64.166667 -56.696427,25.613095 -7.8759912,-49.01618 51.40476,-0.84523809 111.05962,47.629701 140.38588,5.0549602 142.11905,-17.47619 c 9.45117,6.30078 71.00286,56.910644 27.97023,74.839285 -42.15844,17.564429 -30.99405,59.720235 -30.99405,59.720235" + sodipodi:nodetypes="ccccssscsc" + transform="translate(-105.83333,-27.970238)" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -23.315928,209.63821 c 4.307235,16.10531 8.336043,25.9905 10.356409,31.29058 6.6169187,17.35834 16.4765894,39.17929 29.055236,55.04281 6.36528,8.02755 14.044391,15.25126 22.794587,19.28225 11.934575,5.49794 24.941181,4.88569 37.830753,-3.90265 11.933008,-8.13614 19.976094,-19.58918 25.341433,-32.2167 0,0 20.69211,-46.98968 3.73609,-120.46577 l -19.401805,5.20369 c 10.568357,34.49671 20.642455,53.73439 20.642455,53.73439 2.99923,6.35749 6.28245,12.68252 9.71069,18.32363 1.91332,3.14834 3.92873,6.17745 6.00285,8.92335 5.066,6.70682 11.8393,13.27242 19.5449,15.15026 12.21511,2.97679 21.80731,-5.33913 27.85629,-18.53691 5.63224,-12.28852 7.99579,-24.69002 8.21173,-36.62032 0,0 0.61727,-46.69063 -31.44259,-86.50692 l -15.65572,12.6059 c 15.22287,18.90582 23.14378,45.92139 23.14378,45.92139 4.96052,17.44504 6.16326,37.25937 -2.5294,56.22519 -2.97412,6.48899 -4.91746,7.39872 -4.91746,7.39872 -0.22608,0.0259 -4.99,-2.57518 -11.19408,-12.07082 -3.10204,-4.74781 -6.16519,-10.35205 -9.14265,-16.4513 0,0 -9.53933,-16.5343 -21.01245,-53.98426 a 10.05,10.05 0 0 0 -19.401801,5.20369 c 8.563596,37.10891 5.174567,74.20346 5.174567,74.20346 -2.268377,24.29913 -9.586276,46.16787 -25.9899,57.35216 -13.334609,9.09178 -25.173524,1.23028 -37.425895,-16.5068 0,0 -18.0470967,-22.10478 -31.8704491,-73.7921 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4541" + inkscape:original-d="m -13.607143,207.04167 c 0,0 34.773809,130.02381 84.666666,96.00594 49.892857,-34.01785 24.946427,-142.11904 24.946427,-142.11904 0,0 40.06548,130.77976 65.01191,76.35119 24.94642,-54.42857 -21.92262,-112.63691 -21.92262,-112.63691" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -50.846247,372.55025 c 2.064404,29.1081 16.654013,52.19772 16.654013,52.19772 15.984228,25.23225 46.508222,41.78578 96.198741,16.52644 36.639566,-18.62512 64.113513,-38.29539 77.740353,-53.78629 8.53876,-9.70679 14.73852,-20.89937 10.57112,-31.52564 -6.01982,-15.34968 -27.67102,-16.74807 -56.170036,-11.38687 -15.807839,2.97376 -27.435029,7.01372 -34.957682,11.77415 -6.461419,4.08886 -10.990816,9.22289 -12.709153,15.74531 0,0 -5.901045,20.50323 24.064836,37.91583 l 15.082285,-8.10503 4.535713,-77.86309 -8.603704,9.3634 c 35.361711,-5.08071 55.605331,-3.51741 55.605331,-3.51741 6.46989,0.17694 12.48688,0.64939 17.73088,1.52339 10.48801,1.748 13.60867,4.28068 13.75596,4.92178 0,0 0.15019,2.79092 -5.4377,9.31013 -9.13883,10.66197 -15.00675,22.19297 -18.52591,33.77912 0,0 -13.57296,45.51271 8.8113,91.32236 l 18.05932,-8.82444 c -10.36411,-21.21027 -11.2278,-49.16794 -11.2278,-49.16794 -0.32933,-17.8168 3.82374,-37.32105 18.14415,-54.0282 9.53393,-11.12292 13.61996,-23.21919 7.02362,-33.31359 -2.44947,-3.74843 -5.94006,-6.42079 -9.48702,-8.32025 -3.16331,-1.69401 -6.69595,-2.9551 -10.29481,-3.91026 -6.41643,-1.70295 -13.79772,-2.63094 -21.26055,-3.08956 0,0 -21.25845,-2.97406 -65.755347,3.41917 l -8.603704,9.3634 -4.535713,77.86309 15.082285,-8.10503 C 67.647035,385.07934 65.882974,377.4622 65.882974,377.4622 c 0.01578,-0.51621 2.963711,-7.67437 31.98098,-13.13307 24.370786,-4.58461 33.741606,-1.02803 33.741606,-1.02803 0,0 -0.70856,3.8154 -6.95053,10.91123 -12.01506,13.65863 -35.824918,30.87885 -71.756772,49.14422 -41.02377,20.85375 -59.6366804,7.16917 -70.110785,-9.36495 0,0 -11.935521,-19.61861 -13.58408,-42.86331 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4545" + inkscape:original-d="m -40.821427,371.83927 c 0,0 7.559522,106.5893 98.273808,60.47621 90.714279,-46.11312 114.904759,-92.22621 38.553569,-77.86311 -76.351188,14.36311 -20.410712,46.86905 -20.410712,46.86905 l 4.535713,-77.86309 c 0,0 131.535709,-18.89881 90.714289,28.72619 -40.82143,47.625 -8.31548,114.14881 -8.31548,114.14881" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -145.99672,301.95733 c -7.96298,17.74761 -11.22952,44.02871 -16.4069,64.4281 -5.00864,19.73457 -10.30512,28.79279 -17.94623,27.96787 l -37.03031,-3.99774 29.99298,22.08273 c 40.9187,30.12694 44.95294,31.09659 44.95294,31.09659 2.3182,1.48277 4.60596,2.91682 6.81993,4.26724 2.45745,1.49893 4.84891,2.90986 7.10165,4.17528 2.49381,1.40084 4.9124,2.67553 7.10046,3.70471 2.388,1.12322 4.99427,2.17784 7.31955,2.72075 2.84345,0.66389 10.32184,1.32643 14.02079,-5.33167 2.673007,-4.81141 51.954285,-86.71462 40.890217,-114.78627 -4.837162,-12.2728 -17.260171,-14.4897 -30.890021,-10.01132 -66.323776,21.79211 -98.091286,93.45497 16.525855,95.94664 117.230991,2.54851 100.47519,-58.63108 90.066101,-98.03692 -2.825622,-10.697 -9.9949847,-19.39261 -18.4844372,-26.22827 -13.2078208,-10.63487 -31.5922438,-18.34317 -48.0583238,-23.62149 0,0 -21.690545,-7.50583 -47.586006,-11.20518 l -2.842575,19.89798 c 50.450852,7.20727 77.241198,24.63412 77.241198,24.63412 7.241375,4.33189 12.749014,8.87444 16.3875286,13.81242 1.9329475,2.62329 3.2224708,5.24412 3.9091746,7.84378 10.7609408,40.73785 20.9668898,74.79011 -70.1958062,72.8083 -40.436565,-0.87905 -53.668215,-10.03758 -55.844825,-16.16455 -3.50083,-9.85454 15.74983,-30.92903 45.156397,-40.59119 4.364466,-1.43404 6.177002,-1.2697 6.696925,-1.13543 0,0 -0.819757,-0.66802 -0.819757,-0.66802 0.200014,0.41021 0.535073,1.5288 0.432046,4.26763 -0.976772,25.96592 -37.051571,87.89153 -40.154251,93.47634 0,0 6.21942,-4.44863 6.21942,-4.44863 0,0 0.46017,-0.0594 0.46017,-0.0594 0,0 0.42224,-0.0283 0.42224,-0.0283 0,0 0.36889,-0.003 0.36889,-0.003 0,0 0.30051,0.0151 0.30051,0.0151 0,0 0.2177,0.0228 0.2177,0.0228 0,0 0.12087,0.0188 0.12087,0.0188 0,0 0.0259,0.005 0.01,0.002 -0.45467,-0.10615 -1.46476,-0.45619 -3.33448,-1.33564 -1.64388,-0.77321 -3.57672,-1.78529 -5.81163,-3.0407 -2.00309,-1.12519 -4.17306,-2.40416 -6.47895,-3.81064 -2.07303,-1.26445 -4.23583,-2.61983 -6.45616,-4.04 0,0 -3.23535,-0.43515 -43.86615,-30.35012 l -7.03733,18.08499 c 42.92407,4.63403 41.84156,-75.16061 54.84925,-104.15167 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4549" + inkscape:original-d="m -136.82738,306.07142 c -14.78014,32.94144 -12.57968,101.73082 -44.60119,98.27382 0,0 68.79167,50.64879 72.57143,43.84524 3.77976,-6.80357 74.839283,-127.75596 21.922617,-110.36906 -52.916667,17.38691 -90.714287,74.08334 13.607142,76.35119 C 30.994048,416.44048 17.386905,368.81548 6.8035714,328.75 -3.7797618,288.68452 -99.02976,275.07737 -99.02976,275.07737" + sodipodi:nodetypes="cccsssc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -159.84418,491.28933 c 38.3193,25.91378 37.34158,24.19798 51.84427,32.88628 7.04907,4.22296 14.398221,8.51155 21.74616,12.62685 4.083096,2.28678 8.171614,4.5233 12.212245,6.66728 4.488259,2.38149 8.930338,4.65558 13.246804,6.76008 4.791832,2.33625 9.470762,4.48351 13.904139,6.34177 4.910668,2.0583 9.677613,3.82481 14.014382,5.10273 4.750354,1.39979 9.772686,2.39949 13.977371,2.39949 26.6431935,0 105.846023,13.71389 140.677819,-62.57221 11.54754,-25.29058 7.95373,-42.90433 -14.36477,-42.3305 -9.122154,0.23454 -22.120713,4.11302 -36.283547,8.71999 -35.407085,11.51743 -83.485453,29.40376 -128.579457,22.52502 a 125.1881,125.1881 0 0 1 -8.069604,-1.50318 12.100237,12.100237 0 0 0 2.395365,20.58743 c 14.704416,6.68383 112.681695,15.69312 128.990792,10.68724 5.409603,-1.66042 13.766957,-9.25352 5.934423,-18.15844 0,0 2.023529,3.93917 2.023529,3.93917 -9.19e-4,-0.007 -0.0027,-0.0197 -0.0053,-0.0415 -0.0029,-0.0242 -0.0065,-0.0557 -0.01065,-0.0963 -0.0046,-0.0451 -0.0096,-0.0982 -0.01496,-0.16088 -0.0059,-0.0697 -0.01198,-0.14822 -0.01807,-0.23702 -0.0068,-0.0987 -0.01339,-0.20721 -0.01976,-0.32681 -0.0071,-0.13288 -0.0137,-0.27682 -0.01977,-0.43278 -0.05838,-1.49915 -0.0507,-3.60405 0.02636,-6.3509 0.06895,-2.45783 0.190464,-5.2899 0.356306,-8.43497 0.08228,-1.56041 -3.059743,17.94664 6.453107,-78.93741 l -15.939282,7.12657 82.973955,60.75593 11.87476,-16.21728 -97.17916,-71.15739 a 11957.371,11957.371 0 0 0 -1.734077,17.52803 c -9.529606,97.05471 -6.382863,77.21558 -6.521416,79.84313 -0.171314,3.24881 -0.301705,6.27124 -0.376288,8.92971 -0.08242,2.93794 -0.100444,5.60648 -0.01905,7.69672 0.08405,2.15829 0.230124,6.63479 3.057271,9.84901 0,0 3.135751,-14.30326 3.135751,-14.30326 -0.09066,0.0198 -0.21181,0.0439 -0.370008,0.0714 -0.175776,0.0306 -0.383442,0.0628 -0.628363,0.0961 -0.272135,0.037 -0.578263,0.0736 -0.922707,0.10932 -0.382716,0.0397 -0.802309,0.0771 -1.262116,0.1119 -0.510897,0.0387 -1.062347,0.0734 -1.656684,0.10401 -1.494252,0.0769 -3.202665,0.12458 -5.125102,0.14267 -9.853958,0.0927 -23.675928,-0.58321 -38.567335,-1.72883 -29.871688,-2.29809 -61.110813,-6.42925 -66.118685,-8.70555 l -5.674239,19.08425 c 48.733882,7.43399 102.746391,-11.8694 137.828069,-23.28098 20.951385,-6.81519 31.924615,-8.21373 31.924615,-8.21373 0,0 -0.90351,-1.57079 -0.87853,-1.39786 0.003,0.0194 0.007,0.05 0.0105,0.0931 0.004,0.0479 0.008,0.11011 0.011,0.18761 0.003,0.0863 0.004,0.18977 0.001,0.31218 -0.003,0.13601 -0.0105,0.29298 -0.0245,0.47227 -0.0155,0.19959 -0.0388,0.42324 -0.0722,0.67393 -0.38935,2.92462 -1.73663,7.25506 -4.8256,14.02031 -28.23104,61.82958 -88.560602,50.82069 -122.393599,50.82069 -1.842934,0 -4.365007,-0.42149 -8.29601,-1.57985 -3.476452,-1.0244 -7.44366,-2.48116 -11.925758,-4.35983 -4.020112,-1.68503 -8.328147,-3.65917 -12.865527,-5.87137 -4.079825,-1.98912 -8.311255,-4.15456 -12.634319,-6.4484 -3.889559,-2.06381 -7.842859,-4.22609 -11.811583,-6.44882 -7.145336,-4.00182 -14.321859,-8.18908 -21.238183,-12.33252 -13.954611,-8.35995 -12.944991,-6.6168 -50.914191,-32.29381 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4553" + inkscape:original-d="m -154.21428,482.96427 c 0,0 105.077375,71.05954 135.315471,71.05954 30.238095,0 100.004291,12.36139 131.535709,-56.69645 32.58057,-71.35563 -77.773298,17.33655 -171.601184,3.02382 13.906511,6.32114 130.370788,16.44505 123.220235,8.31548 -3.036926,-3.45272 6.315114,-98.699 6.315114,-98.699 l 82.973955,60.75593" + sodipodi:nodetypes="csscscc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/JoinType_multi_px_1_0_2.svg b/testfiles/lpe_tests/JoinType_multi_px_1_0_2.svg new file mode 100644 index 0000000..3589658 --- /dev/null +++ b/testfiles/lpe_tests/JoinType_multi_px_1_0_2.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg22" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs16"> + <inkscape:path-effect + effect="join_type" + id="path-effect4553" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="extrp_arc3" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4549" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="miter" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4545" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="bevel" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4541" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="round" + miter_limit="5" + attempt_force_join="true" + lpeversion="1" /> + <inkscape:path-effect + effect="join_type" + id="path-effect4537" + is_visible="true" + linecap_type="butt" + line_width="20.1" + linejoin_type="extrp_arc" + miter_limit="100" + attempt_force_join="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M -147.929,71.982881 -38.94523,272.87087 a 375.28212,375.28212 0 0 1 9.214451,-12.96611 C 16.283808,197.97795 82.974236,148.11524 111.5063,69.091545 L 121.47011,41.495329 96.678726,57.1866 C 69.156767,74.606142 19.288727,44.651728 -26.439169,37.603023 a 145.90805,145.90805 0 0 0 -28.31416,-1.576163 192.78774,192.78774 0 0 1 19.392762,18.319547 c 23.916539,25.951987 32.0144946,49.039013 32.0144946,49.039013 4.20182748,12.20403 3.70039508,20.33543 -10.9008296,23.5357 C -61.796797,137.34302 -98.159946,99.879836 -76.531976,70.068305 -48.060275,30.823528 -5.7045676,-34.302004 45.066882,6.9543643 109.37905,59.213784 149.6172,16.083773 152.13945,-16.705388 l -15.59514,7.5913035 c 5.87163,3.914415 42.38585,34.7589775 38.35903,49.8179875 -0.47968,1.793847 -2.17375,4.67181 -8.67915,7.382145 -24.73613,10.305789 -34.24125,28.057256 -37.30621,43.803679 -0.13369,0.686834 -2.89525,15.089153 0.46218,27.766503 l 19.43014,-5.1458 c -3.09937,-11.70297 1.5831,-25.053138 1.5831,-25.053138 2.89796,-7.83897 9.62312,-17.010238 23.56097,-22.81715 10.70766,-4.461121 17.85989,-11.369113 20.36673,-20.743873 7.88757,-29.496966 -37.40456,-65.58606 -46.62731,-71.734564 a 37.577571,37.577571 0 0 0 -22.74166,-6.263211 14.839912,14.839912 0 0 1 7.14652,13.854514 C 131.15918,-6.0338409 112.71296,36.023486 57.742638,-8.6448405 -10.012033,-63.701605 -65.330494,20.399788 -92.801356,58.26503 c -34.286764,47.26015 20.069605,102.05182 82.8577824,88.29003 36.9585956,-8.10052 31.9887016,-39.74033 19.5115964,-63.609579 0,0 -10.19504082,-20.569452 -30.1479338,-42.220462 l -8.921398,16.743384 C 12.032985,63.870687 70.07017,97.815786 107.42841,74.17054 L 92.60084,62.265595 C 65.316746,137.83286 1.3611292,184.36009 -45.864457,247.91666 L -28.963856,249.1183 -130.26148,62.398071 Z" + id="path05" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4537" + inkscape:original-d="M -139.09524,67.190476 -37.797618,253.91071 C 8.8224684,191.16902 74.145491,142.97405 102.05357,65.67857 69.581324,86.231309 15.647151,54.259095 -27.970239,47.535713 c 0,0 71.059523,77.107137 15.875001,89.202377 C -67.27976,148.83333 -112.6369,102.72024 -84.666666,64.166667 -56.696427,25.613095 -7.8759912,-49.01618 51.40476,-0.84523809 111.05962,47.629701 140.38588,5.0549602 142.11905,-17.47619 c 9.45117,6.30078 71.00286,56.910644 27.97023,74.839285 -42.15844,17.564429 -30.99405,59.720235 -30.99405,59.720235" + sodipodi:nodetypes="ccccssscsc" + transform="translate(-105.83333,-27.970238)" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -23.315928,209.63821 c 4.307235,16.10531 8.336043,25.9905 10.356409,31.29058 6.6169187,17.35834 16.4765894,39.17929 29.055236,55.04281 6.36528,8.02755 14.044391,15.25126 22.794587,19.28225 11.934575,5.49794 24.941181,4.88569 37.830753,-3.90265 11.933008,-8.13614 19.976094,-19.58918 25.341433,-32.2167 0,0 20.69211,-46.98968 3.73609,-120.46577 l -19.401805,5.20369 c 10.568357,34.49671 20.642455,53.73439 20.642455,53.73439 2.99923,6.35749 6.28245,12.68252 9.71069,18.32363 1.91332,3.14834 3.92873,6.17745 6.00285,8.92335 5.066,6.70682 11.8393,13.27242 19.5449,15.15026 12.21511,2.97679 21.80731,-5.33913 27.85629,-18.53691 5.63224,-12.28852 7.99579,-24.69002 8.21173,-36.62032 0,0 0.61727,-46.69063 -31.44259,-86.50692 l -15.65572,12.6059 c 15.22287,18.90582 23.14378,45.92139 23.14378,45.92139 4.96052,17.44504 6.16326,37.25937 -2.5294,56.22519 -2.97412,6.48899 -4.91746,7.39872 -4.91746,7.39872 -0.22608,0.0259 -4.99,-2.57518 -11.19408,-12.07082 -3.10204,-4.74781 -6.16519,-10.35205 -9.14265,-16.4513 0,0 -9.53933,-16.5343 -21.01245,-53.98426 a 10.05,10.05 0 0 0 -19.401801,5.20369 c 8.563596,37.10891 5.174567,74.20346 5.174567,74.20346 -2.268377,24.29913 -9.586276,46.16787 -25.9899,57.35216 -13.334609,9.09178 -25.173524,1.23028 -37.425895,-16.5068 0,0 -18.0470967,-22.10478 -31.8704491,-73.7921 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4541" + inkscape:original-d="m -13.607143,207.04167 c 0,0 34.773809,130.02381 84.666666,96.00594 49.892857,-34.01785 24.946427,-142.11904 24.946427,-142.11904 0,0 40.06548,130.77976 65.01191,76.35119 24.94642,-54.42857 -21.92262,-112.63691 -21.92262,-112.63691" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -50.846247,372.55025 c 2.064404,29.1081 16.654013,52.19772 16.654013,52.19772 15.984228,25.23225 46.508222,41.78578 96.198741,16.52644 36.639566,-18.62512 64.113513,-38.29539 77.740353,-53.78629 8.53876,-9.70679 14.73852,-20.89937 10.57112,-31.52564 -6.01982,-15.34968 -27.67102,-16.74807 -56.170036,-11.38687 -15.807839,2.97376 -27.435029,7.01372 -34.957682,11.77415 -6.461419,4.08886 -10.990816,9.22289 -12.709153,15.74531 0,0 -5.901045,20.50323 24.064836,37.91583 l 15.082285,-8.10503 4.535713,-77.86309 -8.603704,9.3634 c 35.361711,-5.08071 55.605331,-3.51741 55.605331,-3.51741 6.46989,0.17694 12.48688,0.64939 17.73088,1.52339 10.48801,1.748 13.60867,4.28068 13.75596,4.92178 0,0 0.15019,2.79092 -5.4377,9.31013 -9.13883,10.66197 -15.00675,22.19297 -18.52591,33.77912 0,0 -13.57296,45.51271 8.8113,91.32236 l 18.05932,-8.82444 c -10.36411,-21.21027 -11.2278,-49.16794 -11.2278,-49.16794 -0.32933,-17.8168 3.82374,-37.32105 18.14415,-54.0282 9.53393,-11.12292 13.61996,-23.21919 7.02362,-33.31359 -2.44947,-3.74843 -5.94006,-6.42079 -9.48702,-8.32025 -3.16331,-1.69401 -6.69595,-2.9551 -10.29481,-3.91026 -6.41643,-1.70295 -13.79772,-2.63094 -21.26055,-3.08956 0,0 -21.25845,-2.97406 -65.755347,3.41917 l -8.603704,9.3634 -4.535713,77.86309 15.082285,-8.10503 C 67.647035,385.07934 65.882974,377.4622 65.882974,377.4622 c 0.01578,-0.51621 2.963711,-7.67437 31.98098,-13.13307 24.370786,-4.58461 33.741606,-1.02803 33.741606,-1.02803 0,0 -0.70856,3.8154 -6.95053,10.91123 -12.01506,13.65863 -35.824918,30.87885 -71.756772,49.14422 -41.02377,20.85375 -59.6366804,7.16917 -70.110785,-9.36495 0,0 -11.935521,-19.61861 -13.58408,-42.86331 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4545" + inkscape:original-d="m -40.821427,371.83927 c 0,0 7.559522,106.5893 98.273808,60.47621 90.714279,-46.11312 114.904759,-92.22621 38.553569,-77.86311 -76.351188,14.36311 -20.410712,46.86905 -20.410712,46.86905 l 4.535713,-77.86309 c 0,0 131.535709,-18.89881 90.714289,28.72619 -40.82143,47.625 -8.31548,114.14881 -8.31548,114.14881" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -145.99672,301.95733 c -7.96298,17.74761 -11.22952,44.02871 -16.4069,64.4281 -5.00864,19.73457 -10.30512,28.79279 -17.94623,27.96787 l -37.03031,-3.99774 29.99298,22.08273 c 40.9187,30.12694 44.95294,31.09659 44.95294,31.09659 2.3182,1.48277 4.60596,2.91682 6.81993,4.26724 2.45745,1.49893 4.84891,2.90986 7.10165,4.17528 2.49381,1.40084 4.9124,2.67553 7.10046,3.70471 2.388,1.12322 4.99427,2.17784 7.31955,2.72075 2.84345,0.66389 10.32184,1.32643 14.02079,-5.33167 2.673007,-4.81141 51.954285,-86.71462 40.890217,-114.78627 -4.837162,-12.2728 -17.260171,-14.4897 -30.890021,-10.01132 -66.323776,21.79211 -98.091286,93.45497 16.525855,95.94664 117.230991,2.54851 100.47519,-58.63108 90.066101,-98.03692 -2.825622,-10.697 -9.9949847,-19.39261 -18.4844372,-26.22827 -13.2078208,-10.63487 -31.5922438,-18.34317 -48.0583238,-23.62149 0,0 -21.690545,-7.50583 -47.586006,-11.20518 l -2.842575,19.89798 c 50.450852,7.20727 77.241198,24.63412 77.241198,24.63412 7.241375,4.33189 12.749014,8.87444 16.3875286,13.81242 1.9329475,2.62329 3.2224708,5.24412 3.9091746,7.84378 10.7609408,40.73785 20.9668898,74.79011 -70.1958062,72.8083 -40.436565,-0.87905 -53.668215,-10.03758 -55.844825,-16.16455 -3.50083,-9.85454 15.74983,-30.92903 45.156397,-40.59119 4.364466,-1.43404 6.177002,-1.2697 6.696925,-1.13543 0,0 -0.819757,-0.66802 -0.819757,-0.66802 0.200014,0.41021 0.535073,1.5288 0.432046,4.26763 -0.976772,25.96592 -37.051571,87.89153 -40.154251,93.47634 0,0 6.21942,-4.44863 6.21942,-4.44863 0,0 0.46017,-0.0594 0.46017,-0.0594 0,0 0.42224,-0.0283 0.42224,-0.0283 0,0 0.36889,-0.003 0.36889,-0.003 0,0 0.30051,0.0151 0.30051,0.0151 0,0 0.2177,0.0228 0.2177,0.0228 0,0 0.12087,0.0188 0.12087,0.0188 0,0 0.0259,0.005 0.01,0.002 -0.45467,-0.10615 -1.46476,-0.45619 -3.33448,-1.33564 -1.64388,-0.77321 -3.57672,-1.78529 -5.81163,-3.0407 -2.00309,-1.12519 -4.17306,-2.40416 -6.47895,-3.81064 -2.07303,-1.26445 -4.23583,-2.61983 -6.45616,-4.04 0,0 -3.23535,-0.43515 -43.86615,-30.35012 l -7.03733,18.08499 c 42.92407,4.63403 41.84156,-75.16061 54.84925,-104.15167 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4549" + inkscape:original-d="m -136.82738,306.07142 c -14.78014,32.94144 -12.57968,101.73082 -44.60119,98.27382 0,0 68.79167,50.64879 72.57143,43.84524 3.77976,-6.80357 74.839283,-127.75596 21.922617,-110.36906 -52.916667,17.38691 -90.714287,74.08334 13.607142,76.35119 C 30.994048,416.44048 17.386905,368.81548 6.8035714,328.75 -3.7797618,288.68452 -99.02976,275.07737 -99.02976,275.07737" + sodipodi:nodetypes="cccsssc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -159.84418,491.28933 c 38.3193,25.91378 37.34158,24.19798 51.84427,32.88628 7.04907,4.22296 14.398221,8.51155 21.74616,12.62685 4.083096,2.28678 8.171614,4.5233 12.212245,6.66728 4.488259,2.38149 8.930338,4.65558 13.246804,6.76008 4.791832,2.33625 9.470762,4.48351 13.904139,6.34177 4.910668,2.0583 9.677613,3.82481 14.014382,5.10273 4.750354,1.39979 9.772686,2.39949 13.977371,2.39949 26.6431935,0 105.846023,13.71389 140.677819,-62.57221 11.54754,-25.29058 7.95373,-42.90433 -14.36477,-42.3305 -9.122154,0.23454 -22.120713,4.11302 -36.283547,8.71999 -35.407085,11.51743 -83.485453,29.40376 -128.579457,22.52502 a 125.1881,125.1881 0 0 1 -8.069604,-1.50318 12.100237,12.100237 0 0 0 2.395365,20.58743 c 14.704416,6.68383 112.681695,15.69312 128.990792,10.68724 5.409603,-1.66042 13.766957,-9.25352 5.934423,-18.15844 0,0 2.023529,3.93917 2.023529,3.93917 -9.19e-4,-0.007 -0.0027,-0.0197 -0.0053,-0.0415 -0.0029,-0.0242 -0.0065,-0.0557 -0.01065,-0.0963 -0.0046,-0.0451 -0.0096,-0.0982 -0.01496,-0.16088 -0.0059,-0.0697 -0.01198,-0.14822 -0.01807,-0.23702 -0.0068,-0.0987 -0.01339,-0.20721 -0.01976,-0.32681 -0.0071,-0.13288 -0.0137,-0.27682 -0.01977,-0.43278 -0.05838,-1.49915 -0.0507,-3.60405 0.02636,-6.3509 0.06895,-2.45783 0.190464,-5.2899 0.356306,-8.43497 0.08228,-1.56041 -3.059743,17.94664 6.453107,-78.93741 l -15.939282,7.12657 82.973955,60.75593 11.87476,-16.21728 -97.17916,-71.15739 a 11957.371,11957.371 0 0 0 -1.734077,17.52803 c -9.529606,97.05471 -6.382863,77.21558 -6.521416,79.84313 -0.171314,3.24881 -0.301705,6.27124 -0.376288,8.92971 -0.08242,2.93794 -0.100444,5.60648 -0.01905,7.69672 0.08405,2.15829 0.230124,6.63479 3.057271,9.84901 0,0 3.135751,-14.30326 3.135751,-14.30326 -0.09066,0.0198 -0.21181,0.0439 -0.370008,0.0714 -0.175776,0.0306 -0.383442,0.0628 -0.628363,0.0961 -0.272135,0.037 -0.578263,0.0736 -0.922707,0.10932 -0.382716,0.0397 -0.802309,0.0771 -1.262116,0.1119 -0.510897,0.0387 -1.062347,0.0734 -1.656684,0.10401 -1.494252,0.0769 -3.202665,0.12458 -5.125102,0.14267 -9.853958,0.0927 -23.675928,-0.58321 -38.567335,-1.72883 -29.871688,-2.29809 -61.110813,-6.42925 -66.118685,-8.70555 l -5.674239,19.08425 c 48.733882,7.43399 102.746391,-11.8694 137.828069,-23.28098 20.951385,-6.81519 31.924615,-8.21373 31.924615,-8.21373 0,0 -0.90351,-1.57079 -0.87853,-1.39786 0.003,0.0194 0.007,0.05 0.0105,0.0931 0.004,0.0479 0.008,0.11011 0.011,0.18761 0.003,0.0863 0.004,0.18977 0.001,0.31218 -0.003,0.13601 -0.0105,0.29298 -0.0245,0.47227 -0.0155,0.19959 -0.0388,0.42324 -0.0722,0.67393 -0.38935,2.92462 -1.73663,7.25506 -4.8256,14.02031 -28.23104,61.82958 -88.560602,50.82069 -122.393599,50.82069 -1.842934,0 -4.365007,-0.42149 -8.29601,-1.57985 -3.476452,-1.0244 -7.44366,-2.48116 -11.925758,-4.35983 -4.020112,-1.68503 -8.328147,-3.65917 -12.865527,-5.87137 -4.079825,-1.98912 -8.311255,-4.15456 -12.634319,-6.4484 -3.889559,-2.06381 -7.842859,-4.22609 -11.811583,-6.44882 -7.145336,-4.00182 -14.321859,-8.18908 -21.238183,-12.33252 -13.954611,-8.35995 -12.944991,-6.6168 -50.914191,-32.29381 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4553" + inkscape:original-d="m -154.21428,482.96427 c 0,0 105.077375,71.05954 135.315471,71.05954 30.238095,0 100.004291,12.36139 131.535709,-56.69645 32.58057,-71.35563 -77.773298,17.33655 -171.601184,3.02382 13.906511,6.32114 130.370788,16.44505 123.220235,8.31548 -3.036926,-3.45272 6.315114,-98.699 6.315114,-98.699 l 82.973955,60.75593" + sodipodi:nodetypes="csscscc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Knot_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Knot_multi_mm_1_0_2.svg new file mode 100644 index 0000000..7f88dca --- /dev/null +++ b/testfiles/lpe_tests/Knot_multi_mm_1_0_2.svg @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 249.99999" + version="1.1" + id="svg22" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + + <defs + id="defs16"> + <inkscape:path-effect + effect="knot" + id="path-effect75" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="true" + inverse_width="true" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="-279.75511 | 211.21331 | 0 | 0 | 8 | 41 | 0.60265319 | 2.693983 | 1 | -240.70418 | 189.00431 | 0 | 0 | 3 | 50 | 0.31729802 | 4.9900542 | 1 | -262.47485 | 257.46537 | 0 | 0 | 16 | 59 | 0.91455909 | 5.7177699 | 1 | -227.03402 | 185.24291 | 0 | 0 | 2 | 84 | 0.22574263 | 9.5551317 | 1 | -216.59469 | 182.97708 | 0 | 0 | 1 | 109 | 0.13916631 | 13.446555 | 1 | -277.26401 | 208.30691 | 0 | 0 | 7 | 115 | 0.57514241 | 14.058555 | 1 | -283.05632 | 216.98912 | 0 | 0 | 10 | 118 | 0.65295782 | 14.125185 | 1 | -280.57922 | 237.65487 | 0 | 0 | 12 | 145 | 0.80106356 | 16.949145 | 1 | -238.60889 | 273.92283 | 0 | 1 | 18 | 9 | 0.99579148 | 1.606158 | 1 | -284.29361 | 227.3355 | 0 | 1 | 11 | 15 | 0.73213054 | 2.6514659 | 1 | -281.34434 | 213.55348 | 0 | 1 | 9 | 17 | 0.62367466 | 2.9401116 | 1 | -252.00258 | 192.98941 | 0 | 1 | 4 | 22 | 0.38856134 | 3.8573312 | 1 | -272.89862 | 247.83103 | 0 | 1 | 13 | 46 | 0.86193377 | 8.3049887 | 1 | -271.25901 | 249.54193 | 0 | 1 | 14 | 75 | 0.87160165 | 12.896923 | 1 | -265.83354 | 254.63266 | 0 | 1 | 15 | 104 | 0.89952746 | 16.762176 | 1 | -264.76557 | 199.00215 | 0 | 2 | 5 | 10 | 0.47295192 | 2.7177412 | 1 | -277.06164 | 208.09799 | 0 | 2 | 6 | 31 | 0.57309882 | 13.026131 | 1 | -211.43772 | 182.04404 | 0 | 2 | 0 | 39 | 0.075620154 | 19.222652 | 1 | -247.61046 | 268.26326 | 0 | 2 | 17 | 50 | 0.96893073 | 23.152249 | 1 | -188.2202 | 299.04166 | 0 | 0 | 23 | 74 | 1.1809466 | 7.8068874 | 1 | -180.8392 | 269.29824 | 0 | 0 | 26 | 76 | 1.6683565 | 8.1340521 | 1 | -213.72637 | 287.88877 | 0 | 0 | 20 | 99 | 1.0719839 | 12.178275 | 1 | -176.25161 | 275.02099 | 0 | 0 | 25 | 103 | 1.6217083 | 12.527229 | 1 | -211.82991 | 242.64434 | 0 | 0 | 29 | 136 | 1.9059573 | 16.571941 | 1 | -186.72457 | 262.87366 | 0 | 1 | 27 | 5 | 1.7203775 | 0.94905049 | 1 | -197.35319 | 253.05586 | 0 | 1 | 28 | 32 | 1.8031168 | 5.3374707 | 1 | -204.62124 | 292.38142 | 0 | 1 | 22 | 35 | 1.1056871 | 5.835923 | 1 | -221.56514 | 237.57763 | 0 | 1 | 32 | 55 | 1.973816 | 10.055063 | 1 | -210.79018 | 289.3834 | 0 | 1 | 21 | 62 | 1.0824042 | 10.81858 | 1 | -236.74871 | 275.03488 | 0 | 1 | 19 | 92 | 1.0009532 | 14.796591 | 1 | -224.66963 | 236.3382 | 0 | 1 | 33 | 86 | 1.9957667 | 14.433474 | 1 | -220.51984 | 238.03871 | 0 | 2 | 31 | 22 | 1.9664779 | 11.376071 | 1 | -216.02264 | 240.25645 | 0 | 2 | 30 | 45 | 1.9350996 | 21.190748 | 1 | -173.40802 | 301.51903 | 0 | 2 | 24 | 59 | 1.2879669 | 26.816463 | 1 | -250.61455 | 227.60982 | 0 | 0 | 36 | 55 | 2.213706 | 5.3861655 | 1 | -279.34521 | 211.86941 | 0 | 0 | 40 | 116 | 2.6801333 | 14.084891 | 1 | -280.06496 | 210.6787 | 0 | 1 | 42 | 18 | 2.7049531 | 3.0090657 | 1 | -253.96218 | 226.48903 | 0 | 1 | 37 | 50 | 2.2489104 | 8.8387017 | 1 | -258.55842 | 224.88927 | 0 | 1 | 38 | 79 | 2.3014688 | 13.199649 | 1 | -248.0638 | 228.45143 | 0 | 1 | 35 | 108 | 2.1883343 | 17.155108 | 1 | -234.2058 | 233.03558 | 0 | 2 | 34 | 5 | 2.0671625 | 1.7115749 | 1 | -261.96356 | 223.62123 | 0 | 2 | 39 | 30 | 2.3443266 | 12.481769 | 1 | -283.8265 | 196.44415 | 0 | 2 | 43 | 34 | 2.9256772 | 13.477027 | 1 | -283.56197 | 173.59524 | 0 | 0 | 44 | 88 | 3.1779497 | 10.33237 | 1 | -280.7576 | 157.32449 | 0 | 2 | 45 | 36 | 3.3907196 | 15.72489 | 1 | -242.96367 | 171.22691 | 0 | 0 | 48 | 86 | 4.7868476 | 9.9100847 | 1 | -241.72864 | 175.29709 | 0 | 0 | 49 | 111 | 4.8359048 | 13.64367 | 1 | -261.86001 | 144.30795 | 0 | 2 | 46 | 15 | 4.3720194 | 4.3230853 | 1 | -259.38916 | 146.69287 | 0 | 2 | 47 | 38 | 4.4214147 | 17.071806 | 1 | -254.75671 | 238.71531 | 0 | 0 | 58 | 141 | 5.5024534 | 16.755355 | 1 | -264.78929 | 262.84369 | 0 | 1 | 60 | 11 | 5.7881429 | 1.9450163 | 1 | -241.41072 | 193.94242 | 0 | 1 | 51 | 23 | 5.0425353 | 4.0827185 | 1 | -248.98094 | 222.88049 | 0 | 1 | 54 | 51 | 5.3378214 | 8.9813156 | 1 | -244.52907 | 208.17454 | 0 | 1 | 52 | 81 | 5.188948 | 13.456307 | 1 | -252.70141 | 233.33726 | 0 | 1 | 57 | 106 | 5.4455258 | 17.075426 | 1 | -248.29443 | 220.81206 | 0 | 2 | 53 | 8 | 5.3168061 | 2.1191428 | 1 | -251.57192 | 230.27569 | 0 | 2 | 56 | 27 | 5.4136617 | 12.175801 | 1 | -286.79134 | 286.12098 | 0 | 0 | 65 | 92 | 6.2879212 | 11.652343 | 1 | -273.13533 | 279.61362 | 0 | 0 | 62 | 123 | 6.0832425 | 15.012492 | 1 | -281.99315 | 284.42953 | 0 | 1 | 64 | 43 | 6.2251258 | 7.6311825 | 1 | -276.571 | 281.94342 | 0 | 1 | 63 | 72 | 6.1460152 | 12.504186 | 1 | -271.6292 | 278.09525 | 0 | 1 | 61 | 102 | 6.0469334 | 16.429341 | 1 | -191.30216 | 304.28927 | 0 | 0 | 73 | 130 | 7.7289683 | 15.32441 | 1 | -230.09389 | 316.08951 | 0 | 1 | 72 | 37 | 7.2640538 | 6.3715704 | 1 | -270.62585 | 308.54943 | 0 | 1 | 66 | 41 | 7.0231221 | 7.1205072 | 1 | -231.18241 | 315.99112 | 0 | 1 | 71 | 64 | 7.255975 | 11.393901 | 1 | -267.76714 | 309.25389 | 0 | 1 | 67 | 70 | 7.0371801 | 12.071534 | 1 | -257.55292 | 311.61655 | 0 | 1 | 69 | 96 | 7.090277 | 15.390737 | 1 | -267.51846 | 309.31436 | 0 | 1 | 68 | 99 | 7.0384185 | 15.819889 | 1 | -246.84944 | 313.76373 | 0 | 2 | 70 | 55 | 7.1516538 | 24.40205 | 1 | -182.27687 | 279.14507 | 0 | 0 | 75 | 102 | 8.029808 | 12.444232 | 1 | -182.14201 | 247.45392 | 0 | 0 | 78 | 134 | 8.4077987 | 16.456134 | 1 | -180.86124 | 254.36286 | 0 | 1 | 77 | 4 | 8.3137785 | 0.83021476 | 1 | -208.2956 | 215.10258 | 0 | 1 | 81 | 28 | 8.9705775 | 4.7940162 | 1 | -190.57815 | 230.54668 | 0 | 2 | 79 | 19 | 8.6748383 | 10.52541 | 1 | -205.05778 | 217.28387 | 0 | 2 | 80 | 42 | 8.9260141 | 20.328503 | 1 | -232.53295 | 176.7234 | 0 | 0 | 85 | 110 | 9.7485679 | 13.570214 | 1 | -221.9681 | 201.87243 | 0 | 1 | 83 | 26 | 9.23193 | 4.4753301 | 1 | -217.959 | 207.67503 | 0 | 1 | 82 | 112 | 9.120566 | 17.585202 | 1 | -295.19004 | 228.87687 | 0 | 0 | 90 | 119 | 10.975247 | 14.232743 | 1 | -270.59516 | 168.6687 | 0 | 2 | 87 | 13 | 10.172808 | 3.5481253 | 1 | -287.83598 | 176.97223 | 0 | 2 | 89 | 35 | 10.399287 | 14.300528 | 1 | -291.29041 | 275.97239 | 0 | 0 | 91 | 120 | 11.471055 | 14.958504 | 1 | -281.12975 | 289.40532 | 0 | 1 | 93 | 42 | 11.743145 | 7.5388927 | 1 | -275.63876 | 290.8686 | 0 | 1 | 94 | 71 | 11.80371 | 12.383454 | 1 | -271.92275 | 291.41689 | 0 | 1 | 95 | 100 | 11.837239 | 16.219841 | 1 | -254.10214 | 291.77336 | 0 | 2 | 96 | 53 | 11.957186 | 23.793297 | 1 | -231.43682 | 290.02037 | 0 | 0 | 98 | 127 | 12.073709 | 15.147188 | 1 | -168.48626 | 250.5778 | 0 | 0 | 104 | 132 | 12.843147 | 16.400479 | 1 | -172.90145 | 232.00012 | 0 | 1 | 105 | 2 | 12.999858 | 0.59344668 | 1 | -202.01118 | 285.79515 | 0 | 1 | 101 | 34 | 12.260136 | 5.7436893 | 1 | -210.58087 | 287.39848 | 0 | 1 | 100 | 61 | 12.199023 | 10.788782 | 1 | -243.51273 | 291.08496 | 0 | 1 | 97 | 94 | 12.011315 | 14.972069 | 1 | -193.78548 | 199.88677 | 0 | 1 | 107 | 115 | 13.258142 | 17.930896 | 1 | -268.91067 | 188.44888 | 0 | 2 | 112 | 12 | 13.914434 | 2.9675842 | 1 | -177.61666 | 221.15641 | 0 | 2 | 106 | 18 | 13.081657 | 10.049542 | 1 | -209.05202 | 187.46429 | 0 | 2 | 108 | 40 | 13.387157 | 19.40244 | 1 | -282.20549 | 215.91558 | 0 | 1 | 117 | 16 | 14.116477 | 2.8866158 | 1 | -274.83654 | 202.88429 | 0 | 1 | 113 | 20 | 14.020796 | 3.2303813 | 1 | -282.33361 | 277.81119 | 0 | 1 | 121 | 44 | 14.98635 | 7.7503961 | 1 | -277.11547 | 208.02362 | 0 | 2 | 114 | 32 | 14.056516 | 13.029203 | 1 | -207.5791 | 297.98667 | 0 | 1 | 129 | 36 | 15.244351 | 5.9220423 | 1 | -212.27032 | 296.29704 | 0 | 1 | 128 | 63 | 15.223629 | 10.928061 | 1 | -276.61686 | 278.92499 | 0 | 1 | 122 | 73 | 15.00265 | 12.542975 | 1 | -241.68086 | 287.0697 | 0 | 1 | 126 | 93 | 15.110714 | 14.92417 | 1 | -271.79303 | 279.88597 | 0 | 1 | 124 | 101 | 15.016335 | 16.402691 | 1 | -253.56068 | 283.98062 | 0 | 2 | 125 | 52 | 15.071437 | 23.590588 | 1 | -177.00561 | 310.22766 | 0 | 2 | 131 | 58 | 15.408837 | 26.571785 | 1 | -177.98553 | 248.32794 | 0 | 1 | 133 | 3 | 16.439501 | 0.7589437 | 1 | -197.94562 | 244.61954 | 0 | 1 | 135 | 31 | 16.518018 | 5.2333836 | 1 | -265.82573 | 238.13896 | 0 | 1 | 143 | 48 | 16.816371 | 8.5159433 | 1 | -219.77991 | 241.68976 | 0 | 1 | 138 | 57 | 16.603225 | 10.127367 | 1 | -266.38371 | 238.11442 | 0 | 1 | 144 | 77 | 16.819831 | 13.033181 | 1 | -225.84082 | 241.03809 | 0 | 1 | 140 | 89 | 16.62751 | 14.478109 | 1 | -256.92235 | 238.5893 | 0 | 1 | 142 | 105 | 16.766406 | 16.994086 | 1 | -223.38408 | 241.29466 | 0 | 2 | 139 | 2 | 16.617609 | 1.4141732 | 1 | -217.70186 | 241.92799 | 0 | 2 | 137 | 46 | 16.594996 | 21.308418 | 1 | -168.92793 | 206.89007 | 1 | 1 | 0 | 116 | 0.37791103 | 18.474991 | 1 | -169.45861 | 211.60775 | 1 | 2 | 1 | 17 | 0.41621778 | 9.6765885 | 1 | -198.57524 | 271.71859 | 1 | 1 | 6 | 33 | 1.1314601 | 5.5637236 | 1 | -210.76821 | 275.38761 | 1 | 1 | 7 | 60 | 1.2857755 | 10.617105 | 1 | -236.50507 | 274.39501 | 1 | 1 | 8 | 91 | 1.5818908 | 14.790242 | 1 | -267.98386 | 260.55717 | 1 | 1 | 12 | 103 | 1.9975191 | 16.679249 | 1 | -249.0638 | 270.74551 | 1 | 2 | 10 | 51 | 1.7305344 | 23.226838 | 1 | -275.82141 | 252.95553 | 1 | 1 | 14 | 45 | 2.1586231 | 8.2031582 | 1 | -273.25888 | 255.85768 | 1 | 1 | 13 | 74 | 2.0990169 | 12.82243 | 1 | -266.07356 | 196.25781 | 1 | 2 | 21 | 11 | 3.5078804 | 2.7846916 | 1 | -277.91538 | 206.89503 | 1 | 2 | 19 | 33 | 3.1087444 | 13.075463 | 1 | -228.20517 | 198.34336 | 1 | 1 | 24 | 82 | 4.347469 | 13.78607 | 1 | -222.18885 | 201.72788 | 1 | 1 | 25 | 83 | 4.4707059 | 13.987348 | 1 | -215.77257 | 206.65899 | 1 | 1 | 27 | 113 | 4.6099293 | 17.614788 | 1 | -205.46648 | 219.60246 | 1 | 2 | 29 | 43 | 4.87591 | 20.399943 | 1 | -199.71236 | 234.58902 | 1 | 2 | 30 | 20 | 5.1029224 | 10.821799 | 1 | -236.01071 | 317.60175 | 1 | 1 | 38 | 65 | 6.4707916 | 11.478011 | 1 | -261.39653 | 314.73606 | 1 | 1 | 40 | 67 | 6.9127668 | 11.924825 | 1 | -243.2012 | 318.3265 | 1 | 2 | 39 | 56 | 6.590084 | 24.553453 | 1 | -267.24153 | 239.86379 | 1 | 1 | 47 | 76 | 8.476037 | 13.012073 | 1 | -255.70452 | 227.92717 | 1 | 2 | 49 | 28 | 8.7908995 | 12.293573 | 1 | -223.85937 | 232.82216 | 1 | 1 | 54 | 85 | 9.9608062 | 14.399322 | 1 | -236.95735 | 219.06254 | 1 | 1 | 53 | 110 | 9.4017118 | 17.32411 | 1 | -247.25791 | 221.82262 | 1 | 2 | 52 | 7 | 9.0340349 | 2.0876749 | 1 | -218.44709 | 245.02404 | 1 | 2 | 59 | 0 | 10.181996 | 1.2790601 | 1 | -221.36029 | 238.03055 | 1 | 2 | 56 | 23 | 10.063363 | 11.396885 | 1 | -219.14375 | 243.25073 | 1 | 2 | 58 | 47 | 10.15331 | 21.405468 | 1 | -264.72341 | 312.34304 | 1 | 1 | 68 | 97 | 11.99671 | 15.675702 | 1 | -242.81035 | 318.74624 | 1 | 2 | 66 | 57 | 11.592702 | 24.568306 | 1 | -266.85431 | 310.29293 | 1 | 1 | 69 | 98 | 12.047918 | 15.782717 | 1 | -252.33815 | 216.60894 | 1 | 2 | 80 | 9 | 13.315832 | 2.2457441 | 1 | -259.11077 | 225.70345 | 1 | 2 | 78 | 29 | 13.188884 | 12.394328 | 1 | -220.79197 | 209.07695 | 1 | 1 | 84 | 111 | 14.125606 | 17.546942 | 1 | -225.49872 | 239.70397 | 1 | 2 | 88 | 3 | 14.465537 | 1.4719579 | 1 | -225.0403 | 237.86809 | 1 | 2 | 87 | 24 | 14.448115 | 11.488089 | 1 | -228.46041 | 250.47884 | 1 | 2 | 90 | 49 | 14.565683 | 21.988281 | 1 | -251.43994 | 305.13617 | 1 | 2 | 95 | 54 | 15.194122 | 24.148192 | 1 | -244.08491 | 224.77536 | 1 | 2 | 109 | 6 | 17.218334 | 1.9931856 | 1 | -250.43706 | 230.85791 | 1 | 2 | 107 | 26 | 17.11531 | 12.144203 | 1 | -205.01357 | 202.50856 | 1 | 2 | 114 | 41 | 17.763243 | 19.878206 | 1 | -167.41201 | 208.42782 | 1 | 2 | 117 | 16 | 18.524038 | 9.5644831 | 1 | -228.35676 | 237.54534 | 2 | 2 | 4 | 25 | 1.5501836 | 11.570554 | 1 | -219.90624 | 243.91647 | 2 | 2 | 1 | 48 | 1.3190657 | 21.455608 | 1 | -263.70109 | 147.27001 | 2 | 2 | 14 | 37 | 4.2196528 | 16.843753 | 1 | -213.77023 | 237.70783 | 2 | 2 | 21 | 44 | 11.208585 | 21.0219 | 1" /> + <inkscape:path-effect + effect="knot" + id="path-effect73" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="-279.75511 | 211.21331 | 0 | 0 | 8 | 41 | 0.60265319 | 2.693983 | 1 | -240.70418 | 189.00431 | 0 | 0 | 3 | 50 | 0.31729802 | 4.9900542 | 1 | -262.47485 | 257.46537 | 0 | 0 | 16 | 59 | 0.91455909 | 5.7177699 | 1 | -227.03402 | 185.24291 | 0 | 0 | 2 | 84 | 0.22574263 | 9.5551317 | 1 | -216.59469 | 182.97708 | 0 | 0 | 1 | 109 | 0.13916631 | 13.446555 | 1 | -277.26401 | 208.30691 | 0 | 0 | 7 | 115 | 0.57514241 | 14.058555 | 1 | -283.05632 | 216.98912 | 0 | 0 | 10 | 118 | 0.65295782 | 14.125185 | 1 | -280.57922 | 237.65487 | 0 | 0 | 12 | 145 | 0.80106356 | 16.949145 | 1 | -238.60889 | 273.92283 | 0 | 1 | 18 | 9 | 0.99579148 | 1.606158 | 1 | -284.29361 | 227.3355 | 0 | 1 | 11 | 15 | 0.73213054 | 2.6514659 | 1 | -281.34434 | 213.55348 | 0 | 1 | 9 | 17 | 0.62367466 | 2.9401116 | 1 | -252.00258 | 192.98941 | 0 | 1 | 4 | 22 | 0.38856134 | 3.8573312 | 1 | -272.89862 | 247.83103 | 0 | 1 | 13 | 46 | 0.86193377 | 8.3049887 | 1 | -271.25901 | 249.54193 | 0 | 1 | 14 | 75 | 0.87160165 | 12.896923 | 1 | -265.83354 | 254.63266 | 0 | 1 | 15 | 104 | 0.89952746 | 16.762176 | 1 | -264.76557 | 199.00215 | 0 | 2 | 5 | 10 | 0.47295192 | 2.7177412 | 1 | -277.06164 | 208.09799 | 0 | 2 | 6 | 31 | 0.57309882 | 13.026131 | 1 | -211.43772 | 182.04404 | 0 | 2 | 0 | 39 | 0.075620154 | 19.222652 | 1 | -247.61046 | 268.26326 | 0 | 2 | 17 | 50 | 0.96893073 | 23.152249 | 1 | -188.2202 | 299.04166 | 0 | 0 | 23 | 74 | 1.1809466 | 7.8068874 | 1 | -180.8392 | 269.29824 | 0 | 0 | 26 | 76 | 1.6683565 | 8.1340521 | 1 | -213.72637 | 287.88877 | 0 | 0 | 20 | 99 | 1.0719839 | 12.178275 | 1 | -176.25161 | 275.02099 | 0 | 0 | 25 | 103 | 1.6217083 | 12.527229 | 1 | -211.82991 | 242.64434 | 0 | 0 | 29 | 136 | 1.9059573 | 16.571941 | 1 | -186.72457 | 262.87366 | 0 | 1 | 27 | 5 | 1.7203775 | 0.94905049 | 1 | -197.35319 | 253.05586 | 0 | 1 | 28 | 32 | 1.8031168 | 5.3374707 | 1 | -204.62124 | 292.38142 | 0 | 1 | 22 | 35 | 1.1056871 | 5.835923 | 1 | -221.56514 | 237.57763 | 0 | 1 | 32 | 55 | 1.973816 | 10.055063 | 1 | -210.79018 | 289.3834 | 0 | 1 | 21 | 62 | 1.0824042 | 10.81858 | 1 | -236.74871 | 275.03488 | 0 | 1 | 19 | 92 | 1.0009532 | 14.796591 | 1 | -224.66963 | 236.3382 | 0 | 1 | 33 | 86 | 1.9957667 | 14.433474 | 1 | -220.51984 | 238.03871 | 0 | 2 | 31 | 22 | 1.9664779 | 11.376071 | 1 | -216.02264 | 240.25645 | 0 | 2 | 30 | 45 | 1.9350996 | 21.190748 | 1 | -173.40802 | 301.51903 | 0 | 2 | 24 | 59 | 1.2879669 | 26.816463 | 1 | -250.61455 | 227.60982 | 0 | 0 | 36 | 55 | 2.213706 | 5.3861655 | 1 | -279.34521 | 211.86941 | 0 | 0 | 40 | 116 | 2.6801333 | 14.084891 | 1 | -280.06496 | 210.6787 | 0 | 1 | 42 | 18 | 2.7049531 | 3.0090657 | 1 | -253.96218 | 226.48903 | 0 | 1 | 37 | 50 | 2.2489104 | 8.8387017 | 1 | -258.55842 | 224.88927 | 0 | 1 | 38 | 79 | 2.3014688 | 13.199649 | 1 | -248.0638 | 228.45143 | 0 | 1 | 35 | 108 | 2.1883343 | 17.155108 | 1 | -234.2058 | 233.03558 | 0 | 2 | 34 | 5 | 2.0671625 | 1.7115749 | 1 | -261.96356 | 223.62123 | 0 | 2 | 39 | 30 | 2.3443266 | 12.481769 | 1 | -283.8265 | 196.44415 | 0 | 2 | 43 | 34 | 2.9256772 | 13.477027 | 1 | -283.56197 | 173.59524 | 0 | 0 | 44 | 88 | 3.1779497 | 10.33237 | 1 | -280.7576 | 157.32449 | 0 | 2 | 45 | 36 | 3.3907196 | 15.72489 | 1 | -242.96367 | 171.22691 | 0 | 0 | 48 | 86 | 4.7868476 | 9.9100847 | 1 | -241.72864 | 175.29709 | 0 | 0 | 49 | 111 | 4.8359048 | 13.64367 | 1 | -261.86001 | 144.30795 | 0 | 2 | 46 | 15 | 4.3720194 | 4.3230853 | 1 | -259.38916 | 146.69287 | 0 | 2 | 47 | 38 | 4.4214147 | 17.071806 | 1 | -254.75671 | 238.71531 | 0 | 0 | 58 | 141 | 5.5024534 | 16.755355 | 1 | -264.78929 | 262.84369 | 0 | 1 | 60 | 11 | 5.7881429 | 1.9450163 | 1 | -241.41072 | 193.94242 | 0 | 1 | 51 | 23 | 5.0425353 | 4.0827185 | 1 | -248.98094 | 222.88049 | 0 | 1 | 54 | 51 | 5.3378214 | 8.9813156 | 1 | -244.52907 | 208.17454 | 0 | 1 | 52 | 81 | 5.188948 | 13.456307 | 1 | -252.70141 | 233.33726 | 0 | 1 | 57 | 106 | 5.4455258 | 17.075426 | 1 | -248.29443 | 220.81206 | 0 | 2 | 53 | 8 | 5.3168061 | 2.1191428 | 1 | -251.57192 | 230.27569 | 0 | 2 | 56 | 27 | 5.4136617 | 12.175801 | 1 | -286.79134 | 286.12098 | 0 | 0 | 65 | 92 | 6.2879212 | 11.652343 | 1 | -273.13533 | 279.61362 | 0 | 0 | 62 | 123 | 6.0832425 | 15.012492 | 1 | -281.99315 | 284.42953 | 0 | 1 | 64 | 43 | 6.2251258 | 7.6311825 | 1 | -276.571 | 281.94342 | 0 | 1 | 63 | 72 | 6.1460152 | 12.504186 | 1 | -271.6292 | 278.09525 | 0 | 1 | 61 | 102 | 6.0469334 | 16.429341 | 1 | -191.30216 | 304.28927 | 0 | 0 | 73 | 130 | 7.7289683 | 15.32441 | 1 | -230.09389 | 316.08951 | 0 | 1 | 72 | 37 | 7.2640538 | 6.3715704 | 1 | -270.62585 | 308.54943 | 0 | 1 | 66 | 41 | 7.0231221 | 7.1205072 | 1 | -231.18241 | 315.99112 | 0 | 1 | 71 | 64 | 7.255975 | 11.393901 | 1 | -267.76714 | 309.25389 | 0 | 1 | 67 | 70 | 7.0371801 | 12.071534 | 1 | -257.55292 | 311.61655 | 0 | 1 | 69 | 96 | 7.090277 | 15.390737 | 1 | -267.51846 | 309.31436 | 0 | 1 | 68 | 99 | 7.0384185 | 15.819889 | 1 | -246.84944 | 313.76373 | 0 | 2 | 70 | 55 | 7.1516538 | 24.40205 | 1 | -182.27687 | 279.14507 | 0 | 0 | 75 | 102 | 8.029808 | 12.444232 | 1 | -182.14201 | 247.45392 | 0 | 0 | 78 | 134 | 8.4077987 | 16.456134 | 1 | -180.86124 | 254.36286 | 0 | 1 | 77 | 4 | 8.3137785 | 0.83021476 | 1 | -208.2956 | 215.10258 | 0 | 1 | 81 | 28 | 8.9705775 | 4.7940162 | 1 | -190.57815 | 230.54668 | 0 | 2 | 79 | 19 | 8.6748383 | 10.52541 | 1 | -205.05778 | 217.28387 | 0 | 2 | 80 | 42 | 8.9260141 | 20.328503 | 1 | -232.53295 | 176.7234 | 0 | 0 | 85 | 110 | 9.7485679 | 13.570214 | 1 | -221.9681 | 201.87243 | 0 | 1 | 83 | 26 | 9.23193 | 4.4753301 | 1 | -217.959 | 207.67503 | 0 | 1 | 82 | 112 | 9.120566 | 17.585202 | 1 | -295.19004 | 228.87687 | 0 | 0 | 90 | 119 | 10.975247 | 14.232743 | 1 | -270.59516 | 168.6687 | 0 | 2 | 87 | 13 | 10.172808 | 3.5481253 | 1 | -287.83598 | 176.97223 | 0 | 2 | 89 | 35 | 10.399287 | 14.300528 | 1 | -291.29041 | 275.97239 | 0 | 0 | 91 | 120 | 11.471055 | 14.958504 | 1 | -281.12975 | 289.40532 | 0 | 1 | 93 | 42 | 11.743145 | 7.5388927 | 1 | -275.63876 | 290.8686 | 0 | 1 | 94 | 71 | 11.80371 | 12.383454 | 1 | -271.92275 | 291.41689 | 0 | 1 | 95 | 100 | 11.837239 | 16.219841 | 1 | -254.10214 | 291.77336 | 0 | 2 | 96 | 53 | 11.957186 | 23.793297 | 1 | -231.43682 | 290.02037 | 0 | 0 | 98 | 127 | 12.073709 | 15.147188 | 1 | -168.48626 | 250.5778 | 0 | 0 | 104 | 132 | 12.843147 | 16.400479 | 1 | -172.90145 | 232.00012 | 0 | 1 | 105 | 2 | 12.999858 | 0.59344668 | 1 | -202.01118 | 285.79515 | 0 | 1 | 101 | 34 | 12.260136 | 5.7436893 | 1 | -210.58087 | 287.39848 | 0 | 1 | 100 | 61 | 12.199023 | 10.788782 | 1 | -243.51273 | 291.08496 | 0 | 1 | 97 | 94 | 12.011315 | 14.972069 | 1 | -193.78548 | 199.88677 | 0 | 1 | 107 | 115 | 13.258142 | 17.930896 | 1 | -268.91067 | 188.44888 | 0 | 2 | 112 | 12 | 13.914434 | 2.9675842 | 1 | -177.61666 | 221.15641 | 0 | 2 | 106 | 18 | 13.081657 | 10.049542 | 1 | -209.05202 | 187.46429 | 0 | 2 | 108 | 40 | 13.387157 | 19.40244 | 1 | -282.20549 | 215.91558 | 0 | 1 | 117 | 16 | 14.116477 | 2.8866158 | 1 | -274.83654 | 202.88429 | 0 | 1 | 113 | 20 | 14.020796 | 3.2303813 | 1 | -282.33361 | 277.81119 | 0 | 1 | 121 | 44 | 14.98635 | 7.7503961 | 1 | -277.11547 | 208.02362 | 0 | 2 | 114 | 32 | 14.056516 | 13.029203 | 1 | -207.5791 | 297.98667 | 0 | 1 | 129 | 36 | 15.244351 | 5.9220423 | 1 | -212.27032 | 296.29704 | 0 | 1 | 128 | 63 | 15.223629 | 10.928061 | 1 | -276.61686 | 278.92499 | 0 | 1 | 122 | 73 | 15.00265 | 12.542975 | 1 | -241.68086 | 287.0697 | 0 | 1 | 126 | 93 | 15.110714 | 14.92417 | 1 | -271.79303 | 279.88597 | 0 | 1 | 124 | 101 | 15.016335 | 16.402691 | 1 | -253.56068 | 283.98062 | 0 | 2 | 125 | 52 | 15.071437 | 23.590588 | 1 | -177.00561 | 310.22766 | 0 | 2 | 131 | 58 | 15.408837 | 26.571785 | 1 | -177.98553 | 248.32794 | 0 | 1 | 133 | 3 | 16.439501 | 0.7589437 | 1 | -197.94562 | 244.61954 | 0 | 1 | 135 | 31 | 16.518018 | 5.2333836 | 1 | -265.82573 | 238.13896 | 0 | 1 | 143 | 48 | 16.816371 | 8.5159433 | 1 | -219.77991 | 241.68976 | 0 | 1 | 138 | 57 | 16.603225 | 10.127367 | 1 | -266.38371 | 238.11442 | 0 | 1 | 144 | 77 | 16.819831 | 13.033181 | 1 | -225.84082 | 241.03809 | 0 | 1 | 140 | 89 | 16.62751 | 14.478109 | 1 | -256.92235 | 238.5893 | 0 | 1 | 142 | 105 | 16.766406 | 16.994086 | 1 | -223.38408 | 241.29466 | 0 | 2 | 139 | 2 | 16.617609 | 1.4141732 | 1 | -217.70186 | 241.92799 | 0 | 2 | 137 | 46 | 16.594996 | 21.308418 | 1 | -168.92793 | 206.89007 | 1 | 1 | 0 | 116 | 0.37791103 | 18.474991 | 1 | -169.45861 | 211.60775 | 1 | 2 | 1 | 17 | 0.41621778 | 9.6765885 | 1 | -198.57524 | 271.71859 | 1 | 1 | 6 | 33 | 1.1314601 | 5.5637236 | 1 | -210.76821 | 275.38761 | 1 | 1 | 7 | 60 | 1.2857755 | 10.617105 | 1 | -236.50507 | 274.39501 | 1 | 1 | 8 | 91 | 1.5818908 | 14.790242 | 1 | -267.98386 | 260.55717 | 1 | 1 | 12 | 103 | 1.9975191 | 16.679249 | 1 | -249.0638 | 270.74551 | 1 | 2 | 10 | 51 | 1.7305344 | 23.226838 | 1 | -275.82141 | 252.95553 | 1 | 1 | 14 | 45 | 2.1586231 | 8.2031582 | 1 | -273.25888 | 255.85768 | 1 | 1 | 13 | 74 | 2.0990169 | 12.82243 | 1 | -266.07356 | 196.25781 | 1 | 2 | 21 | 11 | 3.5078804 | 2.7846916 | 1 | -277.91538 | 206.89503 | 1 | 2 | 19 | 33 | 3.1087444 | 13.075463 | 1 | -228.20517 | 198.34336 | 1 | 1 | 24 | 82 | 4.347469 | 13.78607 | 1 | -222.18885 | 201.72788 | 1 | 1 | 25 | 83 | 4.4707059 | 13.987348 | 1 | -215.77257 | 206.65899 | 1 | 1 | 27 | 113 | 4.6099293 | 17.614788 | 1 | -205.46648 | 219.60246 | 1 | 2 | 29 | 43 | 4.87591 | 20.399943 | 1 | -199.71236 | 234.58902 | 1 | 2 | 30 | 20 | 5.1029224 | 10.821799 | 1 | -236.01071 | 317.60175 | 1 | 1 | 38 | 65 | 6.4707916 | 11.478011 | 1 | -261.39653 | 314.73606 | 1 | 1 | 40 | 67 | 6.9127668 | 11.924825 | 1 | -243.2012 | 318.3265 | 1 | 2 | 39 | 56 | 6.590084 | 24.553453 | 1 | -267.24153 | 239.86379 | 1 | 1 | 47 | 76 | 8.476037 | 13.012073 | 1 | -255.70452 | 227.92717 | 1 | 2 | 49 | 28 | 8.7908995 | 12.293573 | 1 | -223.85937 | 232.82216 | 1 | 1 | 54 | 85 | 9.9608062 | 14.399322 | 1 | -236.95735 | 219.06254 | 1 | 1 | 53 | 110 | 9.4017118 | 17.32411 | 1 | -247.25791 | 221.82262 | 1 | 2 | 52 | 7 | 9.0340349 | 2.0876749 | 1 | -218.44709 | 245.02404 | 1 | 2 | 59 | 0 | 10.181996 | 1.2790601 | 1 | -221.36029 | 238.03055 | 1 | 2 | 56 | 23 | 10.063363 | 11.396885 | 1 | -219.14375 | 243.25073 | 1 | 2 | 58 | 47 | 10.15331 | 21.405468 | 1 | -264.72341 | 312.34304 | 1 | 1 | 68 | 97 | 11.99671 | 15.675702 | 1 | -242.81035 | 318.74624 | 1 | 2 | 66 | 57 | 11.592702 | 24.568306 | 1 | -266.85431 | 310.29293 | 1 | 1 | 69 | 98 | 12.047918 | 15.782717 | 1 | -252.33815 | 216.60894 | 1 | 2 | 80 | 9 | 13.315832 | 2.2457441 | 1 | -259.11077 | 225.70345 | 1 | 2 | 78 | 29 | 13.188884 | 12.394328 | 1 | -220.79197 | 209.07695 | 1 | 1 | 84 | 111 | 14.125606 | 17.546942 | 1 | -225.49872 | 239.70397 | 1 | 2 | 88 | 3 | 14.465537 | 1.4719579 | 1 | -225.0403 | 237.86809 | 1 | 2 | 87 | 24 | 14.448115 | 11.488089 | 1 | -228.46041 | 250.47884 | 1 | 2 | 90 | 49 | 14.565683 | 21.988281 | 1 | -251.43994 | 305.13617 | 1 | 2 | 95 | 54 | 15.194122 | 24.148192 | 1 | -244.08491 | 224.77536 | 1 | 2 | 109 | 6 | 17.218334 | 1.9931856 | 1 | -250.43706 | 230.85791 | 1 | 2 | 107 | 26 | 17.11531 | 12.144203 | 1 | -205.01357 | 202.50856 | 1 | 2 | 114 | 41 | 17.763243 | 19.878206 | 1 | -167.41201 | 208.42782 | 1 | 2 | 117 | 16 | 18.524038 | 9.5644831 | 1 | -228.35676 | 237.54534 | 2 | 2 | 4 | 25 | 1.5501836 | 11.570554 | 1 | -219.90624 | 243.91647 | 2 | 2 | 1 | 48 | 1.3190657 | 21.455608 | 1 | -263.70109 | 147.27001 | 2 | 2 | 14 | 37 | 4.2196528 | 16.843753 | 1 | -213.77023 | 237.70783 | 2 | 2 | 21 | 44 | 11.208585 | 21.0219 | 1" /> + <inkscape:path-effect + effect="spiro" + id="path-effect71" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect69" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="knot" + id="path-effect59" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="spiro" + id="path-effect52" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect48" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="knot" + id="path-effect29" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="6" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="20.281788 | 112.38879 | 0 | 0 | 0 | 9 | 1.3860385 | 20.693707 | 1 | -34.559208 | 108.01371 | 0 | 0 | 1 | 4 | 2.6976676 | 11.696026 | 1 | -76.274515 | 66.232087 | 0 | 0 | 2 | 15 | 5.4501726 | 34.282919 | 1 | -21.097153 | 83.843588 | 0 | 0 | 3 | 14 | 10.617585 | 33.291426 | 1 | -86.418077 | 114.62001 | 0 | 0 | 5 | 10 | 13.832476 | 24.296244 | 1 | -99.355053 | 37.002255 | 0 | 0 | 6 | 11 | 15.955745 | 25.669037 | 1 | -97.698403 | 35.027359 | 0 | 0 | 7 | 16 | 16.014714 | 34.859361 | 1 | 20.406794 | 58.595611 | 0 | 0 | 8 | 13 | 19.34405 | 31.84165 | 1 | -98.339712 | 33.202938 | 0 | 0 | 12 | 17 | 25.737165 | 34.888528 | 1" /> + <inkscape:path-effect + effect="knot" + id="path-effect27" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="6" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="true" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="151.21881 | 92.027114 | 0 | 0 | 0 | 13 | 0.16862988 | 4.7003098 | 1 | 164.39555 | 36.100351 | 0 | 0 | 2 | 23 | 0.84533044 | 7.4039858 | 1 | 155.0627 | 54.365731 | 0 | 0 | 1 | 63 | 0.56217004 | 20.410639 | 1 | 209.01172 | 36.833734 | 0 | 0 | 6 | 19 | 1.4324248 | 5.4487087 | 1 | 177.57937 | 29.901536 | 0 | 0 | 4 | 36 | 1.065361 | 10.943062 | 1 | 246.23925 | 75.112003 | 0 | 0 | 7 | 33 | 1.9537662 | 10.347855 | 1 | 176.23347 | 30.109176 | 0 | 0 | 3 | 49 | 1.046727 | 16.686616 | 1 | 182.67347 | 29.632168 | 0 | 0 | 5 | 67 | 1.1318477 | 22.36544 | 1 | 223.91984 | 153.97385 | 0 | 0 | 10 | 30 | 2.7323872 | 8.7959166 | 1 | 249.43214 | 101.00768 | 0 | 0 | 8 | 44 | 2.2028368 | 14.262952 | 1 | 217.81234 | 159.57542 | 0 | 0 | 11 | 56 | 2.8073586 | 18.238665 | 1 | 237.72359 | 135.87227 | 0 | 0 | 9 | 58 | 2.5316299 | 19.190732 | 1 | 157.01358 | 86.454396 | 0 | 0 | 15 | 26 | 4.776253 | 7.814277 | 1 | 128.5148 | 119.94944 | 0 | 0 | 12 | 40 | 4.3102545 | 12.509813 | 1 | 156.52076 | 86.919921 | 0 | 0 | 14 | 52 | 4.769927 | 17.169917 | 1 | 204.00776 | 42.185101 | 0 | 0 | 18 | 34 | 5.3739684 | 10.720375 | 1 | 177.81013 | 67.383235 | 0 | 0 | 16 | 60 | 5.0332267 | 20.060915 | 1 | 195.24604 | 50.995046 | 0 | 0 | 17 | 69 | 5.2533987 | 22.593169 | 1 | 217.29328 | -14.663003 | 0 | 0 | 20 | 46 | 6.4640713 | 16.261016 | 1 | 167.58313 | 27.42947 | 0 | 0 | 22 | 38 | 7.3286033 | 11.032376 | 1 | 156.91124 | 75.59072 | 0 | 0 | 25 | 51 | 7.7247425 | 17.066349 | 1 | 160.22734 | 104.84263 | 0 | 0 | 27 | 53 | 7.9772084 | 17.348275 | 1 | 159.1397 | 56.343279 | 0 | 0 | 24 | 62 | 7.5700992 | 20.339973 | 1 | 172.51289 | 16.584168 | 0 | 0 | 21 | 65 | 7.2271765 | 22.174831 | 1 | 205.21125 | 148.77096 | 0 | 0 | 29 | 42 | 8.6021941 | 13.572096 | 1 | 175.79859 | 130.25855 | 0 | 0 | 28 | 54 | 8.2628787 | 17.650323 | 1 | 243.39776 | 155.44058 | 0 | 0 | 31 | 57 | 9.0077459 | 18.861203 | 1 | 257.18548 | 86.744128 | 0 | 0 | 32 | 45 | 10.230644 | 14.403595 | 1 | 176.58293 | 29.591373 | 0 | 0 | 37 | 48 | 10.951765 | 16.682321 | 1 | 184.47011 | 32.38579 | 0 | 0 | 35 | 68 | 10.883772 | 22.398449 | 1 | 135.47472 | 31.360509 | 0 | 0 | 39 | 64 | 11.371515 | 21.181126 | 1 | 200.54386 | 150.88144 | 0 | 0 | 41 | 55 | 13.504307 | 17.994369 | 1 | 231.94616 | 126.10082 | 0 | 0 | 43 | 59 | 13.977148 | 19.312944 | 1 | 161.57293 | 57.57376 | 0 | 0 | 50 | 61 | 16.912182 | 20.300016 | 1 | 179.62331 | 25.237192 | 0 | 0 | 47 | 66 | 16.64598 | 22.308965 | 1" /> + <inkscape:path-effect + effect="knot" + id="path-effect25" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="63.130761 | 237.1987 | 0 | 0 | 1 | 14 | 0.3409017 | 3.4034293 | 1 | 128.04922 | 345.62824 | 0 | 0 | 4 | 17 | 0.93901896 | 4.4672325 | 1 | 44.125759 | 205.45575 | 0 | 0 | 0 | 27 | 0.16580174 | 7.8570383 | 1 | 104.08087 | 305.59529 | 0 | 0 | 2 | 29 | 0.71818987 | 8.863754 | 1 | 125.98032 | 342.17267 | 0 | 0 | 3 | 38 | 0.91995744 | 12.283337 | 1 | 143.41812 | 350.81955 | 0 | 0 | 5 | 18 | 1.1339632 | 4.5151893 | 1 | 245.5294 | 281.33615 | 0 | 0 | 8 | 21 | 1.5827841 | 5.8395156 | 1 | 211.64182 | 304.64221 | 0 | 0 | 6 | 31 | 1.4546183 | 9.1572623 | 1 | 215.49169 | 302.01034 | 0 | 0 | 7 | 42 | 1.4691457 | 13.525662 | 1 | 237.90842 | 219.32643 | 0 | 0 | 9 | 22 | 2.3719924 | 6.4219401 | 1 | 83.850901 | 198.31733 | 0 | 0 | 12 | 25 | 2.9142984 | 7.6387687 | 1 | 161.8732 | 208.67585 | 0 | 0 | 10 | 35 | 2.595076 | 11.574089 | 1 | 118.69784 | 202.88845 | 0 | 0 | 11 | 44 | 2.7362627 | 14.451814 | 1 | 78.507713 | 199.08683 | 0 | 0 | 13 | 26 | 3.0663092 | 7.6624085 | 1 | 47.812867 | 274.96673 | 0 | 0 | 15 | 28 | 3.6327985 | 8.5646822 | 1 | 125.34917 | 344.71316 | 0 | 0 | 16 | 39 | 4.4587651 | 12.300443 | 1 | 225.29759 | 378.11761 | 0 | 0 | 19 | 40 | 4.8092979 | 13.146643 | 1 | 245.60117 | 304.40224 | 0 | 0 | 20 | 33 | 5.6878877 | 9.258021 | 1 | 190.03826 | 186.5137 | 0 | 0 | 23 | 34 | 7.1893668 | 11.371997 | 1 | 107.45645 | 195.21798 | 0 | 0 | 24 | 45 | 7.5411139 | 14.549128 | 1 | 131.96785 | 307.79252 | 0 | 0 | 30 | 37 | 8.9492545 | 12.092446 | 1 | 216.9611 | 304.56486 | 0 | 0 | 32 | 41 | 9.1723568 | 13.514868 | 1 | 149.75959 | 223.42087 | 0 | 0 | 36 | 43 | 11.677428 | 14.142298 | 1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect21" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect17" + is_visible="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 39.779935,116.30214 c -1.199488,-0.38251 -2.407823,-0.73728 -3.623714,-1.06392 -4.192024,-1.12617 -8.446997,-1.91252 -12.739893,-2.47631 m -6.300194,-0.67925 c -7.4902945,-0.64912 -15.0577903,-0.80185 -22.5723902,-1.0677 -8.5058128,-0.30093 -17.1104818,-0.77779 -25.4693038,-2.27829 m -7.136482,-1.56713 c -2.904289,-0.76561 -5.765198,-1.69061 -8.56735,-2.81281 -6.48678,-2.59782 -12.59551,-6.25694 -17.619603,-11.113427 -5.024093,-4.856486 -8.936078,-10.941571 -10.811223,-17.6729 -0.470181,-1.687839 -0.807743,-3.416313 -1.006514,-5.160296 m 0.07127,-7.927853 c 0.346858,-2.559617 1.016661,-5.070241 2.029276,-7.450981 2.734979,-6.430153 8.042809,-11.815756 14.602852,-14.22258 4.186753,-1.536084 8.793719,-1.85336 13.179064,-1.042677 4.385344,0.810684 8.544046,2.733896 12.08915,5.439575 7.090207,5.411356 11.555585,13.83437 13.123249,22.614817 1.528867,8.563147 0.42928,17.573233 -3.087914,25.529003 -3.517194,7.955769 -9.434404,14.827389 -16.76457,19.510719 -7.330165,4.68333 -16.043511,7.16402 -24.74159,7.07258 -8.698078,-0.0914 -17.349637,-2.75084 -24.613125,-7.53693 -12.1676,-8.01753 -20.05236,-21.959418 -21.32473,-36.475353 -0.9678,-11.041176 1.78675,-22.2686 7.33907,-31.875402 m 9.054642,-11.775079 c 9.252432,-9.234525 21.559724,-15.326335 34.470901,-17.512214 14.367145,-2.432375 29.393739,-0.133611 42.686617,5.835536 12.4959028,5.611267 23.5673304,14.483029 31.439998,25.692623 7.872668,11.209594 12.47939,24.752254 12.675207,38.448806 0.195817,13.696553 -4.083815,27.481663 -12.32133,38.425943 -8.2375158,10.94428 -20.4347212,18.92392 -33.847109,21.70632 -9.757882,2.02427 -20.024688,1.32227 -29.522451,-1.69541 -9.497764,-3.01769 -18.223404,-8.31776 -25.51315,-15.11288 -2.638681,-2.45963 -5.07957,-5.10548 -7.324763,-7.90649 m -7.166168,-10.56921 c -5.957075,-10.43677 -9.759661,-22.193532 -11.485724,-34.11494 -1.77412,-12.253293 -1.42754,-24.890159 1.304758,-36.944606 m 2.919273,-10.130061 c 1.12272,-3.179418 2.428919,-6.294919 3.92399,-9.326839 8.529417,-17.2971825 23.411846,-31.658575 41.545379,-38.225039 9.066767,-3.283232 18.855666,-4.616871 28.453769,-3.688282 9.598104,0.92859 18.9904611,4.134597 27.0502805,9.428479 8.0598195,5.2938814 14.7602195,12.68131435 19.0765125,21.3042769 4.316294,8.6229621 6.216181,18.4675621 5.231567,28.0600801 -0.701044,6.829854 -2.857917,13.485098 -6.186222,19.4937 m -3.906594,6.042553 c -0.209468,0.280097 -0.421717,0.558088 -0.636709,0.833911 -5.910905,7.583347 -13.8599926,13.525574 -22.71784,17.265157 -4.1820123,1.765551 -8.543819,3.021546 -12.993337,3.796228 m -6.257074,0.77148 C -36.710781,85.071823 -49.555825,82.399754 -60.786183,76.733802 -80.543443,66.76585 -95.456015,47.670739 -100.33951,26.086929 -105.223,4.5031185 -99.982911,-19.15168 -86.440961,-36.653822" + id="path11" + inkscape:test-ignore="true" + inkscape:path-effect="#path-effect17;#path-effect29" + inkscape:original-d="m 39.779935,116.30214 c -1.206905,-0.35364 -2.414809,-0.70828 -3.623714,-1.06392 -1.208905,-0.35564 -63.678704,-49.618685 -95.519555,-74.429527 -31.840852,-24.810842 25.595308,18.00881 38.391463,27.011715 12.7961541,9.002905 -46.137133,29.717917 -69.207199,44.575372 -23.07007,14.85746 48.152,-61.200673 72.2265,-91.802512 C 6.1219304,-10.008571 -19.320392,103.4434 -20.005804,144.86696 -20.691215,186.29053 -74.012972,98.602007 -101.01806,75.46803 -128.02314,52.334052 -14.68004,49.121036 28.487469,35.946039 71.654978,22.771043 -31.027299,63.138881 -60.786183,76.733802 -90.545067,90.328723 -77.888368,1.1430528 -86.440961,-36.653822" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 151.07817,110.19084 c 0.009,-4.65086 0.0185,-9.30174 0.0739,-13.890515 m 0.1713,-8.583633 c 0.32487,-11.044326 1.10606,-21.474958 3.03281,-30.364805 m 1.53125,-5.916038 c 0.85146,-2.774211 1.85502,-5.343848 3.0381,-7.672029 m 9.719,-10.923477 c 0.99447,-0.582519 2.04544,-1.089027 3.15616,-1.515187 m 15.21338,-1.39574 c 6.04328,0.70472 12.61956,2.620459 19.1627,5.563556 m 5.58873,2.770867 c 12.16236,6.600046 23.63751,16.636517 30.67852,28.893897 m 5.70769,14.052421 c 1.06213,4.318834 1.57012,8.808661 1.5813,13.378998 m -1.50107,14.362765 c -1.67826,8.14009 -4.70271,16.23946 -8.76382,23.80959 m -3.56088,6.08637 c -2.83726,4.46278 -6.03582,8.67394 -9.52332,12.51924 m -5.11482,5.18008 c -0.28768,0.26704 -0.57687,0.53161 -0.86753,0.79364 m -5.34827,4.40566 c -4.63079,3.46926 -9.55184,6.29272 -14.65049,8.29255 -31.79231,12.46978 -70.48884,-7.08443 -75.68968,-29.02951 -1.38795,-5.8565 -0.39028,-11.88313 2.33717,-18.04462 m 3.06636,-5.85252 c 4.32403,-7.19719 10.67298,-14.55889 18.04193,-22.031042 m 11.6959,-11.287194 c 4.96351,-4.616623 10.1195,-9.264283 15.23995,-13.93072 0.14986,-0.136575 0.29969,-0.273166 0.44949,-0.409772 m 4.52693,-4.144736 c 4.41338,-4.059292 8.76036,-8.118975 12.93529,-12.142331 m 4.46979,-4.361722 c 1.49222,-1.475933 2.95568,-2.94508 4.38504,-4.405585 m 4.26603,-4.444729 c 0.25777,-0.27428 0.5141,-0.548178 0.76897,-0.821682 m 4.19203,-4.617872 c 10.70959,-12.1386 17.99077,-23.323077 18.44504,-32.3723738 0.34635,-6.8993625 -3.27579,-12.5575152 -9.04288,-15.5146512 m -7.02417,-2.080843 c -8.26941,-0.944654 -18.56297,2.514694 -27.97714,12.7024396 -4.06158,4.3953276 -7.95938,10.042956 -11.50131,16.5402054 m -2.88876,5.651744 c -0.80275,1.674679 -1.58165,3.39224 -2.33401,5.147032 m -6.24468,17.546255 c -1.05715,3.662939 -1.98848,7.395465 -2.77567,11.159132 m -1.14805,6.129163 c -0.3957,2.39376 -0.72982,4.791654 -0.99771,7.183966 m -0.26966,23.673857 c 0.20169,1.948218 0.4651,3.867487 0.79328,5.751447 m 5.41141,17.184692 c 1.7853,3.67768 3.91639,7.10037 6.33164,10.27387 m 12.74878,12.75039 c 5.78741,4.48495 12.22405,8.15118 18.92267,11.0351 m 7.54518,2.88902 c 3.75594,1.2676 7.54755,2.30337 11.31071,3.11333 m 7.16482,1.27801 c 4.39569,0.62212 8.69339,0.93108 12.78563,0.93697 m 6.13072,-0.22956 c 26.57663,-2.08812 41.54799,-18.36078 26.39303,-46.5845 -3.25901,-6.0694 -7.91119,-12.691437 -13.5679,-19.455494 m -4.25495,-4.90446 c -1.14694,-1.276445 -2.3259,-2.554407 -3.53432,-3.831181 M 241.17242,70.267401 C 230.63235,60.489473 218.71301,51.228733 206.63768,43.777607 m -5.29788,-3.145395 c -4.00647,-2.283966 -8.01046,-4.348646 -11.96748,-6.147061 m -24.84236,-7.506192 c -9.58316,-1.179114 -18.24726,-0.01027 -25.70562,2.912921 m -6.7757,3.323041 c -14.42377,8.632006 -22.75835,24.606832 -22.08894,41.888825 0.54712,14.124725 7.10851,29.121964 16.56727,42.184034 m 4.02471,5.23033 c 9.7809,11.97932 21.83892,21.82337 33.41866,27.05014 11.43584,5.16182 22.40502,5.82062 32.94461,2.58638 m 11.73001,-5.27977 c 7.29527,-4.34004 14.37883,-10.54623 21.26415,-18.39677 m 4.03493,-4.81531 c 4.0803,-5.08727 8.08591,-10.74452 11.92067,-16.81049 m 7.18421,-12.209898 c 0.90493,-1.65234 1.79494,-3.324211 2.66846,-5.012997 m 2.90548,-5.805934 c 9.68465,-20.013932 16.90833,-41.908026 19.22926,-61.586809 4.08173,-34.60838 -7.00093,-62.363856 -35.57416,-51.977489 -6.64282,2.414665 -14.23085,6.890843 -22.08299,12.827274 m -5.70521,4.531103 c -11.47837,9.5478475 -23.16616,21.8451812 -33.0055,35.075347 m -7.51479,10.868575 c -4.49741,7.03662 -8.35155,14.191827 -11.27748,21.214061 m -2.15611,5.638732 c -0.72866,2.100035 -1.36511,4.181652 -1.90141,6.237857 m -1.77992,24.081663 c 0.21981,1.848148 0.521,3.666193 0.89757,5.453501 m 6.11962,16.947414 c 1.82688,3.5258 3.93112,6.88661 6.2453,10.07526 m 11.95894,13.49943 c 4.91662,4.63436 10.15971,8.7046 15.36494,12.17212 m 6.33968,3.94704 c 3.73272,2.16432 7.38019,3.99766 10.8575,5.47693 m 6.49865,2.41595 c 10.22073,3.2117 18.17776,2.71111 21.16087,-2.23839 m 1.25234,-6.05006 c -0.0633,-1.14774 -0.25166,-2.39592 -0.57366,-3.74687 -0.6697,-2.80976 -1.91736,-6.06405 -3.63873,-9.63332 m -3.30049,-6.23718 c -0.75618,-1.32351 -1.56072,-2.67528 -2.40948,-4.05016 m -3.40148,-5.28317 c -12.39813,-18.52961 -31.39471,-39.87515 -47.88806,-52.730004 -0.68893,-0.536945 -1.37348,-1.059074 -2.05345,-1.56705 m -5.00582,-3.551909 c -3.87307,-2.607586 -7.56622,-4.77889 -11.03305,-6.650319 m -11.94438,-5.923564 c -9.38387,-4.428956 -15.61851,-7.444518 -16.99825,-14.061331 -0.26028,-1.248236 -0.34778,-2.624625 -0.27749,-4.082175 m 1.47615,-7.392228 c 3.88184,-11.588645 14.81639,-23.510045 27.07447,-17.8048084 2.18945,1.0190314 4.4211,2.6003664 6.68939,4.6700054 m 4.40633,4.563141 c 1.01678,1.171665 2.03995,2.428523 3.06904,3.764289 m 9.40469,13.975679 c 2.18779,3.615816 4.39476,7.487302 6.61678,11.559243 m 2.95049,5.503856 c 7.12656,13.516893 14.3875,28.824949 21.64842,44.132947" + id="path10" + inkscape:test-ignore="true" + inkscape:path-effect="#path-effect21;#path-effect27" + inkscape:original-d="m 151.07817,110.19084 c 0.0729,-36.18159 0.1448,-72.364177 0.2157,-108.5477647 43.56097,22.3138797 87.1192,44.6258667 130.6773,66.9373007 C 257.08374,113.07654 232.19631,157.56993 207.30739,202.06321 168.61031,182.50922 129.91378,162.95501 91.215472,143.39941 119.51323,119.06553 147.80885,94.731614 176.10404,70.396215 202.38195,44.997359 228.65781,19.598519 254.9332,-5.8018283 230.40909,-15.311689 205.88496,-24.822169 181.35935,-34.333839 165.09376,19.322238 148.82783,72.975169 132.56056,126.62817 c 40.64617,14.82426 81.28971,29.64693 121.93307,44.46889 17.11451,-16.44604 34.22735,-32.89242 51.33953,-49.34012 C 257.01372,79.155869 208.19524,36.555507 159.37478,-6.0467069 134.09432,19.726256 108.81387,45.497189 83.531913,71.267636 111.10665,104.71121 138.67929,138.15244 166.25147,171.59334 c 23.01059,-10.60816 46.01925,-21.2169 69.02737,-31.82685 19.24727,-41.460775 38.49276,-82.920895 57.73763,-124.382844 -11.0821,-27.755583 -22.16477,-55.511056 -33.24865,-83.268085 -46.06206,48.530941 -92.12327,97.05894 -138.18641,145.58691 27.37125,29.110389 54.7404,58.218609 82.1091,87.326409 21.90837,1.33068 43.81485,2.66031 65.72078,3.98897 -30.96397,-39.33402 -61.9277,-78.667464 -92.89305,-118.002697 -19.32558,0.139897 -38.65139,0.278788 -57.97858,0.416682 14.2009,-24.727904 28.40024,-49.455819 42.59886,-74.185229 19.07567,40.215617 38.14957,80.428624 57.22286,120.641436" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.129968,175.39842 76.941722,128.51129 m 2.01834,3.37113 21.76978,36.36079 m 2.37882,3.97321 5.42935,9.06833 c 0,0 38.52099,-25.74677 79.58235,-53.82383 m 2.48256,-1.69826 c 9.142,-6.25656 18.37365,-12.60488 27.30037,-18.78816 m 2.99228,-2.07443 c 35.29804,-24.49209 65.04543,-45.90295 64.23616,-47.95847 -1.15967,-2.94553 -81.65643,-14.45846 -147.54051,-23.41315 m -3.69623,-0.50178 c -30.74881,-4.1694 -57.86647,-7.72526 -71.544512,-9.50605 m -9.258705,-1.20076 c -0.102912,-0.0133 -0.155151,-0.02 -0.155151,-0.02 0,0 -6.822773,16.95699 -15.231137,37.75734 m -1.409481,3.48598 c -4.544717,11.23769 -9.454031,23.35261 -13.946296,34.38756 m -1.333848,3.27481 c -7.540719,18.50362 -13.627746,33.26248 -14.329466,34.43201 -1.002404,1.67068 54.314339,20.80986 108.809796,39.17969 m 3.58426,1.20752 c 29.939,10.0805 59.25036,19.80723 78.42597,26.14542 m 3.32255,1.09783 c 11.65629,3.85008 18.79017,6.19188 18.79017,6.19188 0,0 -0.10557,-91.67674 -0.31079,-122.38772 -0.0834,-12.47529 -2.76926,-27.80702 -7.02829,-41.55502 m -1.02325,-3.18124 c -6.22438,-18.64673 -15.3079,-33.59823 -24.52242,-33.08713 -2.79024,0.15477 -9.78065,0.70738 -19.46044,1.56551 m -6.74074,0.60769 c -28.3359,2.59459 -72.94403,7.15769 -106.437489,12.01553 m -3.437471,0.50552 c -12.766417,1.90426 -23.693219,3.84462 -31.149375,5.72142 m -3.011731,0.80983 c -4.775477,1.38117 -7.499111,2.71916 -7.499111,3.97293 0,9.64983 -19.869817,106.87662 116.402187,97.28673 20.38747,-1.43473 39.54212,-2.11885 57.38375,-2.44317 m 5.44822,-0.0888 c 0.2961,-0.004 0.59183,-0.009 0.88718,-0.0126 m 3.42455,-0.044 c 8.82248,-0.10404 17.30175,-0.13375 25.42728,-0.1405 m 3.00001,-0.002 c 77.91073,-0.0179 122.4631,1.52503 124.06096,-42.14032 2.16729,-59.22647 -96.49791,-108.84397 -131.31909,-97.80923 -34.82117,11.03474 -111.02622,41.81464 -107.4827,122.44555 0.30248,6.88273 0.16245,13.34086 -0.27695,19.3955 m -0.24442,2.99854 c -1.06726,11.80249 -3.22933,22.01553 -5.35243,30.80638 m -1.50341,6.0748 c -8.26288,32.89612 -11.42743,43.1031 65.9185,41.74672 112.18315,-1.96731 -26.0809,-157.40699 -34.14208,-160.53307 -0.99736,-0.38677 -2.99193,-1.50858 -5.72169,-3.17762 m -2.5513,-1.58387 c -6.79581,-4.2729 -16.69205,-10.86345 -27.01649,-17.85636 m -5.53555,-3.75938 c -2.21316,-1.50681 -4.42418,-3.01642 -6.60726,-4.51032 m -3.73967,-2.56235 C 89.302598,182.76481 75.491621,173.11604 75.491621,173.11604" + id="path09" + inkscape:test-ignore="true" + inkscape:path-effect="#path-effect25" + inkscape:original-d="M 26.129968,175.39842 134.66798,356.68317 c 0,0 178.56076,-119.34693 176.59372,-124.34315 -1.96703,-4.99622 -232.195108,-34.64173 -232.195108,-34.64173 0,0 -44.283195,110.05932 -46.250228,113.3377 -1.967032,3.27839 212.932746,73.82234 212.932746,73.82234 0,0 -0.10557,-91.67674 -0.31079,-122.38772 -0.20522,-30.71099 -16.18231,-78.73259 -32.57396,-77.82339 -16.39166,0.9092 -177.736357,15.5486 -177.736357,25.19843 0,9.64983 -19.869817,106.87662 116.402187,97.28673 136.272,-9.58988 217.46466,14.35547 219.63195,-44.87099 2.16729,-59.22647 -96.49791,-108.84397 -131.31909,-97.80923 -34.82117,11.03474 -111.02622,41.81464 -107.4827,122.44555 3.54351,80.63091 -53.641847,102.98925 58.54129,101.02194 112.18315,-1.96731 -26.0809,-157.40699 -34.14208,-160.53307 -8.06118,-3.12607 -81.267939,-54.27054 -81.267939,-54.27054" /> + <g + id="g08" + inkscape:path-effect="#path-effect73" + transform="translate(-115.189,-42.471238)"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:test-ignore="true" + d="m -209.06092,181.66846 c 0,0 -0.28897,0.041 -0.83115,0.12546 m -3.08457,0.51418 c -5.27927,0.92841 -15.28115,2.90955 -26.16851,6.2155 m -3.11972,0.97704 c -1.82379,0.5891 -3.66186,1.21518 -5.49681,1.87948 m -8.07865,3.20823 c -6.75751,2.94958 -13.10242,6.47144 -18.09529,10.63219 m -6.27847,6.61692 c -2.38138,3.33261 -3.89026,6.98822 -4.21337,10.98901 m 1.21867,9.05631 c 1.53731,4.55509 4.51605,9.47965 9.26058,14.79667 m 3.86573,4.03357 c 0.96514,0.94322 1.98431,1.89809 3.05915,2.86474 m 2.38823,2.08877 c 6.98369,5.94598 16.04427,12.32511 27.54063,19.16286 7.77386,4.6237 14.79085,8.56226 21.10374,11.88023 m 4.56377,2.35308 c 8.65857,4.37396 15.86221,7.47495 21.77219,9.50016 m 2.88063,0.93384 c 4.90233,1.49261 8.79045,2.15035 11.77992,2.11454 m 3.22917,-0.3834 c 11.04276,-2.8196 1.98612,-20.6473 -13.91354,-37.27235 m -2.10272,-2.15144 c -2.54539,-2.54897 -5.24057,-5.05243 -8.03657,-7.45052 m -3.06958,-2.55667 c -3.22664,-2.60845 -6.5589,-5.05552 -9.92667,-7.25546 m -17.27685,-8.70917 c -8.95703,-3.15376 -16.59683,-5.60777 -23.09903,-7.75154 m -2.84809,-0.9445 c -13.46376,-4.49765 -21.63055,-7.79425 -26.37132,-13.94681 m -2.13611,-3.41767 c -1.22071,-2.4387 -2.08939,-5.27941 -2.67738,-8.67686 m -0.89769,-9.04408 c -0.0324,-0.73137 -0.0585,-1.4818 -0.0787,-2.25202 -0.13126,-5.02564 0.0507,-9.80461 0.45167,-14.29195 m 0.40353,-3.84413 c 2.67176,-22.14636 10.39,-36.26121 10.39,-36.26121 0,0 4.40822,2.84826 9.97558,7.88006 m 4.97063,4.82231 c 9.42684,9.83606 19.43462,24.65338 17.19434,41.82726 -0.1093,0.83792 -0.22941,1.68119 -0.35979,2.52925 m -0.49274,2.96062 c -0.5879,3.28916 -1.31754,6.63873 -2.15881,10.01625 m -1.46679,5.53007 c -0.90219,3.21435 -1.88961,6.43789 -2.93682,9.64312 m -1.53185,4.5575 c -0.4921,1.42554 -0.99377,2.84479 -1.50272,4.25526 m -2.9642,7.92789 c -2.56308,6.63744 -5.19504,12.95788 -7.6344,18.67905 m -1.22812,2.86917 c -2.94672,6.86051 -5.52567,12.71703 -7.23176,17.02433 -0.34038,0.85935 -0.85668,1.66425 -1.51902,2.42074 m -2.89331,2.47736 c -2.78851,1.88224 -6.50417,3.41911 -10.42476,4.75662 m -3.28531,1.06728 c -18.05091,5.61844 -36.20798,7.96473 12.97172,20.67299 0.6335,0.1637 1.26248,0.32517 1.88698,0.48443 m 8.26248,2.03934 c 62.40955,14.85285 75.54112,4.52609 82.44003,-27.70567 0.80947,-3.78185 1.41744,-7.37234 1.82275,-10.78935 m 0.39855,-4.14837 c 0.25937,-3.5765 0.27671,-6.95511 0.0505,-10.15906 m -0.60077,-5.1704 c -0.15655,-0.95124 -0.33738,-1.8864 -0.54255,-2.80621 m -0.83944,-3.23171 c -1.52905,-5.13346 -3.88019,-9.7788 -7.06268,-14.07848 m -1.88437,-2.39079 c -3.30295,-3.94458 -7.34969,-7.60447 -12.14805,-11.09984 m -7.9142,-5.25465 c -12.58977,-8.27646 -12.5001,-17.96685 -14.97465,-26.33195 m -0.9864,-2.84826 c -0.72558,-1.77837 -1.66395,-3.47601 -2.98122,-5.06307 m -5.25869,-4.40201 c -1.51548,-0.90306 -3.28007,-1.74193 -5.34508,-2.50741 m -3.59851,-1.16937 c -2.20148,-0.62659 -4.67829,-1.1874 -7.4699,-1.67535 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 5.74214,17.24674 2.2585,32.06974 2.87567,42.69428 m 0.33434,3.13864 c 0.80414,4.89684 2.98978,8.68718 8.24863,11.14573 m 3.36957,1.26384 c 0.70641,0.21097 1.45297,0.40569 2.24186,0.58386 m 3.1534,0.5889 c 0.20753,0.0315 0.41746,0.0622 0.62983,0.0919 m 3.02742,0.34692 c 6.23049,0.5696 14.25825,0.48995 24.58435,-0.3057 29.16195,-2.24699 49.37948,-5.18462 61.85644,-11.25291 m 3.4072,-1.85268 c 1.1322,-0.69 2.18348,-1.41573 3.15515,-2.17987 m 2.25988,-1.98775 c 5.41581,-5.34939 7.56927,-12.38682 6.81299,-21.82697 m -0.3527,-3.1889 c -0.59283,-4.25631 -1.70842,-8.96434 -3.31936,-14.17961 m -1.82987,-5.42348 c -0.87827,-2.30363 -1.90198,-4.58687 -3.05545,-6.83813 m -1.47416,-2.73626 c -6.74615,-11.93512 -17.04767,-22.81157 -28.47832,-30.83111 m -4.36985,-2.89181 c -1.09972,-0.68479 -2.20674,-1.34222 -3.31904,-1.97081 m -4.22883,-2.23724 c -7.19667,-3.54859 -14.50522,-5.83307 -21.39135,-6.45744 m -3.13609,-0.16869 c -13.75071,-0.21599 -25.40468,6.72208 -30.43289,24.17094 m -2.955,7.74522 c -1.0463,2.1191 -2.25183,4.14919 -3.58687,6.0963 m -5.75451,7.13951 c -2.46271,2.64965 -5.13606,5.12546 -7.91564,7.44858 m -2.51909,2.04354 c -30.49877,24.04051 -69.68493,31.12715 12.6237,47.62634 m 2.99181,0.59337 c 0.89385,0.17544 1.80125,0.35196 2.72233,0.52958 m 2.99697,0.58235 c 0.61785,0.12189 1.23277,0.24441 1.84475,0.36752 m 2.96082,0.60501 c 12.97187,2.69191 24.59929,5.65033 35.0559,8.69725 m 7.54533,2.27398 c 13.65924,4.25436 25.16628,8.59361 34.97878,12.54856 m 2.85909,1.16048 c 4.12516,1.68555 7.93817,3.2896 11.4767,4.7735 m 2.78338,1.16511 c 29.17502,12.17801 38.81721,14.71602 52.85657,-16.91856 10.45679,-23.56206 -18.06652,-37.26786 -53.74005,-45.23495 m -2.97998,-0.64888 c -5.53405,-1.17487 -11.21585,-2.21716 -16.93023,-3.14177 m -3.07593,-0.48603 c -5.44966,-0.84082 -10.91013,-1.57732 -16.28192,-2.22239 m -5.71707,-0.65675 c -0.95408,-0.10474 -1.90412,-0.20666 -2.84955,-0.30585 m -3.01901,-0.30911 c -9.32434,-0.9315 -18.12778,-1.59812 -25.83311,-2.07452 m -3.14688,-0.18777 c -10.32792,-0.594 -18.35377,-0.83666 -22.50131,-0.93187" + id="path07" + inkscape:original-d="m -209.06092,181.66846 c 0,0 -149.11657,21.14379 -28.03355,93.16093 121.08302,72.01714 58.54708,-22.18006 11.83071,-38.70522 -46.71636,-16.52515 -58.09215,-14.03527 -58.9355,-46.32542 -0.84336,-32.29015 11.2452,-54.39729 11.2452,-54.39729 0,0 36.20245,23.39132 32.14055,54.52963 -4.06191,31.13832 -23.04596,69.67809 -29.508,85.99251 -6.46203,16.31442 -76.32612,13.00293 -5.15068,31.39499 71.17544,18.39207 85.33157,8.72715 92.58949,-25.1819 7.25791,-33.90906 -1.68344,-52.43466 -27.66172,-68.45502 -25.97829,-16.02035 -1.94042,-37.72642 -41.67295,-44.67126 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 12.79881,38.44169 -20.23712,64.84203 48.46507,59.54838 68.70219,-5.29364 87.76108,-14.4205 72.91806,-59.28517 -14.84303,-44.86468 -86.41389,-83.73089 -100.90525,-32.24825 -14.49135,51.48264 -123.29648,56.03548 -3.752,79.00908 119.54447,22.9736 130.68552,69.50381 154.80796,15.14926 24.122437,-54.35455 -159.19308,-56.25764 -159.19308,-56.25764" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -166.01998,156.9679 c -0.60874,16.44264 -1.21748,32.88516 -2.71596,48.03544 m -0.39411,3.76384 c -2.76558,24.96987 -8.22904,46.02143 -20.55632,57.10482 -2.20882,1.98594 -4.638,3.65185 -7.23818,5.0247 m -3.28553,1.54455 c -2.87769,1.19729 -5.92258,2.08177 -9.07697,2.68495 m -2.96656,0.48122 c -7.06061,0.9474 -14.56254,0.58672 -21.89577,-0.74887 m -8.98796,-2.13941 c -1.52186,-0.44795 -3.0243,-0.93447 -4.50126,-1.45627 m -2.83784,-1.05803 c -4.73365,-1.85918 -9.15046,-4.07572 -13.03664,-6.53285 m -2.53725,-1.69174 c -0.71515,-0.50326 -1.40793,-1.01482 -2.0767,-1.53378 -15.4309,-11.97416 -18.08278,-27.88788 -15.14839,-40.69902 m 4.04027,-10.65635 c 0.15045,-0.27184 0.30353,-0.54032 0.4592,-0.80541 m 1.76825,-2.71347 c 2.64668,-3.66483 5.87524,-6.54322 9.60248,-8.61778 m 2.69474,-1.32294 c 5.56088,-2.3866 12.06874,-3.17668 19.2924,-2.32187 4.61182,0.54574 9.51526,1.76185 14.35448,3.75812 m 5.39202,2.57728 c 0.41874,0.22929 0.83593,0.46498 1.25135,0.70715 m 5.06488,3.35743 c 0.79208,0.59414 1.57297,1.21542 2.34071,1.86444 m 2.43163,2.1936 c 5.2228,5.02665 9.67967,11.47866 12.67482,19.57071 5.95719,16.09466 6.13247,38.67622 0.43597,56.80664 m -1.12434,3.31029 c -0.44346,1.21083 -0.91493,2.39721 -1.41444,3.55556 m -1.25337,2.72572 c -0.4921,1.00435 -1.00713,1.98344 -1.54511,2.93461 m -1.5836,2.61473 c -0.72979,1.12503 -1.49579,2.20211 -2.29805,3.22597 -4.48143,5.7193 -10.09408,9.77798 -16.15453,12.35206 m -13.66243,3.32749 c -0.24406,0.0195 -0.48804,0.0371 -0.73191,0.0527 m -4.00255,0.0776 c -7.47742,-0.18717 -14.64392,-2.23347 -20.34764,-5.84225 -9.15354,-5.7915 -14.5392,-15.60732 -16.19607,-26.52109 m -0.366,-3.07616 c -0.54365,-6.26553 0.1011,-12.79437 1.92721,-19.05921 0.93668,-3.21347 2.18417,-6.35741 3.66375,-9.39446 m 1.50632,-2.91296 c 1.51994,-2.7783 3.22142,-5.45205 5.0396,-7.99048 m 5.77228,-7.21509 c 2.41303,-2.71403 4.902,-5.18293 7.35084,-7.35162 m 4.34673,-3.57298 c 1.36464,-1.03441 2.69249,-1.95725 3.96108,-2.75785 m 2.7012,-1.56345 c 2.37028,-1.23456 4.52362,-1.95653 6.53688,-2.10628 m 4.22707,0.61479 c 4.20026,1.6357 7.96824,6.44852 12.20447,15.13734 6.2028,12.72243 13.4097,33.75371 12.44184,51.15116 m -0.54301,5.08739 c -0.2171,1.3356 -0.49337,2.63979 -0.83364,3.9063 m -0.90446,2.86222 c -0.34301,0.93495 -0.72682,1.84428 -1.15368,2.72505 -3.06272,6.31957 -8.34168,11.16928 -14.53794,14.30103 m -6.0821,2.43857 c -2.09646,0.63915 -4.24353,1.09953 -6.40043,1.37334 m -3.85249,0.28897 c -4.36424,0.0993 -8.66917,-0.58626 -12.57557,-2.12138 m -10.59364,-7.69014 c -5.05091,-6.18376 -7.92209,-15.14053 -8.54072,-25.4174 m -0.12141,-3.36504 c -0.0903,-7.18142 0.86797,-14.90258 2.89768,-22.70448 m 0.93623,-3.34957 c 1.33513,-4.46597 3.02119,-8.93688 5.06248,-13.32709 0.19947,-0.429 0.40233,-0.85722 0.60845,-1.28455 m 1.47541,-2.93853 c 1.73534,-3.3258 3.65395,-6.57743 5.69174,-9.69204 m 2.26704,-3.3401 c 1.42246,-2.02121 2.88826,-3.97019 4.37793,-5.82783 m 1.92818,-2.33807 c 9.69899,-11.43227 20.04116,-18.73977 25.83246,-16.8285 m 4.14751,5.42097 c 0.24238,1.00639 0.40982,2.14324 0.50782,3.39623 m 0.10394,3.31711 c -0.0467,5.37285 -1.0047,12.21005 -2.5857,19.75778 m -1.01575,4.58508 c -2.8966,12.43176 -7.22969,26.28703 -11.83209,38.51458 m -1.08664,2.84382 c -1.25388,3.23203 -2.52075,6.32759 -3.77755,9.22635 m -1.2269,2.77405 c -0.16226,0.3594 -0.32421,0.71514 -0.48582,1.06708 m -1.47552,3.12707 c -0.10156,0.20916 -0.20291,0.4166 -0.30405,0.62229 -2.04011,4.14918 -3.99117,7.58699 -5.84514,10.37117 m -2.08707,2.91469 c -1.22505,1.57881 -2.40255,2.85796 -3.52988,3.85633 m -3.53387,2.30024 c -1.29585,0.51591 -2.50498,0.60696 -3.62188,0.31259 m -5.86407,-6.83579 c -0.40608,-1.03204 -0.77668,-2.16661 -1.11073,-3.39586 -1.54918,-5.70078 -2.31183,-13.43793 -1.6998,-22.0585 m 0.55455,-5.40134 c 0.57884,-4.30895 1.50548,-8.76844 2.84592,-13.24911 m 0.97241,-3.03796 c 2.21419,-6.48555 5.32535,-12.95429 9.5332,-19.01476 m 2.11158,-2.88508 c 1.35465,-1.75774 2.80493,-3.47503 4.33653,-5.14712 m 2.15895,-2.27336 c 0.0293,-0.0298 0.0587,-0.0596 0.0881,-0.0894 m 2.41791,-2.36308 c 0.53489,-0.50438 1.07666,-1.00369 1.62483,-1.49777 m 2.27423,-1.98922 c 7.23606,-6.14418 15.42029,-11.39556 23.57425,-15.42947 m 2.8276,-1.35082 c 7.32412,-3.37473 14.5319,-5.73188 20.90899,-6.83441 m 3.74871,-0.51181 c 0.77215,-0.0754 1.52822,-0.12932 2.26671,-0.16127 19.33578,-0.83651 26.61635,13.39094 33.89645,27.61748" + id="path06" + inkscape:path-effect="#path-effect69" + inkscape:original-d="m -166.01998,156.9679 c -1.67689,45.322 -3.35477,90.64301 -5.03366,135.96301 -38.94347,-8.79705 -77.88639,-17.59474 -116.83109,-26.39361 0.57157,-20.97977 1.14211,-41.95969 1.71166,-62.94103 12.43089,-6.08283 24.86028,-12.16641 37.28892,-18.25112 19.36116,9.84585 38.72054,19.6903 58.07931,29.53394 -2.84705,34.76267 -5.69498,69.52295 -8.54397,104.28292 -25.5325,1.46084 -51.06497,2.92062 -76.59895,4.37944 -4.81805,-20.66437 -9.63691,-41.3289 -14.45687,-61.99485 15.54094,-16.11242 31.08027,-32.22519 46.6189,-48.33928 6.38752,2.44843 12.77379,4.89577 19.15918,7.34216 9.80925,30.76761 19.6171,61.53299 29.42414,92.29799 -27.60283,5.95511 -55.20556,11.90898 -82.80985,17.86197 -1.31165,-31.02495 -2.62425,-62.04965 -3.93788,-93.07598 27.15718,-24.55455 54.31228,-49.10912 81.46692,-73.66517 -15.80316,51.9684 -31.60669,103.93373 -47.41154,155.8991 -9.14471,-1.22491 -18.29006,-2.45077 -27.43659,-3.67766 1.20135,-28.01543 2.40166,-56.03074 3.60099,-84.0476 31.39213,-15.90178 62.782,-31.80392 94.17149,-47.70738 7.28186,14.22903 14.56243,28.45648 21.84214,42.68322" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -203.89281,256.84604 c -1.49205,-1.32271 -3.00435,-2.62258 -4.53619,-3.899 -2.53533,-2.11259 -5.12362,-4.16051 -7.73787,-6.17646 m -21.45611,-16.47247 c -2.27545,-1.85736 -4.51297,-3.76021 -6.69348,-5.73165 -0.93737,-0.84749 -1.86532,-1.71071 -2.78108,-2.58965 m -2.38546,-2.35486 c -5.69834,-5.78996 -10.80084,-12.2205 -14.58887,-19.28893 m -1.35677,-2.67903 c -1.13008,-2.36864 -2.10936,-4.80576 -2.91253,-7.31126 M -269.4258,186.47 c -1.2718,-5.30873 -1.69791,-10.81183 -1.30344,-16.25666 m 0.31375,-3.09706 c 0.5894,-4.5224 1.74814,-8.9706 3.46157,-13.19733 4.22497,-10.42221 11.79233,-19.44945 21.28342,-25.48202 9.4911,-6.03257 20.85687,-9.05056 32.09319,-8.58363 11.23631,0.46693 22.29536,4.40762 31.33252,11.10109 9.03715,6.69347 16.02184,16.1061 19.86842,26.67381 3.84657,10.56772 4.54894,22.24895 2.05771,33.21556 -1.29046,5.6807 -3.43344,11.16022 -6.30329,16.22945 m -4.64871,7.02903 c -1.58655,2.07134 -3.30676,4.04012 -5.14933,5.88755 -6.17119,6.18747 -13.69677,11.0022 -21.87385,14.08426 m -2.84577,0.99399 c -1.42976,0.46047 -2.87639,0.86852 -4.33631,1.22233 -2.03143,0.49231 -4.08603,0.87885 -6.15445,1.16191 m -4.21653,0.4333 c -1.28653,0.089 -2.57591,0.13905 -3.86593,0.15078 m -3.31393,-0.0539 c -0.16388,-0.007 -0.32773,-0.0142 -0.49157,-0.0222 m -3.03549,-0.21869 c -6.36048,-0.60494 -12.64098,-2.12531 -18.5739,-4.49549 -1.7306,-0.69137 -3.43119,-1.45367 -5.0982,-2.28271 m -2.68073,-1.40635 c -1.80574,-0.99747 -3.56787,-2.07407 -5.28151,-3.22409 m -7.43859,-5.71304 c -3.86888,-3.38074 -7.39229,-7.16185 -10.49541,-11.25518 m -1.96663,-2.72062 c -5.17018,-7.51603 -8.93516,-16.11858 -9.65009,-25.1876 -0.0628,-0.79709 -0.10174,-1.59657 -0.11605,-2.3966 m 0.16394,-4.29514 c 0.26077,-2.73068 0.8252,-5.42916 1.72053,-8.0214 0.73483,-2.12753 1.69572,-4.18157 2.86815,-6.10355 m 4.44432,-5.61681 c 0.23443,-0.22982 0.47305,-0.45549 0.71579,-0.67684 3.45852,-3.1537 7.70971,-5.37481 12.23395,-6.60094 m 3.93061,-0.80556 c 0.34081,-0.048 0.6823,-0.0905 1.02425,-0.12748 6.32412,-0.68443 12.78853,0.4623 18.65043,2.93234 11.7238,4.94008 20.72325,14.88942 27.19405,25.843 4.63578,7.84732 8.19216,16.45354 9.66821,25.4194 m 0.41517,3.0157 c 0.0904,0.81803 0.16285,1.63864 0.21661,2.46153 0.23426,3.58549 0.0916,7.21701 -0.44611,10.78153 m -0.90694,4.52335 c -1.42505,5.65544 -3.90977,11.00753 -7.53141,15.57387 -1.36453,1.72047 -2.86898,3.31073 -4.46674,4.80883 m -2.38348,2.11754 c -1.97075,1.6658 -4.03913,3.22984 -6.12957,4.75389 m -3.97056,2.85807 c -4.88296,3.50877 -9.73698,7.11425 -13.66651,11.65007 -0.95585,1.10332 -1.84768,2.25938 -2.67355,3.46033 m -1.60677,2.53393 c -2.3355,4.00351 -3.99021,8.40651 -4.90116,12.95655 m -0.48599,2.96979 c -0.20292,1.59257 -0.31513,3.19622 -0.33403,4.80047 m 0.0742,2.99961 c 0.1325,2.15338 0.43678,4.29605 0.91918,6.40255 1.00156,4.37352 2.76227,8.55327 5.13178,12.35879 m 2.42225,3.48764 c 4.25755,5.51992 9.87135,9.99799 16.27678,12.7565 11.82761,5.09358 26.06042,4.19767 37.15595,-2.33887 11.09553,-6.53653 18.77809,-18.55125 20.05597,-31.36547" + id="path05" + inkscape:path-effect="#path-effect71" + inkscape:original-d="m -203.89281,256.84604 c -1.51106,-1.29866 -3.02313,-2.59833 -4.53619,-3.899 -1.51306,-1.30067 -40.57402,-43.95222 -60.86254,-65.92984 -20.28851,-21.97761 42.54475,32.84978 63.81562,49.27317 21.27087,16.42339 -47.41514,-18.3744 -71.12421,-27.5631 -23.70906,-9.1887 -0.89371,-36.25308 -1.34207,-54.38112 -0.44835,-18.12804 42.02319,14.16191 63.03329,21.24136 21.01009,7.07946 0.94469,41.18459 1.41553,61.77538 0.47085,20.5908 -20.41024,17.45993 -30.61686,26.1884 -10.20662,8.72847 48.02405,20.68221 72.03457,31.02182" /> + </g> + <g + id="g04" + transform="translate(106.99823,38.021844)" + inkscape:path-effect="#path-effect75"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -209.06092,181.66846 c 0,0 -0.28897,0.041 -0.83115,0.12546 m -3.08457,0.51418 c -0.39223,0.069 -0.81053,0.14377 -1.25333,0.22448 m -4.69415,0.9077 c -2.00014,0.40824 -4.23637,0.89157 -6.64336,1.45462 m -2.92991,0.70524 c -3.34632,0.82845 -6.94585,1.79937 -10.64776,2.92346 m -3.11972,0.97704 c -1.82379,0.5891 -3.66186,1.21518 -5.49681,1.87948 m -8.07865,3.20823 c -2.61714,1.14236 -5.1724,2.37055 -7.61119,3.68846 m -2.61542,1.47569 c -2.85796,1.68521 -5.51372,3.50556 -7.86868,5.46804 m -10.20572,15.48831 c -0.13225,0.69488 -0.22822,1.40071 -0.28612,2.11762 m 1.21867,9.05631 c 0.46728,1.38458 1.06774,2.80329 1.81049,4.25678 m 1.72717,3.03227 c 1.51213,2.41083 3.4072,4.91248 5.72292,7.50762 m 3.86573,4.03357 c 0.96514,0.94322 1.98431,1.89809 3.05915,2.86474 m 2.38823,2.08877 c 0.31389,0.26725 0.63198,0.53538 0.9543,0.80438 m 2.41917,1.97193 c 3.63644,2.8971 7.75699,5.89344 12.40047,8.99177 m 2.5065,1.64926 c 1.20318,0.78093 2.43926,1.56823 3.70882,2.36193 m 8.09013,4.88509 c 6.7708,3.98144 12.94672,7.42585 18.56498,10.37873 m 6.62277,3.38284 c 1.15724,0.57282 2.28729,1.12193 3.39054,1.64783 m 2.71655,1.27314 c 5.14327,2.36783 9.66267,4.19811 13.6061,5.54943 m 2.88063,0.93384 c 4.90233,1.49261 8.79045,2.15035 11.77992,2.11454 m 3.22917,-0.3834 c 8.31877,-2.12407 5.23121,-12.76518 -3.59548,-24.9931 m -1.79968,-2.41213 c -0.74409,-0.96641 -1.52076,-1.93971 -2.32733,-2.91661 m -2.70808,-3.16634 c -1.11806,-1.26359 -2.28096,-2.52732 -3.48297,-3.78417 m -2.10272,-2.15144 c -2.54539,-2.54897 -5.24057,-5.05243 -8.03657,-7.45052 m -3.06958,-2.55667 c -3.22664,-2.60845 -6.5589,-5.05552 -9.92667,-7.25546 m -17.27685,-8.70917 c -1.30667,-0.46008 -2.58531,-0.90526 -3.83647,-1.33677 m -8.49613,-2.87209 c -2.84234,-0.94412 -5.51726,-1.81909 -8.03379,-2.64452 m -5.58073,-1.84266 c -0.0782,-0.0261 -0.1562,-0.0522 -0.23403,-0.0782 m -3.37253,-1.14392 c -0.49179,-0.16959 -0.97565,-0.3379 -1.45169,-0.50518 m -9.1698,-3.57245 c -5.45704,-2.44784 -9.3815,-5.06282 -12.14327,-8.64703 m -2.50242,-4.1847 c -1.03048,-2.26315 -1.78368,-4.86255 -2.31107,-7.90983 m -0.89769,-9.04408 c -0.0324,-0.73137 -0.0585,-1.4818 -0.0787,-2.25202 -0.13126,-5.02564 0.0507,-9.80461 0.45167,-14.29195 m 0.40353,-3.84413 c 0.47662,-3.95076 1.11385,-7.64593 1.8392,-11.05096 m 1.63846,-6.75077 c 3.1739,-11.62276 6.91234,-18.45948 6.91234,-18.45948 0,0 4.40822,2.84826 9.97558,7.88006 m 4.97063,4.82231 c 5.40298,5.63753 10.99681,12.91141 14.36604,21.32745 m 1.26569,3.56198 c 0.0803,0.25885 0.15838,0.51864 0.23412,0.77936 m 0.76686,3.0457 c 0.72218,3.39101 1.03372,6.92369 0.80635,10.57179 m -0.3396,3.24995 c -0.0829,0.60415 -0.17124,1.21098 -0.26491,1.82028 m -0.49274,2.96062 c -0.5879,3.28916 -1.31754,6.63873 -2.15881,10.01625 m -1.46679,5.53007 c -0.7714,2.74837 -1.60511,5.50346 -2.48523,8.24808 m -1.98344,5.95254 c -0.11827,0.3426 -0.23708,0.68484 -0.35642,1.02668 m -5.21565,13.98905 c -2.20816,5.60367 -4.43939,10.945 -6.52925,15.84647 m -1.22812,2.86917 c -0.3713,0.86447 -0.73677,1.71299 -1.09538,2.54449 m -1.20862,2.79966 c -1.69189,3.91795 -3.18715,7.38713 -4.36292,10.2749 m -4.97717,6.30338 c -0.12091,0.0816 -0.24356,0.16258 -0.3679,0.2429 m -2.94246,1.64867 c -0.80104,0.3945 -1.64013,0.77232 -2.5075,1.13544 m -2.88738,1.12415 c -0.56717,0.20647 -1.14112,0.40814 -1.71952,0.60546 m -3.28531,1.06728 c -18.05091,5.61844 -36.20798,7.96473 12.97172,20.67299 0.6335,0.1637 1.26248,0.32517 1.88698,0.48443 m 8.26248,2.03934 c 1.97092,0.46906 3.89269,0.91301 5.76668,1.33194 m 4.01915,0.87563 c 2.27117,0.48134 4.46825,0.92321 6.59394,1.32581 m 4.17298,0.75567 c 3.70555,0.63871 7.17955,1.14722 10.43838,1.52675 m 8.17367,0.70633 c 17.36187,0.91182 27.48341,-2.79057 33.91849,-10.83681 m 1.7998,-2.50716 c 0.53983,-0.83669 1.05018,-1.71154 1.53399,-2.62431 m 1.31932,-2.72585 c 1.95672,-4.42417 3.43547,-9.60884 4.70363,-15.53367 0.0775,-0.36203 0.15313,-0.72231 0.22693,-1.08086 m 0.7248,-3.80366 c 0.35372,-2.02473 0.64412,-3.99197 0.87102,-5.90483 m 0.39855,-4.14837 c 0.25937,-3.5765 0.27671,-6.95511 0.0505,-10.15906 m -0.60077,-5.1704 c -0.15655,-0.95124 -0.33738,-1.8864 -0.54255,-2.80621 m -0.83944,-3.23171 c -1.52905,-5.13346 -3.88019,-9.7788 -7.06268,-14.07848 m -1.88437,-2.39079 c -3.30295,-3.94458 -7.34969,-7.60447 -12.14805,-11.09984 m -7.9142,-5.25465 c -2.07462,-1.36385 -3.80494,-2.7661 -5.25917,-4.19448 m -2.11021,-2.31658 c -0.45253,-0.55815 -0.86971,-1.11919 -1.2554,-1.68242 m -2.87522,-5.48509 c -1.69038,-4.32118 -2.28737,-8.63982 -3.47465,-12.65338 m -0.9864,-2.84826 c -0.72558,-1.77837 -1.66395,-3.47601 -2.98122,-5.06307 m -5.25869,-4.40201 c -1.51548,-0.90306 -3.28007,-1.74193 -5.34508,-2.50741 m -3.59851,-1.16937 c -2.20148,-0.62659 -4.67829,-1.1874 -7.4699,-1.67535 -6.22312,-1.08774 -11.84295,-1.23947 -16.84662,-0.57401 m -3.06853,0.5258 c -3.63873,0.76939 -6.91346,2.00478 -9.81839,3.65256 m -3.23876,2.11972 c -0.37271,0.2797 -0.73787,0.56735 -1.09544,0.8628 m -3.10976,2.97144 c -9.692,10.6903 -11.94565,28.51424 -6.24956,48.74542 m 0.93153,3.10701 c 0.13712,0.43127 0.27779,0.8635 0.422,1.29665 5.74214,17.24674 2.2585,32.06974 2.87567,42.69428 m 0.33434,3.13864 c 0.46709,2.84438 1.40031,5.31544 3.13119,7.369 m 2.56705,2.32134 c 0.75718,0.52739 1.60402,1.01295 2.55039,1.45539 m 3.36957,1.26384 c 0.70641,0.21097 1.45297,0.40569 2.24186,0.58386 m 3.1534,0.5889 c 0.20753,0.0315 0.41746,0.0622 0.62983,0.0919 m 3.02742,0.34692 c 4.10741,0.37551 8.99591,0.46885 14.80908,0.26089 m 2.99771,-0.12984 c 2.14126,-0.10812 4.39841,-0.25343 6.77756,-0.43675 0.19734,-0.0152 0.39426,-0.0304 0.59078,-0.0457 m 3.44638,-0.27468 c 2.18447,-0.17867 4.31609,-0.36214 6.3954,-0.55151 m 7.83856,-0.77022 c 3.97016,-0.42185 7.72524,-0.87438 11.26994,-1.36711 m 7.23099,-1.11327 c 1.84586,-0.31514 3.62486,-0.64545 5.33788,-0.99267 m 3.41755,-0.73559 c 6.46087,-1.47716 11.88574,-3.24114 16.32896,-5.40215 m 3.4072,-1.85268 c 1.1322,-0.69 2.18348,-1.41573 3.15515,-2.17987 m 2.25988,-1.98775 c 5.41581,-5.34939 7.56927,-12.38682 6.81299,-21.82697 m -0.3527,-3.1889 c -0.59283,-4.25631 -1.70842,-8.96434 -3.31936,-14.17961 m -1.82987,-5.42348 c -0.87827,-2.30363 -1.90198,-4.58687 -3.05545,-6.83813 m -1.47416,-2.73626 c -3.74292,-6.62187 -8.58027,-12.91785 -14.09769,-18.58083 m -2.68802,-2.65799 c -3.68038,-3.50661 -7.61464,-6.73126 -11.69261,-9.59229 m -4.36985,-2.89181 c -1.09972,-0.68479 -2.20674,-1.34222 -3.31904,-1.97081 m -4.22883,-2.23724 c -3.47326,-1.71262 -6.97258,-3.1308 -10.4379,-4.21003 m -6.35886,-1.59961 c -1.54815,-0.29328 -3.08156,-0.51061 -4.59459,-0.6478 m -3.13609,-0.16869 c -9.77418,-0.15353 -18.48896,3.30756 -24.51781,11.58882 m -2.16362,3.39072 c -1.48889,2.66552 -2.75126,5.72052 -3.75146,9.1914 m -12.29638,20.98103 c -2.46271,2.64965 -5.13606,5.12546 -7.91564,7.44858 m -2.51909,2.04354 c -29.32046,23.11171 -66.66999,30.55426 3.62029,45.75464 m 3.08448,0.65748 c 1.89913,0.39918 3.87144,0.80379 5.91893,1.21422 m 2.99181,0.59337 c 0.89385,0.17544 1.80125,0.35196 2.72233,0.52958 m 2.99697,0.58235 c 0.0371,0.007 0.0741,0.0146 0.11121,0.022 m 4.69436,0.95057 c 5.31888,1.10377 10.41173,2.25235 15.2905,3.43346 m 2.92245,0.71765 c 3.07102,0.76485 6.05515,1.54204 8.95553,2.32835 m 2.92479,0.80376 c 1.68294,0.46876 3.33694,0.94032 4.96263,1.41403 m 7.54533,2.27398 c 4.95063,1.54194 9.61854,3.09504 14.02553,4.63694 m 2.82991,1.00112 c 0.61886,0.22133 1.2324,0.44232 1.84068,0.66291 m 2.86998,1.05192 c 4.79796,1.77706 9.25726,3.52082 13.41268,5.19567 m 2.85909,1.16048 c 4.12516,1.68555 7.93817,3.2896 11.4767,4.7735 m 2.78338,1.16511 c 29.17502,12.17801 38.81721,14.71602 52.85657,-16.91856 9.50238,-21.41149 -13.18446,-34.68382 -44.17491,-42.90686 m -3.10725,-0.80094 c -2.12103,-0.53114 -4.27609,-1.03988 -6.45789,-1.52715 m -2.97998,-0.64888 c -0.3421,-0.0726 -0.68476,-0.14475 -1.02797,-0.21637 m -3.27145,-0.66449 c -4.16084,-0.82262 -8.38684,-1.57422 -12.63081,-2.26091 m -3.07593,-0.48603 c -2.88286,-0.44479 -5.76875,-0.86039 -8.64293,-1.24871 m -7.35163,-0.9391 c -0.0958,-0.0115 -0.1916,-0.0231 -0.28736,-0.0346 m -11.58563,-1.27171 c -9.32434,-0.9315 -18.12778,-1.59812 -25.83311,-2.07452 m -5.52449,-0.32065 c -1.82799,-0.0992 -3.57428,-0.18707 -5.2291,-0.26491 m -4.08968,-0.18058 c -4.6987,-0.19373 -8.40246,-0.29835 -10.80492,-0.3535" + id="path03" + inkscape:original-d="m -209.06092,181.66846 c 0,0 -149.11657,21.14379 -28.03355,93.16093 121.08302,72.01714 58.54708,-22.18006 11.83071,-38.70522 -46.71636,-16.52515 -58.09215,-14.03527 -58.9355,-46.32542 -0.84336,-32.29015 11.2452,-54.39729 11.2452,-54.39729 0,0 36.20245,23.39132 32.14055,54.52963 -4.06191,31.13832 -23.04596,69.67809 -29.508,85.99251 -6.46203,16.31442 -76.32612,13.00293 -5.15068,31.39499 71.17544,18.39207 85.33157,8.72715 92.58949,-25.1819 7.25791,-33.90906 -1.68344,-52.43466 -27.66172,-68.45502 -25.97829,-16.02035 -1.94042,-37.72642 -41.67295,-44.67126 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 12.79881,38.44169 -20.23712,64.84203 48.46507,59.54838 68.70219,-5.29364 87.76108,-14.4205 72.91806,-59.28517 -14.84303,-44.86468 -86.41389,-83.73089 -100.90525,-32.24825 -14.49135,51.48264 -123.29648,56.03548 -3.752,79.00908 119.54447,22.9736 130.68552,69.50381 154.80796,15.14926 24.122437,-54.35455 -159.19308,-56.25764 -159.19308,-56.25764" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -166.01998,156.9679 c -0.60874,16.44264 -1.21748,32.88516 -2.71596,48.03544 m -1.13433,9.84782 c -0.66148,4.96085 -1.44988,9.7374 -2.40069,14.27806 m -1.29688,5.63323 c -1.0931,4.32576 -2.36315,8.39452 -3.84553,12.15493 m -1.17543,2.81436 c -0.33729,0.76226 -0.68451,1.51011 -1.04199,2.24306 m -2.48488,4.57145 c -1.12397,1.85327 -2.3331,3.58284 -3.63466,5.17819 m -1.9895,2.25647 c -0.62908,0.65906 -1.27771,1.28975 -1.94654,1.89109 -2.20882,1.98594 -4.638,3.65185 -7.23818,5.0247 m -3.28553,1.54455 c -2.87769,1.19729 -5.92258,2.08177 -9.07697,2.68495 m -2.96656,0.48122 c -7.06061,0.9474 -14.56254,0.58672 -21.89577,-0.74887 m -8.98796,-2.13941 c -1.52186,-0.44795 -3.0243,-0.93447 -4.50126,-1.45627 m -2.83784,-1.05803 c -4.73365,-1.85918 -9.15046,-4.07572 -13.03664,-6.53285 m -2.53725,-1.69174 c -0.22306,-0.15697 -0.44394,-0.31474 -0.66259,-0.4733 m -2.52627,-1.94831 c -0.98947,-0.81271 -1.92267,-1.64223 -2.80176,-2.48648 m -2.4147,-2.50464 c -0.1083,-0.12158 -0.21558,-0.2434 -0.32185,-0.36546 m -2.05531,-2.5559 c -4.6829,-6.32335 -6.89354,-13.16228 -7.38542,-19.77908 m 0.37166,-9.13463 c 0.1557,-1.01099 0.34715,-2.00704 0.57115,-2.985 m 4.04027,-10.65635 c 0.15045,-0.27184 0.30353,-0.54032 0.4592,-0.80541 m 6.44839,-7.86995 c 1.52455,-1.3306 3.16822,-2.48497 4.92234,-3.4613 m 2.69474,-1.32294 c 2.49148,-1.06928 5.17304,-1.81808 8.02391,-2.24206 m 8.55456,-0.3258 c 0.89281,0.0556 1.79761,0.13756 2.71393,0.24599 0.83502,0.0988 1.6796,0.2196 2.53163,0.36302 m 2.9446,0.58075 c 2.92906,0.66252 5.91569,1.59224 8.87825,2.81435 m 5.39202,2.57728 c 0.36808,0.20155 0.73497,0.40804 1.1005,0.61954 m 5.21573,3.44504 c 0.79208,0.59414 1.57297,1.21542 2.34071,1.86444 m 2.43163,2.1936 c 1.22015,1.17432 2.39849,2.42644 3.52616,3.75909 m 6.699,10.16561 c 0.8972,1.786 1.71714,3.66696 2.44966,5.64601 0.68484,1.85024 1.29326,3.7862 1.82514,5.79128 m 0.71204,2.92902 c 0.50356,2.27088 0.91469,4.61552 1.23321,7.01191 m 0.35709,3.09364 c 0.15819,1.60952 0.27593,3.23752 0.35318,4.87766 m 0.10789,3.994 c 0.0354,4.96072 -0.29321,9.98435 -0.98716,14.90015 m -0.57433,3.5827 c -0.65651,3.65098 -1.52001,7.21731 -2.59109,10.62628 m -1.12434,3.31029 c -0.44346,1.21083 -0.91493,2.39721 -1.41444,3.55556 m -1.25337,2.72572 c -0.4921,1.00435 -1.00713,1.98344 -1.54511,2.93461 m -1.5836,2.61473 c -0.72979,1.12503 -1.49579,2.20211 -2.29805,3.22597 -4.48143,5.7193 -10.09408,9.77798 -16.15453,12.35206 m -13.66243,3.32749 c -0.24406,0.0195 -0.48804,0.0371 -0.73191,0.0527 m -4.00255,0.0776 c -4.11999,-0.10313 -8.14559,-0.77068 -11.88411,-1.95301 m -8.24604,-3.75283 c -0.0727,-0.0452 -0.14523,-0.0907 -0.21749,-0.13641 -0.86715,-0.54865 -1.70049,-1.13342 -2.50004,-1.75182 m -4.49866,-4.21358 c -3.82715,-4.31973 -6.52394,-9.59566 -8.09683,-15.34478 m -0.80813,-3.49825 c -0.10779,-0.56757 -0.20526,-1.13859 -0.29241,-1.71266 m -0.366,-3.07616 c -0.10173,-1.17246 -0.16185,-2.35414 -0.1804,-3.54158 m 0.0433,-3.04984 c 0.18273,-4.1706 0.8715,-8.37552 2.06434,-12.46779 0.93668,-3.21347 2.18417,-6.35741 3.66375,-9.39446 m 1.50632,-2.91296 c 0.43411,-0.79351 0.88303,-1.57849 1.34525,-2.35423 m 1.64414,-2.63702 c 0.66351,-1.01874 1.34816,-2.01907 2.05021,-2.99923 m 5.77228,-7.21509 c 2.41303,-2.71403 4.902,-5.18293 7.35084,-7.35162 m 4.34673,-3.57298 c 0.51027,-0.38679 1.0154,-0.75799 1.51422,-1.11302 m 5.14806,-3.20828 c 2.37028,-1.23456 4.52362,-1.95653 6.53688,-2.10628 m 4.22707,0.61479 c 3.51875,1.3703 6.73412,4.97036 10.17557,11.21109 m 2.14786,4.17102 c 0.0927,0.19134 0.18562,0.38451 0.27872,0.57948 m 1.84953,4.06345 c 0.073,0.16816 0.14603,0.33724 0.21901,0.50722 m 2.98749,7.55517 c 2.92563,8.06 5.45482,17.26458 6.52774,26.2348 m 0.30311,2.99001 c 0.25239,3.05647 0.31912,6.06716 0.15728,8.97626 m -0.54301,5.08739 c -0.2171,1.3356 -0.49337,2.63979 -0.83364,3.9063 m -0.90446,2.86222 c -0.34301,0.93495 -0.72682,1.84428 -1.15368,2.72505 -3.06272,6.31957 -8.34168,11.16928 -14.53794,14.30103 m -11.97764,3.74438 c -0.16823,0.0236 -0.33653,0.0461 -0.50489,0.0675 m -3.85249,0.28897 c -4.36424,0.0993 -8.66917,-0.58626 -12.57557,-2.12138 m -12.27611,-9.97104 c -2.64994,-3.97625 -4.55439,-8.83931 -5.69889,-14.30029 m -0.56708,-3.15642 c -0.27768,-1.83948 -0.47527,-3.73603 -0.59228,-5.67979 m -0.10286,-6.21352 c 0.16058,-6.35687 1.11526,-13.07595 2.87913,-19.856 m 0.93623,-3.34957 c 0.30605,-1.02373 0.63054,-2.04772 0.97353,-3.07094 m 1.11334,-3.14374 c 0.4842,-1.29714 0.99836,-2.59131 1.54258,-3.88041 m 3.98332,-8.33898 c 1.61048,-3.01811 3.36841,-5.97001 5.22531,-8.80814 m 2.26704,-3.3401 c 1.42246,-2.02121 2.88826,-3.97019 4.37793,-5.82783 m 1.92818,-2.33807 c 1.56959,-1.85008 3.15601,-3.59214 4.73727,-5.20458 m 4.14965,-3.94291 c 4.28431,-3.76741 8.38227,-6.40678 11.83358,-7.46666 m 9.25947,5.20662 c 0.24238,1.00639 0.40982,2.14324 0.50782,3.39623 m 0.10394,3.31711 c -0.0467,5.37285 -1.0047,12.21005 -2.5857,19.75778 m -2.86488,11.99519 c -0.49456,1.8654 -1.01451,3.74821 -1.5563,5.63913 m -1.38132,4.68411 c -2.078,6.85485 -4.4027,13.71578 -6.80673,20.14519 m -1.32525,3.47986 c -1.25388,3.23203 -2.52075,6.32759 -3.77755,9.22635 m -1.2269,2.77405 c -0.16226,0.3594 -0.32421,0.71514 -0.48582,1.06708 m -1.47552,3.12707 c -0.10156,0.20916 -0.20291,0.4166 -0.30405,0.62229 -2.04011,4.14918 -3.99117,7.58699 -5.84514,10.37117 m -2.08707,2.91469 c -1.22505,1.57881 -2.40255,2.85796 -3.52988,3.85633 m -3.53387,2.30024 c -0.64785,0.25793 -1.27402,0.40966 -1.87784,0.46013 m -7.60811,-6.98333 c -0.40608,-1.03204 -0.77668,-2.16661 -1.11073,-3.39586 -0.76914,-2.83033 -1.3444,-6.16261 -1.65382,-9.85574 m -0.18996,-3.0411 c -0.11253,-2.69419 -0.0873,-5.54447 0.0998,-8.50344 m 0.59873,-6.05956 c 0.57884,-4.30895 1.50548,-8.76844 2.84592,-13.24911 m 0.97241,-3.03796 c 0.33434,-0.97932 0.68914,-1.95826 1.06507,-2.93547 m 1.19748,-2.93798 c 1.93541,-4.49047 4.33639,-8.91516 7.27065,-13.14131 m 2.11158,-2.88508 c 0.072,-0.0934 0.14423,-0.18668 0.21674,-0.27985 m 6.27874,-7.14063 c 0.0293,-0.0298 0.0587,-0.0596 0.0881,-0.0894 m 2.41791,-2.36308 c 0.53489,-0.50438 1.07666,-1.00369 1.62483,-1.49777 m 2.27423,-1.98922 c 1.40905,-1.19644 2.85406,-2.35902 4.3278,-3.48535 m 3.36103,-2.47184 c 4.19895,-2.97168 8.57749,-5.65022 12.98113,-7.98434 m 7.99909,-3.8526 c 2.63883,-1.14412 5.25277,-2.15179 7.80795,-3.01178 m 2.90148,-0.92051 c 2.74502,-0.8168 5.40398,-1.45115 7.93236,-1.88828 m 3.74871,-0.51181 c 0.77215,-0.0754 1.52822,-0.12932 2.26671,-0.16127 8.36721,-0.36198 14.477,2.09686 19.30619,6.15581 m 3.93833,3.94769 c 4.23775,4.9796 7.44489,11.24688 10.65193,17.51398" + id="path02" + inkscape:path-effect="#path-effect48" + inkscape:original-d="m -166.01998,156.9679 c -1.67689,45.322 -3.35477,90.64301 -5.03366,135.96301 -38.94347,-8.79705 -77.88639,-17.59474 -116.83109,-26.39361 0.57157,-20.97977 1.14211,-41.95969 1.71166,-62.94103 12.43089,-6.08283 24.86028,-12.16641 37.28892,-18.25112 19.36116,9.84585 38.72054,19.6903 58.07931,29.53394 -2.84705,34.76267 -5.69498,69.52295 -8.54397,104.28292 -25.5325,1.46084 -51.06497,2.92062 -76.59895,4.37944 -4.81805,-20.66437 -9.63691,-41.3289 -14.45687,-61.99485 15.54094,-16.11242 31.08027,-32.22519 46.6189,-48.33928 6.38752,2.44843 12.77379,4.89577 19.15918,7.34216 9.80925,30.76761 19.6171,61.53299 29.42414,92.29799 -27.60283,5.95511 -55.20556,11.90898 -82.80985,17.86197 -1.31165,-31.02495 -2.62425,-62.04965 -3.93788,-93.07598 27.15718,-24.55455 54.31228,-49.10912 81.46692,-73.66517 -15.80316,51.9684 -31.60669,103.93373 -47.41154,155.8991 -9.14471,-1.22491 -18.29006,-2.45077 -27.43659,-3.67766 1.20135,-28.01543 2.40166,-56.03074 3.60099,-84.0476 31.39213,-15.90178 62.782,-31.80392 94.17149,-47.70738 7.28186,14.22903 14.56243,28.45648 21.84214,42.68322" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -203.89281,256.84604 c -1.49205,-1.32271 -3.00435,-2.62258 -4.53619,-3.899 -2.53533,-2.11259 -5.12362,-4.16051 -7.73787,-6.17646 m -21.45611,-16.47247 c -1.80483,-1.47321 -3.5858,-2.97505 -5.33338,-4.51702 m -2.24502,-2.02203 c -0.30926,-0.28478 -0.6174,-0.5713 -0.92429,-0.85955 m -3.35733,-3.27756 c -0.61644,-0.62635 -1.2259,-1.26019 -1.82748,-1.90153 m -2.04102,-2.24033 c -4.13119,-4.67243 -7.81295,-9.72186 -10.72037,-15.14707 m -1.35677,-2.67903 c -0.005,-0.0113 -0.0108,-0.0226 -0.0161,-0.0339 m -1.2242,-2.741 c -0.61985,-1.48636 -1.17919,-2.9985 -1.67219,-4.5364 M -269.4258,186.47 c -1.2718,-5.30873 -1.69791,-10.81183 -1.30344,-16.25666 m 0.31375,-3.09706 c 0.5894,-4.5224 1.74814,-8.9706 3.46157,-13.19733 0.681,-1.67991 1.44885,-3.32358 2.29759,-4.92431 m 3.65503,-5.93681 c 4.10333,-5.80043 9.33294,-10.80864 15.3308,-14.6209 9.4911,-6.03257 20.85687,-9.05056 32.09319,-8.58363 11.23631,0.46693 22.29536,4.40762 31.33252,11.10109 9.03715,6.69347 16.02184,16.1061 19.86842,26.67381 3.84657,10.56772 4.54894,22.24895 2.05771,33.21556 -1.29046,5.6807 -3.43344,11.16022 -6.30329,16.22945 m -4.64871,7.02903 c -1.58655,2.07134 -3.30676,4.04012 -5.14933,5.88755 -0.0263,0.0263 -0.0526,0.0527 -0.0789,0.0789 m -2.25541,2.13852 c -3.21651,2.89524 -6.74418,5.4428 -10.49756,7.59892 m -2.67597,1.45134 c -2.06724,1.05664 -4.19364,1.99773 -6.36602,2.81653 m -2.84577,0.99399 c -1.42976,0.46047 -2.87639,0.86852 -4.33631,1.22233 -2.03143,0.49231 -4.08603,0.87885 -6.15445,1.16191 m -4.21653,0.4333 c -0.40172,0.0278 -0.80373,0.0518 -1.20594,0.072 m -14.37829,-0.86162 c -4.68431,-0.79576 -9.28647,-2.08804 -13.69659,-3.84986 -1.31632,-0.52586 -2.61528,-1.09277 -3.8953,-1.69886 m -3.88363,-1.9902 c -0.48272,-0.26664 -0.96232,-0.53895 -1.43871,-0.81679 m -2.69049,-1.64979 c -0.27911,-0.17969 -0.55699,-0.36132 -0.83362,-0.54485 m -7.75728,-5.9257 c -3.86888,-3.38074 -7.39229,-7.16185 -10.49541,-11.25518 m -2.70558,-3.81693 c -1.12587,-1.70527 -2.17738,-3.46346 -3.13609,-5.26762 m -3.55625,-8.1981 c -1.1579,-3.44063 -1.93265,-6.99574 -2.2188,-10.62557 -0.0628,-0.79709 -0.10174,-1.59657 -0.11605,-2.3966 m 0.16394,-4.29514 c 0.26077,-2.73068 0.8252,-5.42916 1.72053,-8.0214 0.73483,-2.12753 1.69572,-4.18157 2.86815,-6.10355 m 4.44432,-5.61681 c 0.23443,-0.22982 0.47305,-0.45549 0.71579,-0.67684 3.45852,-3.1537 7.70971,-5.37481 12.23395,-6.60094 m 3.93061,-0.80556 c 0.15106,-0.0213 0.30227,-0.0414 0.45358,-0.0606 m 3.98083,-0.26139 c 5.21217,-0.0363 10.42915,1.09954 15.24027,3.12681 11.7238,4.94008 20.72325,14.88942 27.19405,25.843 0.97572,1.65168 1.90363,3.33698 2.77438,5.05217 m 1.36358,2.81374 c 0.23438,0.50784 0.46351,1.01804 0.68715,1.5305 m 1.93056,4.87282 c 1.29234,3.6323 2.28841,7.35908 2.91254,11.15017 m 0.41517,3.0157 c 0.0904,0.81803 0.16285,1.63864 0.21661,2.46153 0.19805,3.03132 0.12669,6.09555 -0.22504,9.12438 m -1.12801,6.1805 c -1.29281,5.13064 -3.45776,10.01162 -6.5525,14.28275 m -8.56919,8.83472 c -1.74577,1.43718 -3.55919,2.80225 -5.38951,4.13666 m -3.97056,2.85807 c -4.88296,3.50877 -9.73698,7.11425 -13.66651,11.65007 -0.95585,1.10332 -1.84768,2.25938 -2.67355,3.46033 m -2.97264,5.07652 c -1.62456,3.29525 -2.81344,6.80844 -3.53529,10.41396 m -0.48599,2.96979 c -0.20292,1.59257 -0.31513,3.19622 -0.33403,4.80047 m 0.0742,2.99961 c 0.1325,2.15338 0.43678,4.29605 0.91918,6.40255 0.29029,1.26763 0.64436,2.51899 1.05855,3.74967 m 1.29536,3.34629 c 0.79774,1.81727 1.72805,3.57678 2.77787,5.26283 m 2.42225,3.48764 c 0.34777,0.45089 0.7046,0.89483 1.07016,1.33145 m 3.06677,3.29271 c 3.52453,3.40371 7.63655,6.19299 12.13985,8.13234 11.82761,5.09358 26.06042,4.19767 37.15595,-2.33887 5.90984,-3.48157 10.85143,-8.51728 14.3727,-14.40017 m 1.45699,-2.64231 c 0.94893,-1.87545 1.75808,-3.82079 2.41441,-5.81565 m 0.88985,-3.11527 c 0.43055,-1.77236 0.74073,-3.57417 0.92202,-5.39207" + id="path01" + inkscape:path-effect="#path-effect52" + inkscape:original-d="m -203.89281,256.84604 c -1.51106,-1.29866 -3.02313,-2.59833 -4.53619,-3.899 -1.51306,-1.30067 -40.57402,-43.95222 -60.86254,-65.92984 -20.28851,-21.97761 42.54475,32.84978 63.81562,49.27317 21.27087,16.42339 -47.41514,-18.3744 -71.12421,-27.5631 -23.70906,-9.1887 -0.89371,-36.25308 -1.34207,-54.38112 -0.44835,-18.12804 42.02319,14.16191 63.03329,21.24136 21.01009,7.07946 0.94469,41.18459 1.41553,61.77538 0.47085,20.5908 -20.41024,17.45993 -30.61686,26.1884 -10.20662,8.72847 48.02405,20.68221 72.03457,31.02182" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Knot_multi_px_1_0_2.svg b/testfiles/lpe_tests/Knot_multi_px_1_0_2.svg new file mode 100644 index 0000000..dd2722f --- /dev/null +++ b/testfiles/lpe_tests/Knot_multi_px_1_0_2.svg @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg22" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs16"> + <inkscape:path-effect + effect="knot" + id="path-effect75" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="true" + inverse_width="true" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="knot" + id="path-effect73" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="spiro" + id="path-effect71" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect69" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="knot" + id="path-effect59" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="spiro" + id="path-effect52" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect48" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="knot" + id="path-effect29" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="6" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="knot" + id="path-effect27" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="6" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="true" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="knot" + id="path-effect25" + is_visible="true" + lpeversion="1" + switcher_size="15" + interruption_width="3" + prop_to_stroke_width="true" + add_stroke_width="inkscape_1.0_and_up" + both="false" + inverse_width="false" + add_other_stroke_width="inkscape_1.0_and_up" + crossing_points_vector="" /> + <inkscape:path-effect + effect="bspline" + id="path-effect21" + is_visible="true" + lpeversion="1" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect17" + is_visible="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 39.779935,116.30214 c -1.199488,-0.38251 -2.407823,-0.73728 -3.623714,-1.06392 -4.192024,-1.12617 -8.446997,-1.91252 -12.739893,-2.47631 m -6.300194,-0.67925 c -7.4902945,-0.64912 -15.0577903,-0.80185 -22.5723902,-1.0677 -8.5058128,-0.30093 -17.1104818,-0.77779 -25.4693038,-2.27829 m -7.136482,-1.56713 c -2.904289,-0.76561 -5.765198,-1.69061 -8.56735,-2.81281 -6.48678,-2.59782 -12.59551,-6.25694 -17.619603,-11.113427 -5.024093,-4.856486 -8.936078,-10.941571 -10.811223,-17.6729 -0.470181,-1.687839 -0.807743,-3.416313 -1.006514,-5.160296 m 0.07127,-7.927853 c 0.346858,-2.559617 1.016661,-5.070241 2.029276,-7.450981 2.734979,-6.430153 8.042809,-11.815756 14.602852,-14.22258 4.186753,-1.536084 8.793719,-1.85336 13.179064,-1.042677 4.385344,0.810684 8.544046,2.733896 12.08915,5.439575 7.090207,5.411356 11.555585,13.83437 13.123249,22.614817 1.528867,8.563147 0.42928,17.573233 -3.087914,25.529003 -3.517194,7.955769 -9.434404,14.827389 -16.76457,19.510719 -7.330165,4.68333 -16.043511,7.16402 -24.74159,7.07258 -8.698078,-0.0914 -17.349637,-2.75084 -24.613125,-7.53693 -12.1676,-8.01753 -20.05236,-21.959418 -21.32473,-36.475353 -0.9678,-11.041176 1.78675,-22.2686 7.33907,-31.875402 m 9.054642,-11.775079 c 9.252432,-9.234525 21.559724,-15.326335 34.470901,-17.512214 14.367145,-2.432375 29.393739,-0.133611 42.686617,5.835536 12.4959028,5.611267 23.5673304,14.483029 31.439998,25.692623 7.872668,11.209594 12.47939,24.752254 12.675207,38.448806 0.195817,13.696553 -4.083815,27.481663 -12.32133,38.425943 -8.2375158,10.94428 -20.4347212,18.92392 -33.847109,21.70632 -9.757882,2.02427 -20.024688,1.32227 -29.522451,-1.69541 -9.497764,-3.01769 -18.223404,-8.31776 -25.51315,-15.11288 -2.638681,-2.45963 -5.07957,-5.10548 -7.324763,-7.90649 m -7.166168,-10.56921 c -5.957075,-10.43677 -9.759661,-22.193532 -11.485724,-34.11494 -1.77412,-12.253293 -1.42754,-24.890159 1.304758,-36.944606 m 2.919273,-10.130061 c 1.12272,-3.179418 2.428919,-6.294919 3.92399,-9.326839 8.529417,-17.2971825 23.411846,-31.658575 41.545379,-38.225039 9.066767,-3.283232 18.855666,-4.616871 28.453769,-3.688282 9.598104,0.92859 18.9904611,4.134597 27.0502805,9.428479 8.0598195,5.2938814 14.7602195,12.68131435 19.0765125,21.3042769 4.316294,8.6229621 6.216181,18.4675621 5.231567,28.0600801 -0.701044,6.829854 -2.857917,13.485098 -6.186222,19.4937 m -3.906594,6.042553 c -0.209468,0.280097 -0.421717,0.558088 -0.636709,0.833911 -5.910905,7.583347 -13.8599926,13.525574 -22.71784,17.265157 -4.1820123,1.765551 -8.543819,3.021546 -12.993337,3.796228 m -6.257074,0.77148 C -36.710781,85.071823 -49.555825,82.399754 -60.786183,76.733802 -80.543443,66.76585 -95.456015,47.670739 -100.33951,26.086929 -105.223,4.5031185 -99.982911,-19.15168 -86.440961,-36.653822" + id="path11" + inkscape:path-effect="#path-effect17;#path-effect29" + inkscape:original-d="m 39.779935,116.30214 c -1.206905,-0.35364 -2.414809,-0.70828 -3.623714,-1.06392 -1.208905,-0.35564 -63.678704,-49.618685 -95.519555,-74.429527 -31.840852,-24.810842 25.595308,18.00881 38.391463,27.011715 12.7961541,9.002905 -46.137133,29.717917 -69.207199,44.575372 -23.07007,14.85746 48.152,-61.200673 72.2265,-91.802512 C 6.1219304,-10.008571 -19.320392,103.4434 -20.005804,144.86696 -20.691215,186.29053 -74.012972,98.602007 -101.01806,75.46803 -128.02314,52.334052 -14.68004,49.121036 28.487469,35.946039 71.654978,22.771043 -31.027299,63.138881 -60.786183,76.733802 -90.545067,90.328723 -77.888368,1.1430528 -86.440961,-36.653822" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 151.07817,110.19084 c 0.009,-4.65086 0.0185,-9.30174 0.0739,-13.890515 m 0.1713,-8.583633 c 0.32487,-11.044326 1.10606,-21.474958 3.03281,-30.364805 m 1.53125,-5.916038 c 0.85146,-2.774211 1.85502,-5.343848 3.0381,-7.672029 m 9.719,-10.923477 c 0.99447,-0.582519 2.04544,-1.089027 3.15616,-1.515187 m 15.21338,-1.39574 c 6.04328,0.70472 12.61956,2.620459 19.1627,5.563556 m 5.58873,2.770867 c 12.16236,6.600046 23.63751,16.636517 30.67852,28.893897 m 5.70769,14.052421 c 1.06213,4.318834 1.57012,8.808661 1.5813,13.378998 m -1.50107,14.362765 c -1.67826,8.14009 -4.70271,16.23946 -8.76382,23.80959 m -3.56088,6.08637 c -2.83726,4.46278 -6.03582,8.67394 -9.52332,12.51924 m -5.11482,5.18008 c -0.28768,0.26704 -0.57687,0.53161 -0.86753,0.79364 m -5.34827,4.40566 c -4.63079,3.46926 -9.55184,6.29272 -14.65049,8.29255 -31.79231,12.46978 -70.48884,-7.08443 -75.68968,-29.02951 -1.38795,-5.8565 -0.39028,-11.88313 2.33717,-18.04462 m 3.06636,-5.85252 c 4.32403,-7.19719 10.67298,-14.55889 18.04193,-22.031042 m 11.6959,-11.287194 c 4.96351,-4.616623 10.1195,-9.264283 15.23995,-13.93072 0.14986,-0.136575 0.29969,-0.273166 0.44949,-0.409772 m 4.52693,-4.144736 c 4.41338,-4.059292 8.76036,-8.118975 12.93529,-12.142331 m 4.46979,-4.361722 c 1.49222,-1.475933 2.95568,-2.94508 4.38504,-4.405585 m 4.26603,-4.444729 c 0.25777,-0.27428 0.5141,-0.548178 0.76897,-0.821682 m 4.19203,-4.617872 c 10.70959,-12.1386 17.99077,-23.323077 18.44504,-32.3723738 0.34635,-6.8993625 -3.27579,-12.5575152 -9.04288,-15.5146512 m -7.02417,-2.080843 c -8.26941,-0.944654 -18.56297,2.514694 -27.97714,12.7024396 -4.06158,4.3953276 -7.95938,10.042956 -11.50131,16.5402054 m -2.88876,5.651744 c -0.80275,1.674679 -1.58165,3.39224 -2.33401,5.147032 m -6.24468,17.546255 c -1.05715,3.662939 -1.98848,7.395465 -2.77567,11.159132 m -1.14805,6.129163 c -0.3957,2.39376 -0.72982,4.791654 -0.99771,7.183966 m -0.26966,23.673857 c 0.20169,1.948218 0.4651,3.867487 0.79328,5.751447 m 5.41141,17.184692 c 1.7853,3.67768 3.91639,7.10037 6.33164,10.27387 m 12.74878,12.75039 c 5.78741,4.48495 12.22405,8.15118 18.92267,11.0351 m 7.54518,2.88902 c 3.75594,1.2676 7.54755,2.30337 11.31071,3.11333 m 7.16482,1.27801 c 4.39569,0.62212 8.69339,0.93108 12.78563,0.93697 m 6.13072,-0.22956 c 26.57663,-2.08812 41.54799,-18.36078 26.39303,-46.5845 -3.25901,-6.0694 -7.91119,-12.691437 -13.5679,-19.455494 m -4.25495,-4.90446 c -1.14694,-1.276445 -2.3259,-2.554407 -3.53432,-3.831181 M 241.17242,70.267401 C 230.63235,60.489473 218.71301,51.228733 206.63768,43.777607 m -5.29788,-3.145395 c -4.00647,-2.283966 -8.01046,-4.348646 -11.96748,-6.147061 m -24.84236,-7.506192 c -9.58316,-1.179114 -18.24726,-0.01027 -25.70562,2.912921 m -6.7757,3.323041 c -14.42377,8.632006 -22.75835,24.606832 -22.08894,41.888825 0.54712,14.124725 7.10851,29.121964 16.56727,42.184034 m 4.02471,5.23033 c 9.7809,11.97932 21.83892,21.82337 33.41866,27.05014 11.43584,5.16182 22.40502,5.82062 32.94461,2.58638 m 11.73001,-5.27977 c 7.29527,-4.34004 14.37883,-10.54623 21.26415,-18.39677 m 4.03493,-4.81531 c 4.0803,-5.08727 8.08591,-10.74452 11.92067,-16.81049 m 7.18421,-12.209898 c 0.90493,-1.65234 1.79494,-3.324211 2.66846,-5.012997 m 2.90548,-5.805934 c 9.68465,-20.013932 16.90833,-41.908026 19.22926,-61.586809 4.08173,-34.60838 -7.00093,-62.363856 -35.57416,-51.977489 -6.64282,2.414665 -14.23085,6.890843 -22.08299,12.827274 m -5.70521,4.531103 c -11.47837,9.5478475 -23.16616,21.8451812 -33.0055,35.075347 m -7.51479,10.868575 c -4.49741,7.03662 -8.35155,14.191827 -11.27748,21.214061 m -2.15611,5.638732 c -0.72866,2.100035 -1.36511,4.181652 -1.90141,6.237857 m -1.77992,24.081663 c 0.21981,1.848148 0.521,3.666193 0.89757,5.453501 m 6.11962,16.947414 c 1.82688,3.5258 3.93112,6.88661 6.2453,10.07526 m 11.95894,13.49943 c 4.91662,4.63436 10.15971,8.7046 15.36494,12.17212 m 6.33968,3.94704 c 3.73272,2.16432 7.38019,3.99766 10.8575,5.47693 m 6.49865,2.41595 c 10.22073,3.2117 18.17776,2.71111 21.16087,-2.23839 m 1.25234,-6.05006 c -0.0633,-1.14774 -0.25166,-2.39592 -0.57366,-3.74687 -0.6697,-2.80976 -1.91736,-6.06405 -3.63873,-9.63332 m -3.30049,-6.23718 c -0.75618,-1.32351 -1.56072,-2.67528 -2.40948,-4.05016 m -3.40148,-5.28317 c -12.39813,-18.52961 -31.39471,-39.87515 -47.88806,-52.730004 -0.68893,-0.536945 -1.37348,-1.059074 -2.05345,-1.56705 m -5.00582,-3.551909 c -3.87307,-2.607586 -7.56622,-4.77889 -11.03305,-6.650319 m -11.94438,-5.923564 c -9.38387,-4.428956 -15.61851,-7.444518 -16.99825,-14.061331 -0.26028,-1.248236 -0.34778,-2.624625 -0.27749,-4.082175 m 1.47615,-7.392228 c 3.88184,-11.588645 14.81639,-23.510045 27.07447,-17.8048084 2.18945,1.0190314 4.4211,2.6003664 6.68939,4.6700054 m 4.40633,4.563141 c 1.01678,1.171665 2.03995,2.428523 3.06904,3.764289 m 9.40469,13.975679 c 2.18779,3.615816 4.39476,7.487302 6.61678,11.559243 m 2.95049,5.503856 c 7.12656,13.516893 14.3875,28.824949 21.64842,44.132947" + id="path10" + inkscape:path-effect="#path-effect21;#path-effect27" + inkscape:original-d="m 151.07817,110.19084 c 0.0729,-36.18159 0.1448,-72.364177 0.2157,-108.5477647 43.56097,22.3138797 87.1192,44.6258667 130.6773,66.9373007 C 257.08374,113.07654 232.19631,157.56993 207.30739,202.06321 168.61031,182.50922 129.91378,162.95501 91.215472,143.39941 119.51323,119.06553 147.80885,94.731614 176.10404,70.396215 202.38195,44.997359 228.65781,19.598519 254.9332,-5.8018283 230.40909,-15.311689 205.88496,-24.822169 181.35935,-34.333839 165.09376,19.322238 148.82783,72.975169 132.56056,126.62817 c 40.64617,14.82426 81.28971,29.64693 121.93307,44.46889 17.11451,-16.44604 34.22735,-32.89242 51.33953,-49.34012 C 257.01372,79.155869 208.19524,36.555507 159.37478,-6.0467069 134.09432,19.726256 108.81387,45.497189 83.531913,71.267636 111.10665,104.71121 138.67929,138.15244 166.25147,171.59334 c 23.01059,-10.60816 46.01925,-21.2169 69.02737,-31.82685 19.24727,-41.460775 38.49276,-82.920895 57.73763,-124.382844 -11.0821,-27.755583 -22.16477,-55.511056 -33.24865,-83.268085 -46.06206,48.530941 -92.12327,97.05894 -138.18641,145.58691 27.37125,29.110389 54.7404,58.218609 82.1091,87.326409 21.90837,1.33068 43.81485,2.66031 65.72078,3.98897 -30.96397,-39.33402 -61.9277,-78.667464 -92.89305,-118.002697 -19.32558,0.139897 -38.65139,0.278788 -57.97858,0.416682 14.2009,-24.727904 28.40024,-49.455819 42.59886,-74.185229 19.07567,40.215617 38.14957,80.428624 57.22286,120.641436" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.129968,175.39842 76.941722,128.51129 m 2.01834,3.37113 21.76978,36.36079 m 2.37882,3.97321 5.42935,9.06833 c 0,0 38.52099,-25.74677 79.58235,-53.82383 m 2.48256,-1.69826 c 9.142,-6.25656 18.37365,-12.60488 27.30037,-18.78816 m 2.99228,-2.07443 c 35.29804,-24.49209 65.04543,-45.90295 64.23616,-47.95847 -1.15967,-2.94553 -81.65643,-14.45846 -147.54051,-23.41315 m -3.69623,-0.50178 c -30.74881,-4.1694 -57.86647,-7.72526 -71.544512,-9.50605 m -9.258705,-1.20076 c -0.102912,-0.0133 -0.155151,-0.02 -0.155151,-0.02 0,0 -6.822773,16.95699 -15.231137,37.75734 m -1.409481,3.48598 c -4.544717,11.23769 -9.454031,23.35261 -13.946296,34.38756 m -1.333848,3.27481 c -7.540719,18.50362 -13.627746,33.26248 -14.329466,34.43201 -1.002404,1.67068 54.314339,20.80986 108.809796,39.17969 m 3.58426,1.20752 c 29.939,10.0805 59.25036,19.80723 78.42597,26.14542 m 3.32255,1.09783 c 11.65629,3.85008 18.79017,6.19188 18.79017,6.19188 0,0 -0.10557,-91.67674 -0.31079,-122.38772 -0.0834,-12.47529 -2.76926,-27.80702 -7.02829,-41.55502 m -1.02325,-3.18124 c -6.22438,-18.64673 -15.3079,-33.59823 -24.52242,-33.08713 -2.79024,0.15477 -9.78065,0.70738 -19.46044,1.56551 m -6.74074,0.60769 c -28.3359,2.59459 -72.94403,7.15769 -106.437489,12.01553 m -3.437471,0.50552 c -12.766417,1.90426 -23.693219,3.84462 -31.149375,5.72142 m -3.011731,0.80983 c -4.775477,1.38117 -7.499111,2.71916 -7.499111,3.97293 0,9.64983 -19.869817,106.87662 116.402187,97.28673 20.38747,-1.43473 39.54212,-2.11885 57.38375,-2.44317 m 5.44822,-0.0888 c 0.2961,-0.004 0.59183,-0.009 0.88718,-0.0126 m 3.42455,-0.044 c 8.82248,-0.10404 17.30175,-0.13375 25.42728,-0.1405 m 3.00001,-0.002 c 77.91073,-0.0179 122.4631,1.52503 124.06096,-42.14032 2.16729,-59.22647 -96.49791,-108.84397 -131.31909,-97.80923 -34.82117,11.03474 -111.02622,41.81464 -107.4827,122.44555 0.30248,6.88273 0.16245,13.34086 -0.27695,19.3955 m -0.24442,2.99854 c -1.06726,11.80249 -3.22933,22.01553 -5.35243,30.80638 m -1.50341,6.0748 c -8.26288,32.89612 -11.42743,43.1031 65.9185,41.74672 112.18315,-1.96731 -26.0809,-157.40699 -34.14208,-160.53307 -0.99736,-0.38677 -2.99193,-1.50858 -5.72169,-3.17762 m -2.5513,-1.58387 c -6.79581,-4.2729 -16.69205,-10.86345 -27.01649,-17.85636 m -5.53555,-3.75938 c -2.21316,-1.50681 -4.42418,-3.01642 -6.60726,-4.51032 m -3.73967,-2.56235 C 89.302598,182.76481 75.491621,173.11604 75.491621,173.11604" + id="path09" + inkscape:path-effect="#path-effect25" + inkscape:original-d="M 26.129968,175.39842 134.66798,356.68317 c 0,0 178.56076,-119.34693 176.59372,-124.34315 -1.96703,-4.99622 -232.195108,-34.64173 -232.195108,-34.64173 0,0 -44.283195,110.05932 -46.250228,113.3377 -1.967032,3.27839 212.932746,73.82234 212.932746,73.82234 0,0 -0.10557,-91.67674 -0.31079,-122.38772 -0.20522,-30.71099 -16.18231,-78.73259 -32.57396,-77.82339 -16.39166,0.9092 -177.736357,15.5486 -177.736357,25.19843 0,9.64983 -19.869817,106.87662 116.402187,97.28673 136.272,-9.58988 217.46466,14.35547 219.63195,-44.87099 2.16729,-59.22647 -96.49791,-108.84397 -131.31909,-97.80923 -34.82117,11.03474 -111.02622,41.81464 -107.4827,122.44555 3.54351,80.63091 -53.641847,102.98925 58.54129,101.02194 112.18315,-1.96731 -26.0809,-157.40699 -34.14208,-160.53307 -8.06118,-3.12607 -81.267939,-54.27054 -81.267939,-54.27054" /> + <g + id="g08" + inkscape:path-effect="#path-effect73" + transform="translate(-115.189,-42.471238)"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -209.06092,181.66846 c 0,0 -0.28897,0.041 -0.83115,0.12546 m -3.08457,0.51418 c -5.27927,0.92841 -15.28115,2.90955 -26.16851,6.2155 m -3.11972,0.97704 c -1.82379,0.5891 -3.66186,1.21518 -5.49681,1.87948 m -8.07865,3.20823 c -6.75751,2.94958 -13.10242,6.47144 -18.09529,10.63219 m -6.27847,6.61692 c -2.38138,3.33261 -3.89026,6.98822 -4.21337,10.98901 m 1.21867,9.05631 c 1.53731,4.55509 4.51605,9.47965 9.26058,14.79667 m 3.86573,4.03357 c 0.96514,0.94322 1.98431,1.89809 3.05915,2.86474 m 2.38823,2.08877 c 6.98369,5.94598 16.04427,12.32511 27.54063,19.16286 7.77386,4.6237 14.79085,8.56226 21.10374,11.88023 m 4.56377,2.35308 c 8.65857,4.37396 15.86221,7.47495 21.77219,9.50016 m 2.88063,0.93384 c 4.90233,1.49261 8.79045,2.15035 11.77992,2.11454 m 3.22917,-0.3834 c 11.04276,-2.8196 1.98612,-20.6473 -13.91354,-37.27235 m -2.10272,-2.15144 c -2.54539,-2.54897 -5.24057,-5.05243 -8.03657,-7.45052 m -3.06958,-2.55667 c -3.22664,-2.60845 -6.5589,-5.05552 -9.92667,-7.25546 m -17.27685,-8.70917 c -8.95703,-3.15376 -16.59683,-5.60777 -23.09903,-7.75154 m -2.84809,-0.9445 c -13.46376,-4.49765 -21.63055,-7.79425 -26.37132,-13.94681 m -2.13611,-3.41767 c -1.22071,-2.4387 -2.08939,-5.27941 -2.67738,-8.67686 m -0.89769,-9.04408 c -0.0324,-0.73137 -0.0585,-1.4818 -0.0787,-2.25202 -0.13126,-5.02564 0.0507,-9.80461 0.45167,-14.29195 m 0.40353,-3.84413 c 2.67176,-22.14636 10.39,-36.26121 10.39,-36.26121 0,0 4.40822,2.84826 9.97558,7.88006 m 4.97063,4.82231 c 9.42684,9.83606 19.43462,24.65338 17.19434,41.82726 -0.1093,0.83792 -0.22941,1.68119 -0.35979,2.52925 m -0.49274,2.96062 c -0.5879,3.28916 -1.31754,6.63873 -2.15881,10.01625 m -1.46679,5.53007 c -0.90219,3.21435 -1.88961,6.43789 -2.93682,9.64312 m -1.53185,4.5575 c -0.4921,1.42554 -0.99377,2.84479 -1.50272,4.25526 m -2.9642,7.92789 c -2.56308,6.63744 -5.19504,12.95788 -7.6344,18.67905 m -1.22812,2.86917 c -2.94672,6.86051 -5.52567,12.71703 -7.23176,17.02433 -0.34038,0.85935 -0.85668,1.66425 -1.51902,2.42074 m -2.89331,2.47736 c -2.78851,1.88224 -6.50417,3.41911 -10.42476,4.75662 m -3.28531,1.06728 c -18.05091,5.61844 -36.20798,7.96473 12.97172,20.67299 0.6335,0.1637 1.26248,0.32517 1.88698,0.48443 m 8.26248,2.03934 c 62.40955,14.85285 75.54112,4.52609 82.44003,-27.70567 0.80947,-3.78185 1.41744,-7.37234 1.82275,-10.78935 m 0.39855,-4.14837 c 0.25937,-3.5765 0.27671,-6.95511 0.0505,-10.15906 m -0.60077,-5.1704 c -0.15655,-0.95124 -0.33738,-1.8864 -0.54255,-2.80621 m -0.83944,-3.23171 c -1.52905,-5.13346 -3.88019,-9.7788 -7.06268,-14.07848 m -1.88437,-2.39079 c -3.30295,-3.94458 -7.34969,-7.60447 -12.14805,-11.09984 m -7.9142,-5.25465 c -12.58977,-8.27646 -12.5001,-17.96685 -14.97465,-26.33195 m -0.9864,-2.84826 c -0.72558,-1.77837 -1.66395,-3.47601 -2.98122,-5.06307 m -5.25869,-4.40201 c -1.51548,-0.90306 -3.28007,-1.74193 -5.34508,-2.50741 m -3.59851,-1.16937 c -2.20148,-0.62659 -4.67829,-1.1874 -7.4699,-1.67535 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 5.74214,17.24674 2.2585,32.06974 2.87567,42.69428 m 0.33434,3.13864 c 0.80414,4.89684 2.98978,8.68718 8.24863,11.14573 m 3.36957,1.26384 c 0.70641,0.21097 1.45297,0.40569 2.24186,0.58386 m 3.1534,0.5889 c 0.20753,0.0315 0.41746,0.0622 0.62983,0.0919 m 3.02742,0.34692 c 6.23049,0.5696 14.25825,0.48995 24.58435,-0.3057 29.16195,-2.24699 49.37948,-5.18462 61.85644,-11.25291 m 3.4072,-1.85268 c 1.1322,-0.69 2.18348,-1.41573 3.15515,-2.17987 m 2.25988,-1.98775 c 5.41581,-5.34939 7.56927,-12.38682 6.81299,-21.82697 m -0.3527,-3.1889 c -0.59283,-4.25631 -1.70842,-8.96434 -3.31936,-14.17961 m -1.82987,-5.42348 c -0.87827,-2.30363 -1.90198,-4.58687 -3.05545,-6.83813 m -1.47416,-2.73626 c -6.74615,-11.93512 -17.04767,-22.81157 -28.47832,-30.83111 m -4.36985,-2.89181 c -1.09972,-0.68479 -2.20674,-1.34222 -3.31904,-1.97081 m -4.22883,-2.23724 c -7.19667,-3.54859 -14.50522,-5.83307 -21.39135,-6.45744 m -3.13609,-0.16869 c -13.75071,-0.21599 -25.40468,6.72208 -30.43289,24.17094 m -2.955,7.74522 c -1.0463,2.1191 -2.25183,4.14919 -3.58687,6.0963 m -5.75451,7.13951 c -2.46271,2.64965 -5.13606,5.12546 -7.91564,7.44858 m -2.51909,2.04354 c -30.49877,24.04051 -69.68493,31.12715 12.6237,47.62634 m 2.99181,0.59337 c 0.89385,0.17544 1.80125,0.35196 2.72233,0.52958 m 2.99697,0.58235 c 0.61785,0.12189 1.23277,0.24441 1.84475,0.36752 m 2.96082,0.60501 c 12.97187,2.69191 24.59929,5.65033 35.0559,8.69725 m 7.54533,2.27398 c 13.65924,4.25436 25.16628,8.59361 34.97878,12.54856 m 2.85909,1.16048 c 4.12516,1.68555 7.93817,3.2896 11.4767,4.7735 m 2.78338,1.16511 c 29.17502,12.17801 38.81721,14.71602 52.85657,-16.91856 10.45679,-23.56206 -18.06652,-37.26786 -53.74005,-45.23495 m -2.97998,-0.64888 c -5.53405,-1.17487 -11.21585,-2.21716 -16.93023,-3.14177 m -3.07593,-0.48603 c -5.44966,-0.84082 -10.91013,-1.57732 -16.28192,-2.22239 m -5.71707,-0.65675 c -0.95408,-0.10474 -1.90412,-0.20666 -2.84955,-0.30585 m -3.01901,-0.30911 c -9.32434,-0.9315 -18.12778,-1.59812 -25.83311,-2.07452 m -3.14688,-0.18777 c -10.32792,-0.594 -18.35377,-0.83666 -22.50131,-0.93187" + id="path07" + inkscape:original-d="m -209.06092,181.66846 c 0,0 -149.11657,21.14379 -28.03355,93.16093 121.08302,72.01714 58.54708,-22.18006 11.83071,-38.70522 -46.71636,-16.52515 -58.09215,-14.03527 -58.9355,-46.32542 -0.84336,-32.29015 11.2452,-54.39729 11.2452,-54.39729 0,0 36.20245,23.39132 32.14055,54.52963 -4.06191,31.13832 -23.04596,69.67809 -29.508,85.99251 -6.46203,16.31442 -76.32612,13.00293 -5.15068,31.39499 71.17544,18.39207 85.33157,8.72715 92.58949,-25.1819 7.25791,-33.90906 -1.68344,-52.43466 -27.66172,-68.45502 -25.97829,-16.02035 -1.94042,-37.72642 -41.67295,-44.67126 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 12.79881,38.44169 -20.23712,64.84203 48.46507,59.54838 68.70219,-5.29364 87.76108,-14.4205 72.91806,-59.28517 -14.84303,-44.86468 -86.41389,-83.73089 -100.90525,-32.24825 -14.49135,51.48264 -123.29648,56.03548 -3.752,79.00908 119.54447,22.9736 130.68552,69.50381 154.80796,15.14926 24.122437,-54.35455 -159.19308,-56.25764 -159.19308,-56.25764" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -166.01998,156.9679 c -0.60874,16.44264 -1.21748,32.88516 -2.71596,48.03544 m -0.39411,3.76384 c -2.76558,24.96987 -8.22904,46.02143 -20.55632,57.10482 -2.20882,1.98594 -4.638,3.65185 -7.23818,5.0247 m -3.28553,1.54455 c -2.87769,1.19729 -5.92258,2.08177 -9.07697,2.68495 m -2.96656,0.48122 c -7.06061,0.9474 -14.56254,0.58672 -21.89577,-0.74887 m -8.98796,-2.13941 c -1.52186,-0.44795 -3.0243,-0.93447 -4.50126,-1.45627 m -2.83784,-1.05803 c -4.73365,-1.85918 -9.15046,-4.07572 -13.03664,-6.53285 m -2.53725,-1.69174 c -0.71515,-0.50326 -1.40793,-1.01482 -2.0767,-1.53378 -15.4309,-11.97416 -18.08278,-27.88788 -15.14839,-40.69902 m 4.04027,-10.65635 c 0.15045,-0.27184 0.30353,-0.54032 0.4592,-0.80541 m 1.76825,-2.71347 c 2.64668,-3.66483 5.87524,-6.54322 9.60248,-8.61778 m 2.69474,-1.32294 c 5.56088,-2.3866 12.06874,-3.17668 19.2924,-2.32187 4.61182,0.54574 9.51526,1.76185 14.35448,3.75812 m 5.39202,2.57728 c 0.41874,0.22929 0.83593,0.46498 1.25135,0.70715 m 5.06488,3.35743 c 0.79208,0.59414 1.57297,1.21542 2.34071,1.86444 m 2.43163,2.1936 c 5.2228,5.02665 9.67967,11.47866 12.67482,19.57071 5.95719,16.09466 6.13247,38.67622 0.43597,56.80664 m -1.12434,3.31029 c -0.44346,1.21083 -0.91493,2.39721 -1.41444,3.55556 m -1.25337,2.72572 c -0.4921,1.00435 -1.00713,1.98344 -1.54511,2.93461 m -1.5836,2.61473 c -0.72979,1.12503 -1.49579,2.20211 -2.29805,3.22597 -4.48143,5.7193 -10.09408,9.77798 -16.15453,12.35206 m -13.66243,3.32749 c -0.24406,0.0195 -0.48804,0.0371 -0.73191,0.0527 m -4.00255,0.0776 c -7.47742,-0.18717 -14.64392,-2.23347 -20.34764,-5.84225 -9.15354,-5.7915 -14.5392,-15.60732 -16.19607,-26.52109 m -0.366,-3.07616 c -0.54365,-6.26553 0.1011,-12.79437 1.92721,-19.05921 0.93668,-3.21347 2.18417,-6.35741 3.66375,-9.39446 m 1.50632,-2.91296 c 1.51994,-2.7783 3.22142,-5.45205 5.0396,-7.99048 m 5.77228,-7.21509 c 2.41303,-2.71403 4.902,-5.18293 7.35084,-7.35162 m 4.34673,-3.57298 c 1.36464,-1.03441 2.69249,-1.95725 3.96108,-2.75785 m 2.7012,-1.56345 c 2.37028,-1.23456 4.52362,-1.95653 6.53688,-2.10628 m 4.22707,0.61479 c 4.20026,1.6357 7.96824,6.44852 12.20447,15.13734 6.2028,12.72243 13.4097,33.75371 12.44184,51.15116 m -0.54301,5.08739 c -0.2171,1.3356 -0.49337,2.63979 -0.83364,3.9063 m -0.90446,2.86222 c -0.34301,0.93495 -0.72682,1.84428 -1.15368,2.72505 -3.06272,6.31957 -8.34168,11.16928 -14.53794,14.30103 m -6.0821,2.43857 c -2.09646,0.63915 -4.24353,1.09953 -6.40043,1.37334 m -3.85249,0.28897 c -4.36424,0.0993 -8.66917,-0.58626 -12.57557,-2.12138 m -10.59364,-7.69014 c -5.05091,-6.18376 -7.92209,-15.14053 -8.54072,-25.4174 m -0.12141,-3.36504 c -0.0903,-7.18142 0.86797,-14.90258 2.89768,-22.70448 m 0.93623,-3.34957 c 1.33513,-4.46597 3.02119,-8.93688 5.06248,-13.32709 0.19947,-0.429 0.40233,-0.85722 0.60845,-1.28455 m 1.47541,-2.93853 c 1.73534,-3.3258 3.65395,-6.57743 5.69174,-9.69204 m 2.26704,-3.3401 c 1.42246,-2.02121 2.88826,-3.97019 4.37793,-5.82783 m 1.92818,-2.33807 c 9.69899,-11.43227 20.04116,-18.73977 25.83246,-16.8285 m 4.14751,5.42097 c 0.24238,1.00639 0.40982,2.14324 0.50782,3.39623 m 0.10394,3.31711 c -0.0467,5.37285 -1.0047,12.21005 -2.5857,19.75778 m -1.01575,4.58508 c -2.8966,12.43176 -7.22969,26.28703 -11.83209,38.51458 m -1.08664,2.84382 c -1.25388,3.23203 -2.52075,6.32759 -3.77755,9.22635 m -1.2269,2.77405 c -0.16226,0.3594 -0.32421,0.71514 -0.48582,1.06708 m -1.47552,3.12707 c -0.10156,0.20916 -0.20291,0.4166 -0.30405,0.62229 -2.04011,4.14918 -3.99117,7.58699 -5.84514,10.37117 m -2.08707,2.91469 c -1.22505,1.57881 -2.40255,2.85796 -3.52988,3.85633 m -3.53387,2.30024 c -1.29585,0.51591 -2.50498,0.60696 -3.62188,0.31259 m -5.86407,-6.83579 c -0.40608,-1.03204 -0.77668,-2.16661 -1.11073,-3.39586 -1.54918,-5.70078 -2.31183,-13.43793 -1.6998,-22.0585 m 0.55455,-5.40134 c 0.57884,-4.30895 1.50548,-8.76844 2.84592,-13.24911 m 0.97241,-3.03796 c 2.21419,-6.48555 5.32535,-12.95429 9.5332,-19.01476 m 2.11158,-2.88508 c 1.35465,-1.75774 2.80493,-3.47503 4.33653,-5.14712 m 2.15895,-2.27336 c 0.0293,-0.0298 0.0587,-0.0596 0.0881,-0.0894 m 2.41791,-2.36308 c 0.53489,-0.50438 1.07666,-1.00369 1.62483,-1.49777 m 2.27423,-1.98922 c 7.23606,-6.14418 15.42029,-11.39556 23.57425,-15.42947 m 2.8276,-1.35082 c 7.32412,-3.37473 14.5319,-5.73188 20.90899,-6.83441 m 3.74871,-0.51181 c 0.77215,-0.0754 1.52822,-0.12932 2.26671,-0.16127 19.33578,-0.83651 26.61635,13.39094 33.89645,27.61748" + id="path06" + inkscape:path-effect="#path-effect69" + inkscape:original-d="m -166.01998,156.9679 c -1.67689,45.322 -3.35477,90.64301 -5.03366,135.96301 -38.94347,-8.79705 -77.88639,-17.59474 -116.83109,-26.39361 0.57157,-20.97977 1.14211,-41.95969 1.71166,-62.94103 12.43089,-6.08283 24.86028,-12.16641 37.28892,-18.25112 19.36116,9.84585 38.72054,19.6903 58.07931,29.53394 -2.84705,34.76267 -5.69498,69.52295 -8.54397,104.28292 -25.5325,1.46084 -51.06497,2.92062 -76.59895,4.37944 -4.81805,-20.66437 -9.63691,-41.3289 -14.45687,-61.99485 15.54094,-16.11242 31.08027,-32.22519 46.6189,-48.33928 6.38752,2.44843 12.77379,4.89577 19.15918,7.34216 9.80925,30.76761 19.6171,61.53299 29.42414,92.29799 -27.60283,5.95511 -55.20556,11.90898 -82.80985,17.86197 -1.31165,-31.02495 -2.62425,-62.04965 -3.93788,-93.07598 27.15718,-24.55455 54.31228,-49.10912 81.46692,-73.66517 -15.80316,51.9684 -31.60669,103.93373 -47.41154,155.8991 -9.14471,-1.22491 -18.29006,-2.45077 -27.43659,-3.67766 1.20135,-28.01543 2.40166,-56.03074 3.60099,-84.0476 31.39213,-15.90178 62.782,-31.80392 94.17149,-47.70738 7.28186,14.22903 14.56243,28.45648 21.84214,42.68322" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -203.89281,256.84604 c -1.49205,-1.32271 -3.00435,-2.62258 -4.53619,-3.899 -2.53533,-2.11259 -5.12362,-4.16051 -7.73787,-6.17646 m -21.45611,-16.47247 c -2.27545,-1.85736 -4.51297,-3.76021 -6.69348,-5.73165 -0.93737,-0.84749 -1.86532,-1.71071 -2.78108,-2.58965 m -2.38546,-2.35486 c -5.69834,-5.78996 -10.80084,-12.2205 -14.58887,-19.28893 m -1.35677,-2.67903 c -1.13008,-2.36864 -2.10936,-4.80576 -2.91253,-7.31126 M -269.4258,186.47 c -1.2718,-5.30873 -1.69791,-10.81183 -1.30344,-16.25666 m 0.31375,-3.09706 c 0.5894,-4.5224 1.74814,-8.9706 3.46157,-13.19733 4.22497,-10.42221 11.79233,-19.44945 21.28342,-25.48202 9.4911,-6.03257 20.85687,-9.05056 32.09319,-8.58363 11.23631,0.46693 22.29536,4.40762 31.33252,11.10109 9.03715,6.69347 16.02184,16.1061 19.86842,26.67381 3.84657,10.56772 4.54894,22.24895 2.05771,33.21556 -1.29046,5.6807 -3.43344,11.16022 -6.30329,16.22945 m -4.64871,7.02903 c -1.58655,2.07134 -3.30676,4.04012 -5.14933,5.88755 -6.17119,6.18747 -13.69677,11.0022 -21.87385,14.08426 m -2.84577,0.99399 c -1.42976,0.46047 -2.87639,0.86852 -4.33631,1.22233 -2.03143,0.49231 -4.08603,0.87885 -6.15445,1.16191 m -4.21653,0.4333 c -1.28653,0.089 -2.57591,0.13905 -3.86593,0.15078 m -3.31393,-0.0539 c -0.16388,-0.007 -0.32773,-0.0142 -0.49157,-0.0222 m -3.03549,-0.21869 c -6.36048,-0.60494 -12.64098,-2.12531 -18.5739,-4.49549 -1.7306,-0.69137 -3.43119,-1.45367 -5.0982,-2.28271 m -2.68073,-1.40635 c -1.80574,-0.99747 -3.56787,-2.07407 -5.28151,-3.22409 m -7.43859,-5.71304 c -3.86888,-3.38074 -7.39229,-7.16185 -10.49541,-11.25518 m -1.96663,-2.72062 c -5.17018,-7.51603 -8.93516,-16.11858 -9.65009,-25.1876 -0.0628,-0.79709 -0.10174,-1.59657 -0.11605,-2.3966 m 0.16394,-4.29514 c 0.26077,-2.73068 0.8252,-5.42916 1.72053,-8.0214 0.73483,-2.12753 1.69572,-4.18157 2.86815,-6.10355 m 4.44432,-5.61681 c 0.23443,-0.22982 0.47305,-0.45549 0.71579,-0.67684 3.45852,-3.1537 7.70971,-5.37481 12.23395,-6.60094 m 3.93061,-0.80556 c 0.34081,-0.048 0.6823,-0.0905 1.02425,-0.12748 6.32412,-0.68443 12.78853,0.4623 18.65043,2.93234 11.7238,4.94008 20.72325,14.88942 27.19405,25.843 4.63578,7.84732 8.19216,16.45354 9.66821,25.4194 m 0.41517,3.0157 c 0.0904,0.81803 0.16285,1.63864 0.21661,2.46153 0.23426,3.58549 0.0916,7.21701 -0.44611,10.78153 m -0.90694,4.52335 c -1.42505,5.65544 -3.90977,11.00753 -7.53141,15.57387 -1.36453,1.72047 -2.86898,3.31073 -4.46674,4.80883 m -2.38348,2.11754 c -1.97075,1.6658 -4.03913,3.22984 -6.12957,4.75389 m -3.97056,2.85807 c -4.88296,3.50877 -9.73698,7.11425 -13.66651,11.65007 -0.95585,1.10332 -1.84768,2.25938 -2.67355,3.46033 m -1.60677,2.53393 c -2.3355,4.00351 -3.99021,8.40651 -4.90116,12.95655 m -0.48599,2.96979 c -0.20292,1.59257 -0.31513,3.19622 -0.33403,4.80047 m 0.0742,2.99961 c 0.1325,2.15338 0.43678,4.29605 0.91918,6.40255 1.00156,4.37352 2.76227,8.55327 5.13178,12.35879 m 2.42225,3.48764 c 4.25755,5.51992 9.87135,9.99799 16.27678,12.7565 11.82761,5.09358 26.06042,4.19767 37.15595,-2.33887 11.09553,-6.53653 18.77809,-18.55125 20.05597,-31.36547" + id="path05" + inkscape:path-effect="#path-effect71" + inkscape:original-d="m -203.89281,256.84604 c -1.51106,-1.29866 -3.02313,-2.59833 -4.53619,-3.899 -1.51306,-1.30067 -40.57402,-43.95222 -60.86254,-65.92984 -20.28851,-21.97761 42.54475,32.84978 63.81562,49.27317 21.27087,16.42339 -47.41514,-18.3744 -71.12421,-27.5631 -23.70906,-9.1887 -0.89371,-36.25308 -1.34207,-54.38112 -0.44835,-18.12804 42.02319,14.16191 63.03329,21.24136 21.01009,7.07946 0.94469,41.18459 1.41553,61.77538 0.47085,20.5908 -20.41024,17.45993 -30.61686,26.1884 -10.20662,8.72847 48.02405,20.68221 72.03457,31.02182" /> + </g> + <g + id="g04" + transform="translate(106.99823,38.021844)" + inkscape:path-effect="#path-effect75"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -209.06092,181.66846 c 0,0 -0.28897,0.041 -0.83115,0.12546 m -3.08457,0.51418 c -0.39223,0.069 -0.81053,0.14377 -1.25333,0.22448 m -4.69415,0.9077 c -2.00014,0.40824 -4.23637,0.89157 -6.64336,1.45462 m -2.92991,0.70524 c -3.34632,0.82845 -6.94585,1.79937 -10.64776,2.92346 m -3.11972,0.97704 c -1.82379,0.5891 -3.66186,1.21518 -5.49681,1.87948 m -8.07865,3.20823 c -2.61714,1.14236 -5.1724,2.37055 -7.61119,3.68846 m -2.61542,1.47569 c -2.85796,1.68521 -5.51372,3.50556 -7.86868,5.46804 m -10.20572,15.48831 c -0.13225,0.69488 -0.22822,1.40071 -0.28612,2.11762 m 1.21867,9.05631 c 0.46728,1.38458 1.06774,2.80329 1.81049,4.25678 m 1.72717,3.03227 c 1.51213,2.41083 3.4072,4.91248 5.72292,7.50762 m 3.86573,4.03357 c 0.96514,0.94322 1.98431,1.89809 3.05915,2.86474 m 2.38823,2.08877 c 0.31389,0.26725 0.63198,0.53538 0.9543,0.80438 m 2.41917,1.97193 c 3.63644,2.8971 7.75699,5.89344 12.40047,8.99177 m 2.5065,1.64926 c 1.20318,0.78093 2.43926,1.56823 3.70882,2.36193 m 8.09013,4.88509 c 6.7708,3.98144 12.94672,7.42585 18.56498,10.37873 m 6.62277,3.38284 c 1.15724,0.57282 2.28729,1.12193 3.39054,1.64783 m 2.71655,1.27314 c 5.14327,2.36783 9.66267,4.19811 13.6061,5.54943 m 2.88063,0.93384 c 4.90233,1.49261 8.79045,2.15035 11.77992,2.11454 m 3.22917,-0.3834 c 8.31877,-2.12407 5.23121,-12.76518 -3.59548,-24.9931 m -1.79968,-2.41213 c -0.74409,-0.96641 -1.52076,-1.93971 -2.32733,-2.91661 m -2.70808,-3.16634 c -1.11806,-1.26359 -2.28096,-2.52732 -3.48297,-3.78417 m -2.10272,-2.15144 c -2.54539,-2.54897 -5.24057,-5.05243 -8.03657,-7.45052 m -3.06958,-2.55667 c -3.22664,-2.60845 -6.5589,-5.05552 -9.92667,-7.25546 m -17.27685,-8.70917 c -1.30667,-0.46008 -2.58531,-0.90526 -3.83647,-1.33677 m -8.49613,-2.87209 c -2.84234,-0.94412 -5.51726,-1.81909 -8.03379,-2.64452 m -5.58073,-1.84266 c -0.0782,-0.0261 -0.1562,-0.0522 -0.23403,-0.0782 m -3.37253,-1.14392 c -0.49179,-0.16959 -0.97565,-0.3379 -1.45169,-0.50518 m -9.1698,-3.57245 c -5.45704,-2.44784 -9.3815,-5.06282 -12.14327,-8.64703 m -2.50242,-4.1847 c -1.03048,-2.26315 -1.78368,-4.86255 -2.31107,-7.90983 m -0.89769,-9.04408 c -0.0324,-0.73137 -0.0585,-1.4818 -0.0787,-2.25202 -0.13126,-5.02564 0.0507,-9.80461 0.45167,-14.29195 m 0.40353,-3.84413 c 0.47662,-3.95076 1.11385,-7.64593 1.8392,-11.05096 m 1.63846,-6.75077 c 3.1739,-11.62276 6.91234,-18.45948 6.91234,-18.45948 0,0 4.40822,2.84826 9.97558,7.88006 m 4.97063,4.82231 c 5.40298,5.63753 10.99681,12.91141 14.36604,21.32745 m 1.26569,3.56198 c 0.0803,0.25885 0.15838,0.51864 0.23412,0.77936 m 0.76686,3.0457 c 0.72218,3.39101 1.03372,6.92369 0.80635,10.57179 m -0.3396,3.24995 c -0.0829,0.60415 -0.17124,1.21098 -0.26491,1.82028 m -0.49274,2.96062 c -0.5879,3.28916 -1.31754,6.63873 -2.15881,10.01625 m -1.46679,5.53007 c -0.7714,2.74837 -1.60511,5.50346 -2.48523,8.24808 m -1.98344,5.95254 c -0.11827,0.3426 -0.23708,0.68484 -0.35642,1.02668 m -5.21565,13.98905 c -2.20816,5.60367 -4.43939,10.945 -6.52925,15.84647 m -1.22812,2.86917 c -0.3713,0.86447 -0.73677,1.71299 -1.09538,2.54449 m -1.20862,2.79966 c -1.69189,3.91795 -3.18715,7.38713 -4.36292,10.2749 m -4.97717,6.30338 c -0.12091,0.0816 -0.24356,0.16258 -0.3679,0.2429 m -2.94246,1.64867 c -0.80104,0.3945 -1.64013,0.77232 -2.5075,1.13544 m -2.88738,1.12415 c -0.56717,0.20647 -1.14112,0.40814 -1.71952,0.60546 m -3.28531,1.06728 c -18.05091,5.61844 -36.20798,7.96473 12.97172,20.67299 0.6335,0.1637 1.26248,0.32517 1.88698,0.48443 m 8.26248,2.03934 c 1.97092,0.46906 3.89269,0.91301 5.76668,1.33194 m 4.01915,0.87563 c 2.27117,0.48134 4.46825,0.92321 6.59394,1.32581 m 4.17298,0.75567 c 3.70555,0.63871 7.17955,1.14722 10.43838,1.52675 m 8.17367,0.70633 c 17.36187,0.91182 27.48341,-2.79057 33.91849,-10.83681 m 1.7998,-2.50716 c 0.53983,-0.83669 1.05018,-1.71154 1.53399,-2.62431 m 1.31932,-2.72585 c 1.95672,-4.42417 3.43547,-9.60884 4.70363,-15.53367 0.0775,-0.36203 0.15313,-0.72231 0.22693,-1.08086 m 0.7248,-3.80366 c 0.35372,-2.02473 0.64412,-3.99197 0.87102,-5.90483 m 0.39855,-4.14837 c 0.25937,-3.5765 0.27671,-6.95511 0.0505,-10.15906 m -0.60077,-5.1704 c -0.15655,-0.95124 -0.33738,-1.8864 -0.54255,-2.80621 m -0.83944,-3.23171 c -1.52905,-5.13346 -3.88019,-9.7788 -7.06268,-14.07848 m -1.88437,-2.39079 c -3.30295,-3.94458 -7.34969,-7.60447 -12.14805,-11.09984 m -7.9142,-5.25465 c -2.07462,-1.36385 -3.80494,-2.7661 -5.25917,-4.19448 m -2.11021,-2.31658 c -0.45253,-0.55815 -0.86971,-1.11919 -1.2554,-1.68242 m -2.87522,-5.48509 c -1.69038,-4.32118 -2.28737,-8.63982 -3.47465,-12.65338 m -0.9864,-2.84826 c -0.72558,-1.77837 -1.66395,-3.47601 -2.98122,-5.06307 m -5.25869,-4.40201 c -1.51548,-0.90306 -3.28007,-1.74193 -5.34508,-2.50741 m -3.59851,-1.16937 c -2.20148,-0.62659 -4.67829,-1.1874 -7.4699,-1.67535 -6.22312,-1.08774 -11.84295,-1.23947 -16.84662,-0.57401 m -3.06853,0.5258 c -3.63873,0.76939 -6.91346,2.00478 -9.81839,3.65256 m -3.23876,2.11972 c -0.37271,0.2797 -0.73787,0.56735 -1.09544,0.8628 m -3.10976,2.97144 c -9.692,10.6903 -11.94565,28.51424 -6.24956,48.74542 m 0.93153,3.10701 c 0.13712,0.43127 0.27779,0.8635 0.422,1.29665 5.74214,17.24674 2.2585,32.06974 2.87567,42.69428 m 0.33434,3.13864 c 0.46709,2.84438 1.40031,5.31544 3.13119,7.369 m 2.56705,2.32134 c 0.75718,0.52739 1.60402,1.01295 2.55039,1.45539 m 3.36957,1.26384 c 0.70641,0.21097 1.45297,0.40569 2.24186,0.58386 m 3.1534,0.5889 c 0.20753,0.0315 0.41746,0.0622 0.62983,0.0919 m 3.02742,0.34692 c 4.10741,0.37551 8.99591,0.46885 14.80908,0.26089 m 2.99771,-0.12984 c 2.14126,-0.10812 4.39841,-0.25343 6.77756,-0.43675 0.19734,-0.0152 0.39426,-0.0304 0.59078,-0.0457 m 3.44638,-0.27468 c 2.18447,-0.17867 4.31609,-0.36214 6.3954,-0.55151 m 7.83856,-0.77022 c 3.97016,-0.42185 7.72524,-0.87438 11.26994,-1.36711 m 7.23099,-1.11327 c 1.84586,-0.31514 3.62486,-0.64545 5.33788,-0.99267 m 3.41755,-0.73559 c 6.46087,-1.47716 11.88574,-3.24114 16.32896,-5.40215 m 3.4072,-1.85268 c 1.1322,-0.69 2.18348,-1.41573 3.15515,-2.17987 m 2.25988,-1.98775 c 5.41581,-5.34939 7.56927,-12.38682 6.81299,-21.82697 m -0.3527,-3.1889 c -0.59283,-4.25631 -1.70842,-8.96434 -3.31936,-14.17961 m -1.82987,-5.42348 c -0.87827,-2.30363 -1.90198,-4.58687 -3.05545,-6.83813 m -1.47416,-2.73626 c -3.74292,-6.62187 -8.58027,-12.91785 -14.09769,-18.58083 m -2.68802,-2.65799 c -3.68038,-3.50661 -7.61464,-6.73126 -11.69261,-9.59229 m -4.36985,-2.89181 c -1.09972,-0.68479 -2.20674,-1.34222 -3.31904,-1.97081 m -4.22883,-2.23724 c -3.47326,-1.71262 -6.97258,-3.1308 -10.4379,-4.21003 m -6.35886,-1.59961 c -1.54815,-0.29328 -3.08156,-0.51061 -4.59459,-0.6478 m -3.13609,-0.16869 c -9.77418,-0.15353 -18.48896,3.30756 -24.51781,11.58882 m -2.16362,3.39072 c -1.48889,2.66552 -2.75126,5.72052 -3.75146,9.1914 m -12.29638,20.98103 c -2.46271,2.64965 -5.13606,5.12546 -7.91564,7.44858 m -2.51909,2.04354 c -29.32046,23.11171 -66.66999,30.55426 3.62029,45.75464 m 3.08448,0.65748 c 1.89913,0.39918 3.87144,0.80379 5.91893,1.21422 m 2.99181,0.59337 c 0.89385,0.17544 1.80125,0.35196 2.72233,0.52958 m 2.99697,0.58235 c 0.0371,0.007 0.0741,0.0146 0.11121,0.022 m 4.69436,0.95057 c 5.31888,1.10377 10.41173,2.25235 15.2905,3.43346 m 2.92245,0.71765 c 3.07102,0.76485 6.05515,1.54204 8.95553,2.32835 m 2.92479,0.80376 c 1.68294,0.46876 3.33694,0.94032 4.96263,1.41403 m 7.54533,2.27398 c 4.95063,1.54194 9.61854,3.09504 14.02553,4.63694 m 2.82991,1.00112 c 0.61886,0.22133 1.2324,0.44232 1.84068,0.66291 m 2.86998,1.05192 c 4.79796,1.77706 9.25726,3.52082 13.41268,5.19567 m 2.85909,1.16048 c 4.12516,1.68555 7.93817,3.2896 11.4767,4.7735 m 2.78338,1.16511 c 29.17502,12.17801 38.81721,14.71602 52.85657,-16.91856 9.50238,-21.41149 -13.18446,-34.68382 -44.17491,-42.90686 m -3.10725,-0.80094 c -2.12103,-0.53114 -4.27609,-1.03988 -6.45789,-1.52715 m -2.97998,-0.64888 c -0.3421,-0.0726 -0.68476,-0.14475 -1.02797,-0.21637 m -3.27145,-0.66449 c -4.16084,-0.82262 -8.38684,-1.57422 -12.63081,-2.26091 m -3.07593,-0.48603 c -2.88286,-0.44479 -5.76875,-0.86039 -8.64293,-1.24871 m -7.35163,-0.9391 c -0.0958,-0.0115 -0.1916,-0.0231 -0.28736,-0.0346 m -11.58563,-1.27171 c -9.32434,-0.9315 -18.12778,-1.59812 -25.83311,-2.07452 m -5.52449,-0.32065 c -1.82799,-0.0992 -3.57428,-0.18707 -5.2291,-0.26491 m -4.08968,-0.18058 c -4.6987,-0.19373 -8.40246,-0.29835 -10.80492,-0.3535" + id="path03" + inkscape:original-d="m -209.06092,181.66846 c 0,0 -149.11657,21.14379 -28.03355,93.16093 121.08302,72.01714 58.54708,-22.18006 11.83071,-38.70522 -46.71636,-16.52515 -58.09215,-14.03527 -58.9355,-46.32542 -0.84336,-32.29015 11.2452,-54.39729 11.2452,-54.39729 0,0 36.20245,23.39132 32.14055,54.52963 -4.06191,31.13832 -23.04596,69.67809 -29.508,85.99251 -6.46203,16.31442 -76.32612,13.00293 -5.15068,31.39499 71.17544,18.39207 85.33157,8.72715 92.58949,-25.1819 7.25791,-33.90906 -1.68344,-52.43466 -27.66172,-68.45502 -25.97829,-16.02035 -1.94042,-37.72642 -41.67295,-44.67126 -39.73254,-6.94484 -54.87233,24.2657 -42.07353,62.70739 12.79881,38.44169 -20.23712,64.84203 48.46507,59.54838 68.70219,-5.29364 87.76108,-14.4205 72.91806,-59.28517 -14.84303,-44.86468 -86.41389,-83.73089 -100.90525,-32.24825 -14.49135,51.48264 -123.29648,56.03548 -3.752,79.00908 119.54447,22.9736 130.68552,69.50381 154.80796,15.14926 24.122437,-54.35455 -159.19308,-56.25764 -159.19308,-56.25764" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -166.01998,156.9679 c -0.60874,16.44264 -1.21748,32.88516 -2.71596,48.03544 m -1.13433,9.84782 c -0.66148,4.96085 -1.44988,9.7374 -2.40069,14.27806 m -1.29688,5.63323 c -1.0931,4.32576 -2.36315,8.39452 -3.84553,12.15493 m -1.17543,2.81436 c -0.33729,0.76226 -0.68451,1.51011 -1.04199,2.24306 m -2.48488,4.57145 c -1.12397,1.85327 -2.3331,3.58284 -3.63466,5.17819 m -1.9895,2.25647 c -0.62908,0.65906 -1.27771,1.28975 -1.94654,1.89109 -2.20882,1.98594 -4.638,3.65185 -7.23818,5.0247 m -3.28553,1.54455 c -2.87769,1.19729 -5.92258,2.08177 -9.07697,2.68495 m -2.96656,0.48122 c -7.06061,0.9474 -14.56254,0.58672 -21.89577,-0.74887 m -8.98796,-2.13941 c -1.52186,-0.44795 -3.0243,-0.93447 -4.50126,-1.45627 m -2.83784,-1.05803 c -4.73365,-1.85918 -9.15046,-4.07572 -13.03664,-6.53285 m -2.53725,-1.69174 c -0.22306,-0.15697 -0.44394,-0.31474 -0.66259,-0.4733 m -2.52627,-1.94831 c -0.98947,-0.81271 -1.92267,-1.64223 -2.80176,-2.48648 m -2.4147,-2.50464 c -0.1083,-0.12158 -0.21558,-0.2434 -0.32185,-0.36546 m -2.05531,-2.5559 c -4.6829,-6.32335 -6.89354,-13.16228 -7.38542,-19.77908 m 0.37166,-9.13463 c 0.1557,-1.01099 0.34715,-2.00704 0.57115,-2.985 m 4.04027,-10.65635 c 0.15045,-0.27184 0.30353,-0.54032 0.4592,-0.80541 m 6.44839,-7.86995 c 1.52455,-1.3306 3.16822,-2.48497 4.92234,-3.4613 m 2.69474,-1.32294 c 2.49148,-1.06928 5.17304,-1.81808 8.02391,-2.24206 m 8.55456,-0.3258 c 0.89281,0.0556 1.79761,0.13756 2.71393,0.24599 0.83502,0.0988 1.6796,0.2196 2.53163,0.36302 m 2.9446,0.58075 c 2.92906,0.66252 5.91569,1.59224 8.87825,2.81435 m 5.39202,2.57728 c 0.36808,0.20155 0.73497,0.40804 1.1005,0.61954 m 5.21573,3.44504 c 0.79208,0.59414 1.57297,1.21542 2.34071,1.86444 m 2.43163,2.1936 c 1.22015,1.17432 2.39849,2.42644 3.52616,3.75909 m 6.699,10.16561 c 0.8972,1.786 1.71714,3.66696 2.44966,5.64601 0.68484,1.85024 1.29326,3.7862 1.82514,5.79128 m 0.71204,2.92902 c 0.50356,2.27088 0.91469,4.61552 1.23321,7.01191 m 0.35709,3.09364 c 0.15819,1.60952 0.27593,3.23752 0.35318,4.87766 m 0.10789,3.994 c 0.0354,4.96072 -0.29321,9.98435 -0.98716,14.90015 m -0.57433,3.5827 c -0.65651,3.65098 -1.52001,7.21731 -2.59109,10.62628 m -1.12434,3.31029 c -0.44346,1.21083 -0.91493,2.39721 -1.41444,3.55556 m -1.25337,2.72572 c -0.4921,1.00435 -1.00713,1.98344 -1.54511,2.93461 m -1.5836,2.61473 c -0.72979,1.12503 -1.49579,2.20211 -2.29805,3.22597 -4.48143,5.7193 -10.09408,9.77798 -16.15453,12.35206 m -13.66243,3.32749 c -0.24406,0.0195 -0.48804,0.0371 -0.73191,0.0527 m -4.00255,0.0776 c -4.11999,-0.10313 -8.14559,-0.77068 -11.88411,-1.95301 m -8.24604,-3.75283 c -0.0727,-0.0452 -0.14523,-0.0907 -0.21749,-0.13641 -0.86715,-0.54865 -1.70049,-1.13342 -2.50004,-1.75182 m -4.49866,-4.21358 c -3.82715,-4.31973 -6.52394,-9.59566 -8.09683,-15.34478 m -0.80813,-3.49825 c -0.10779,-0.56757 -0.20526,-1.13859 -0.29241,-1.71266 m -0.366,-3.07616 c -0.10173,-1.17246 -0.16185,-2.35414 -0.1804,-3.54158 m 0.0433,-3.04984 c 0.18273,-4.1706 0.8715,-8.37552 2.06434,-12.46779 0.93668,-3.21347 2.18417,-6.35741 3.66375,-9.39446 m 1.50632,-2.91296 c 0.43411,-0.79351 0.88303,-1.57849 1.34525,-2.35423 m 1.64414,-2.63702 c 0.66351,-1.01874 1.34816,-2.01907 2.05021,-2.99923 m 5.77228,-7.21509 c 2.41303,-2.71403 4.902,-5.18293 7.35084,-7.35162 m 4.34673,-3.57298 c 0.51027,-0.38679 1.0154,-0.75799 1.51422,-1.11302 m 5.14806,-3.20828 c 2.37028,-1.23456 4.52362,-1.95653 6.53688,-2.10628 m 4.22707,0.61479 c 3.51875,1.3703 6.73412,4.97036 10.17557,11.21109 m 2.14786,4.17102 c 0.0927,0.19134 0.18562,0.38451 0.27872,0.57948 m 1.84953,4.06345 c 0.073,0.16816 0.14603,0.33724 0.21901,0.50722 m 2.98749,7.55517 c 2.92563,8.06 5.45482,17.26458 6.52774,26.2348 m 0.30311,2.99001 c 0.25239,3.05647 0.31912,6.06716 0.15728,8.97626 m -0.54301,5.08739 c -0.2171,1.3356 -0.49337,2.63979 -0.83364,3.9063 m -0.90446,2.86222 c -0.34301,0.93495 -0.72682,1.84428 -1.15368,2.72505 -3.06272,6.31957 -8.34168,11.16928 -14.53794,14.30103 m -11.97764,3.74438 c -0.16823,0.0236 -0.33653,0.0461 -0.50489,0.0675 m -3.85249,0.28897 c -4.36424,0.0993 -8.66917,-0.58626 -12.57557,-2.12138 m -12.27611,-9.97104 c -2.64994,-3.97625 -4.55439,-8.83931 -5.69889,-14.30029 m -0.56708,-3.15642 c -0.27768,-1.83948 -0.47527,-3.73603 -0.59228,-5.67979 m -0.10286,-6.21352 c 0.16058,-6.35687 1.11526,-13.07595 2.87913,-19.856 m 0.93623,-3.34957 c 0.30605,-1.02373 0.63054,-2.04772 0.97353,-3.07094 m 1.11334,-3.14374 c 0.4842,-1.29714 0.99836,-2.59131 1.54258,-3.88041 m 3.98332,-8.33898 c 1.61048,-3.01811 3.36841,-5.97001 5.22531,-8.80814 m 2.26704,-3.3401 c 1.42246,-2.02121 2.88826,-3.97019 4.37793,-5.82783 m 1.92818,-2.33807 c 1.56959,-1.85008 3.15601,-3.59214 4.73727,-5.20458 m 4.14965,-3.94291 c 4.28431,-3.76741 8.38227,-6.40678 11.83358,-7.46666 m 9.25947,5.20662 c 0.24238,1.00639 0.40982,2.14324 0.50782,3.39623 m 0.10394,3.31711 c -0.0467,5.37285 -1.0047,12.21005 -2.5857,19.75778 m -2.86488,11.99519 c -0.49456,1.8654 -1.01451,3.74821 -1.5563,5.63913 m -1.38132,4.68411 c -2.078,6.85485 -4.4027,13.71578 -6.80673,20.14519 m -1.32525,3.47986 c -1.25388,3.23203 -2.52075,6.32759 -3.77755,9.22635 m -1.2269,2.77405 c -0.16226,0.3594 -0.32421,0.71514 -0.48582,1.06708 m -1.47552,3.12707 c -0.10156,0.20916 -0.20291,0.4166 -0.30405,0.62229 -2.04011,4.14918 -3.99117,7.58699 -5.84514,10.37117 m -2.08707,2.91469 c -1.22505,1.57881 -2.40255,2.85796 -3.52988,3.85633 m -3.53387,2.30024 c -0.64785,0.25793 -1.27402,0.40966 -1.87784,0.46013 m -7.60811,-6.98333 c -0.40608,-1.03204 -0.77668,-2.16661 -1.11073,-3.39586 -0.76914,-2.83033 -1.3444,-6.16261 -1.65382,-9.85574 m -0.18996,-3.0411 c -0.11253,-2.69419 -0.0873,-5.54447 0.0998,-8.50344 m 0.59873,-6.05956 c 0.57884,-4.30895 1.50548,-8.76844 2.84592,-13.24911 m 0.97241,-3.03796 c 0.33434,-0.97932 0.68914,-1.95826 1.06507,-2.93547 m 1.19748,-2.93798 c 1.93541,-4.49047 4.33639,-8.91516 7.27065,-13.14131 m 2.11158,-2.88508 c 0.072,-0.0934 0.14423,-0.18668 0.21674,-0.27985 m 6.27874,-7.14063 c 0.0293,-0.0298 0.0587,-0.0596 0.0881,-0.0894 m 2.41791,-2.36308 c 0.53489,-0.50438 1.07666,-1.00369 1.62483,-1.49777 m 2.27423,-1.98922 c 1.40905,-1.19644 2.85406,-2.35902 4.3278,-3.48535 m 3.36103,-2.47184 c 4.19895,-2.97168 8.57749,-5.65022 12.98113,-7.98434 m 7.99909,-3.8526 c 2.63883,-1.14412 5.25277,-2.15179 7.80795,-3.01178 m 2.90148,-0.92051 c 2.74502,-0.8168 5.40398,-1.45115 7.93236,-1.88828 m 3.74871,-0.51181 c 0.77215,-0.0754 1.52822,-0.12932 2.26671,-0.16127 8.36721,-0.36198 14.477,2.09686 19.30619,6.15581 m 3.93833,3.94769 c 4.23775,4.9796 7.44489,11.24688 10.65193,17.51398" + id="path02" + inkscape:path-effect="#path-effect48" + inkscape:original-d="m -166.01998,156.9679 c -1.67689,45.322 -3.35477,90.64301 -5.03366,135.96301 -38.94347,-8.79705 -77.88639,-17.59474 -116.83109,-26.39361 0.57157,-20.97977 1.14211,-41.95969 1.71166,-62.94103 12.43089,-6.08283 24.86028,-12.16641 37.28892,-18.25112 19.36116,9.84585 38.72054,19.6903 58.07931,29.53394 -2.84705,34.76267 -5.69498,69.52295 -8.54397,104.28292 -25.5325,1.46084 -51.06497,2.92062 -76.59895,4.37944 -4.81805,-20.66437 -9.63691,-41.3289 -14.45687,-61.99485 15.54094,-16.11242 31.08027,-32.22519 46.6189,-48.33928 6.38752,2.44843 12.77379,4.89577 19.15918,7.34216 9.80925,30.76761 19.6171,61.53299 29.42414,92.29799 -27.60283,5.95511 -55.20556,11.90898 -82.80985,17.86197 -1.31165,-31.02495 -2.62425,-62.04965 -3.93788,-93.07598 27.15718,-24.55455 54.31228,-49.10912 81.46692,-73.66517 -15.80316,51.9684 -31.60669,103.93373 -47.41154,155.8991 -9.14471,-1.22491 -18.29006,-2.45077 -27.43659,-3.67766 1.20135,-28.01543 2.40166,-56.03074 3.60099,-84.0476 31.39213,-15.90178 62.782,-31.80392 94.17149,-47.70738 7.28186,14.22903 14.56243,28.45648 21.84214,42.68322" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -203.89281,256.84604 c -1.49205,-1.32271 -3.00435,-2.62258 -4.53619,-3.899 -2.53533,-2.11259 -5.12362,-4.16051 -7.73787,-6.17646 m -21.45611,-16.47247 c -1.80483,-1.47321 -3.5858,-2.97505 -5.33338,-4.51702 m -2.24502,-2.02203 c -0.30926,-0.28478 -0.6174,-0.5713 -0.92429,-0.85955 m -3.35733,-3.27756 c -0.61644,-0.62635 -1.2259,-1.26019 -1.82748,-1.90153 m -2.04102,-2.24033 c -4.13119,-4.67243 -7.81295,-9.72186 -10.72037,-15.14707 m -1.35677,-2.67903 c -0.005,-0.0113 -0.0108,-0.0226 -0.0161,-0.0339 m -1.2242,-2.741 c -0.61985,-1.48636 -1.17919,-2.9985 -1.67219,-4.5364 M -269.4258,186.47 c -1.2718,-5.30873 -1.69791,-10.81183 -1.30344,-16.25666 m 0.31375,-3.09706 c 0.5894,-4.5224 1.74814,-8.9706 3.46157,-13.19733 0.681,-1.67991 1.44885,-3.32358 2.29759,-4.92431 m 3.65503,-5.93681 c 4.10333,-5.80043 9.33294,-10.80864 15.3308,-14.6209 9.4911,-6.03257 20.85687,-9.05056 32.09319,-8.58363 11.23631,0.46693 22.29536,4.40762 31.33252,11.10109 9.03715,6.69347 16.02184,16.1061 19.86842,26.67381 3.84657,10.56772 4.54894,22.24895 2.05771,33.21556 -1.29046,5.6807 -3.43344,11.16022 -6.30329,16.22945 m -4.64871,7.02903 c -1.58655,2.07134 -3.30676,4.04012 -5.14933,5.88755 -0.0263,0.0263 -0.0526,0.0527 -0.0789,0.0789 m -2.25541,2.13852 c -3.21651,2.89524 -6.74418,5.4428 -10.49756,7.59892 m -2.67597,1.45134 c -2.06724,1.05664 -4.19364,1.99773 -6.36602,2.81653 m -2.84577,0.99399 c -1.42976,0.46047 -2.87639,0.86852 -4.33631,1.22233 -2.03143,0.49231 -4.08603,0.87885 -6.15445,1.16191 m -4.21653,0.4333 c -0.40172,0.0278 -0.80373,0.0518 -1.20594,0.072 m -14.37829,-0.86162 c -4.68431,-0.79576 -9.28647,-2.08804 -13.69659,-3.84986 -1.31632,-0.52586 -2.61528,-1.09277 -3.8953,-1.69886 m -3.88363,-1.9902 c -0.48272,-0.26664 -0.96232,-0.53895 -1.43871,-0.81679 m -2.69049,-1.64979 c -0.27911,-0.17969 -0.55699,-0.36132 -0.83362,-0.54485 m -7.75728,-5.9257 c -3.86888,-3.38074 -7.39229,-7.16185 -10.49541,-11.25518 m -2.70558,-3.81693 c -1.12587,-1.70527 -2.17738,-3.46346 -3.13609,-5.26762 m -3.55625,-8.1981 c -1.1579,-3.44063 -1.93265,-6.99574 -2.2188,-10.62557 -0.0628,-0.79709 -0.10174,-1.59657 -0.11605,-2.3966 m 0.16394,-4.29514 c 0.26077,-2.73068 0.8252,-5.42916 1.72053,-8.0214 0.73483,-2.12753 1.69572,-4.18157 2.86815,-6.10355 m 4.44432,-5.61681 c 0.23443,-0.22982 0.47305,-0.45549 0.71579,-0.67684 3.45852,-3.1537 7.70971,-5.37481 12.23395,-6.60094 m 3.93061,-0.80556 c 0.15106,-0.0213 0.30227,-0.0414 0.45358,-0.0606 m 3.98083,-0.26139 c 5.21217,-0.0363 10.42915,1.09954 15.24027,3.12681 11.7238,4.94008 20.72325,14.88942 27.19405,25.843 0.97572,1.65168 1.90363,3.33698 2.77438,5.05217 m 1.36358,2.81374 c 0.23438,0.50784 0.46351,1.01804 0.68715,1.5305 m 1.93056,4.87282 c 1.29234,3.6323 2.28841,7.35908 2.91254,11.15017 m 0.41517,3.0157 c 0.0904,0.81803 0.16285,1.63864 0.21661,2.46153 0.19805,3.03132 0.12669,6.09555 -0.22504,9.12438 m -1.12801,6.1805 c -1.29281,5.13064 -3.45776,10.01162 -6.5525,14.28275 m -8.56919,8.83472 c -1.74577,1.43718 -3.55919,2.80225 -5.38951,4.13666 m -3.97056,2.85807 c -4.88296,3.50877 -9.73698,7.11425 -13.66651,11.65007 -0.95585,1.10332 -1.84768,2.25938 -2.67355,3.46033 m -2.97264,5.07652 c -1.62456,3.29525 -2.81344,6.80844 -3.53529,10.41396 m -0.48599,2.96979 c -0.20292,1.59257 -0.31513,3.19622 -0.33403,4.80047 m 0.0742,2.99961 c 0.1325,2.15338 0.43678,4.29605 0.91918,6.40255 0.29029,1.26763 0.64436,2.51899 1.05855,3.74967 m 1.29536,3.34629 c 0.79774,1.81727 1.72805,3.57678 2.77787,5.26283 m 2.42225,3.48764 c 0.34777,0.45089 0.7046,0.89483 1.07016,1.33145 m 3.06677,3.29271 c 3.52453,3.40371 7.63655,6.19299 12.13985,8.13234 11.82761,5.09358 26.06042,4.19767 37.15595,-2.33887 5.90984,-3.48157 10.85143,-8.51728 14.3727,-14.40017 m 1.45699,-2.64231 c 0.94893,-1.87545 1.75808,-3.82079 2.41441,-5.81565 m 0.88985,-3.11527 c 0.43055,-1.77236 0.74073,-3.57417 0.92202,-5.39207" + id="path01" + inkscape:path-effect="#path-effect52" + inkscape:original-d="m -203.89281,256.84604 c -1.51106,-1.29866 -3.02313,-2.59833 -4.53619,-3.899 -1.51306,-1.30067 -40.57402,-43.95222 -60.86254,-65.92984 -20.28851,-21.97761 42.54475,32.84978 63.81562,49.27317 21.27087,16.42339 -47.41514,-18.3744 -71.12421,-27.5631 -23.70906,-9.1887 -0.89371,-36.25308 -1.34207,-54.38112 -0.44835,-18.12804 42.02319,14.16191 63.03329,21.24136 21.01009,7.07946 0.94469,41.18459 1.41553,61.77538 0.47085,20.5908 -20.41024,17.45993 -30.61686,26.1884 -10.20662,8.72847 48.02405,20.68221 72.03457,31.02182" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Knot_path_0_92_5.svg b/testfiles/lpe_tests/Knot_path_0_92_5.svg new file mode 100644 index 0000000..6f0b94a --- /dev/null +++ b/testfiles/lpe_tests/Knot_path_0_92_5.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="knot" + id="path-effect830" + is_visible="true" + interruption_width="8" + prop_to_stroke_width="true" + add_stroke_width="false" + add_other_stroke_width="true" + switcher_size="15" + crossing_points_vector="" /> + <inkscape:path-effect + effect="knot" + id="path-effect18" + is_visible="true" + interruption_width="30" + prop_to_stroke_width="true" + add_stroke_width="false" + add_other_stroke_width="true" + switcher_size="30" + crossing_points_vector="" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:nodetypes="cccccccccccccccccc" + inkscape:connector-curvature="0" + id="path02" + d="m -2.2678571,162.44048 c 21.5576511,25.83313 43.1151691,51.6664 64.6725561,77.49981 m 22.829755,27.35826 c 1.322643,1.58501 2.645285,3.17002 3.967927,4.75503 0.162428,-1.13046 0.342622,-2.29467 0.539667,-3.4909 m 8.689069,-38.58729 c 0.842734,-3.22946 1.719403,-6.5234 2.622893,-9.86829 m 7.362,-26.51827 c 1.81511,-6.42148 3.65868,-12.89704 5.48735,-19.3443 m 12.38842,-45.09751 c 3.90909,-15.15769 7.00868,-28.77734 8.53636,-39.41038 -4.62951,3.847496 -9.67091,8.47756 -15.02193,13.6959 m -24.67988,25.56077 c -5.876812,6.34276 -11.908175,12.97916 -17.999409,19.72931 M 59.07139,168.79753 c -6.760895,7.51515 -13.481185,14.95315 -20.033063,22.07116 M 20.378159,210.6484 c -8.790258,9.01868 -16.9704482,16.87822 -24.1579208,22.8516 3.3617238,1.81167 6.7234418,3.62335 10.0851544,5.43502 m 51.9422144,27.9926 c 21.405628,11.53596 42.811143,23.07197 64.216673,34.60808 5.40223,-15.57826 10.80441,-31.15651 16.20652,-46.73469 m 12.2736,-35.39384 c 1.34195,-3.86985 2.6839,-7.7397 4.02584,-11.60955 -2.24303,1.52786 -4.48607,3.05572 -6.72911,4.58358 m -22.98866,15.65891 c -6.1656,4.19975 -12.33123,8.39952 -18.49686,12.5993 m -55.542051,37.83305 c -0.18825,0.12823 -0.3765,0.25646 -0.56475,0.38469 -0.466219,-0.1321 -0.932438,-0.2642 -1.398656,-0.3963 M -1.7218779,264.01854 c -27.9001811,-7.90511 -55.8003351,-15.81007 -83.7007391,-23.71497 14.761876,-20.31229 29.52364,-40.62446 44.28533,-60.93654 M 9.0465839,110.31395 c 0.00828,-0.0114 0.016563,-0.0228 0.024845,-0.0342 35.4792816,2.13925 70.9587736,4.27866 106.4381116,6.4182 m 27.37402,1.65079 c 5.5408,0.33414 11.0816,0.66829 16.62239,1.00244 -20.03075,16.44031 -40.06161,32.88073 -60.092547,49.32121 m -21.118482,17.33309 c -8.569177,7.03319 -17.138365,14.06639 -25.70756,21.0996 m -20.871194,17.13014 c -3.201371,2.62755 -6.402743,5.25509 -9.604115,7.88263 m -22.55782716,18.51446 c -0.1033924,0.0849 -0.20678481,0.16972 -0.31017722,0.25458 -21.08553762,1.31772 30.93168238,2.05068 79.58783438,2.81059 m 27.544828,0.45273 c 6.50793,0.11627 12.62343,0.23568 18.10621,0.36015 m -4.24287,-39.39033 C 110.02946,209.26191 98.003193,203.41831 85.473167,197.57875 M 35.915393,174.28768 C 19.290299,165.87172 5.2343085,157.43522 -2.3411117,148.94687 M 10.444992,131.35316 c 16.929165,7.08646 33.85828,14.17314 50.78715,21.25993 11.900764,10.65291 23.801545,21.30591 35.702311,31.95897 m 22.394337,20.04655 c 5.71198,5.11316 11.42395,10.22633 17.13591,15.33951 M 33.173193,268.75013 c -24.1608701,6.39278 -48.321777,12.7856 -72.482717,19.17845 2.144915,-6.23512 4.289816,-12.47022 6.434704,-18.7053 m 8.796313,-25.57055 c 5.758387,-16.73948 11.516692,-33.47886 17.2749356,-50.21821 -26.7097836,-25.4504 -53.4203706,-50.90106 -80.1309516,-76.35119" + style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + transform="translate(5.3453905,-85.526249)" + inkscape:path-effect="#path-effect830" + inkscape:original-d="M -2.2678571,162.44048 C 28.222487,198.97791 58.712565,235.5156 89.202381,272.05358 95.502253,228.20803 128.5288,133.58162 134.82814,89.73664 97.535008,120.73022 33.514154,202.50569 -3.7797618,233.5 38.302176,256.17848 80.383199,278.85689 122.46428,301.5357 c 10.83556,-31.24621 21.6709,-62.49232 32.50596,-93.73808 -34.77319,23.686 -69.547358,47.37275 -104.321431,71.05953 C 5.2915364,266.00557 -40.065211,253.15449 -85.422617,240.30357 -53.924215,196.96187 -22.426322,153.62076 9.0714284,110.27976 59.216189,113.30328 109.36137,116.32711 159.50595,119.35119 106.08585,163.19594 52.664947,207.0414 -0.75595238,250.8869 -41.073366,253.40649 185.87892,253.78816 145.5612,256.30827 184.87126,211.95849 -43.08902,169.74775 -3.7797618,125.39881 17.891,134.46991 39.561772,143.5414 61.232142,152.61309 92.47825,180.5829 123.72447,208.5533 154.97024,236.52381 90.210612,253.65845 25.450661,270.79339 -39.309524,287.92858 c 10.835635,-31.49845 21.6709,-62.99631 32.5059526,-94.49406 -26.7097836,-25.4504 -53.4203706,-50.90106 -80.1309516,-76.35119" /> + <path + style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 121.73149,301.14078 c 0.24426,0.13164 0.48853,0.26328 0.73279,0.39492 1.05776,-3.05022 2.11551,-6.10044 3.17326,-9.15066 m -205.2537,-50.43635 c -1.935484,-0.54837 -3.87097,-1.09675 -5.806457,-1.64512 5.924328,-8.15186 11.848639,-16.30369 17.772933,-24.45551 M 42.126969,112.27291 c 13.308468,0.80248 26.61695,1.60498 39.925426,2.4075 m -93.090733,91.06465 c 1.4115928,-4.10352 2.8231815,-8.20703 4.2347666,-12.31054 -26.7097836,-25.4504 -53.4203706,-50.90106 -80.1309516,-76.35119" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect18" + inkscape:original-d="M -2.2678571,162.44048 C 28.222487,198.97791 58.712565,235.5156 89.202381,272.05358 95.502253,228.20803 128.5288,133.58162 134.82814,89.73664 97.535008,120.73022 33.514154,202.50569 -3.7797618,233.5 38.302176,256.17848 80.383199,278.85689 122.46428,301.5357 c 10.83556,-31.24621 21.6709,-62.49232 32.50596,-93.73808 -34.77319,23.686 -69.547358,47.37275 -104.321431,71.05953 C 5.2915364,266.00557 -40.065211,253.15449 -85.422617,240.30357 -53.924215,196.96187 -22.426322,153.62076 9.0714284,110.27976 59.216189,113.30328 109.36137,116.32711 159.50595,119.35119 106.08585,163.19594 52.664947,207.0414 -0.75595238,250.8869 -41.073366,253.40649 185.87892,253.78816 145.5612,256.30827 184.87126,211.95849 -43.08902,169.74775 -3.7797618,125.39881 17.891,134.46991 24.594678,215.16963 46.265048,224.24132 77.511156,252.21113 123.72447,208.5533 154.97024,236.52381 90.210612,253.65845 25.450661,270.79339 -39.309524,287.92858 c 10.835635,-31.49845 21.6709,-62.99631 32.5059526,-94.49406 -26.7097836,-25.4504 -53.4203706,-50.90106 -80.1309516,-76.35119" + sodipodi:nodetypes="cccccccccccccccccc" + transform="translate(15.341691,99.494901)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Lattice2_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Lattice2_multi_mm_1_0_2.svg new file mode 100644 index 0000000..2290b6c --- /dev/null +++ b/testfiles/lpe_tests/Lattice2_multi_mm_1_0_2.svg @@ -0,0 +1,255 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <metadata + id="metadata871"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview869" + showgrid="false" + inkscape:zoom="0.3648043" + inkscape:cx="-95.118864" + inkscape:cy="987.24757" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="bend_path" + id="path-effect33" + is_visible="true" + lpeversion="1" + bendpath="m 109.61309,69.080359 c 13.5182,20.818475 10.90902,62.341741 89.20238,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="120.38541,45.26786" + gridpoint1="188.04315,45.26786" + gridpoint2="120.38541,92.892859" + gridpoint3="188.04315,92.892859" + gridpoint4="131.91368,35.440479" + gridpoint5="176.51488,35.440479" + gridpoint6="131.91368,102.72024" + gridpoint7="176.51488,102.72024" + gridpoint8x9="154.21428,35.440479" + gridpoint10x11="154.21428,102.72024" + gridpoint12="125.67708,58.875002" + gridpoint13="182.75148,58.875002" + gridpoint14="125.67708,79.285717" + gridpoint15="182.75148,79.285717" + gridpoint16="131.91368,52.260419" + gridpoint17="176.51488,52.260419" + gridpoint18="131.91368,85.9003" + gridpoint19="176.51488,85.9003" + gridpoint20x21="154.21428,52.260419" + gridpoint22x23="154.21428,85.9003" + gridpoint24x26="109.61309,69.08036" + gridpoint25x27="198.81547,69.08036" + gridpoint28x30="131.91368,69.08036" + gridpoint29x31="176.51488,69.08036" + gridpoint32x33x34x35="154.21428,69.08036" + id="path-effect31" + is_visible="true" + lpeversion="1" + horizontal_mirror="true" + vertical_mirror="true" + live_update="true" + perimetral="true" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="109.61309,35.440479" + gridpoint1="173.86904,59.630955" + gridpoint2="127.75595,87.601192" + gridpoint3="198.81547,102.72024" + gridpoint4="131.91368,35.440479" + gridpoint5="176.51488,35.440479" + gridpoint6="131.91368,102.72024" + gridpoint7="176.51488,102.72024" + gridpoint8x9="154.21428,35.440479" + gridpoint10x11="154.21428,102.72024" + gridpoint12="145.14285,74.93899" + gridpoint13="198.81547,52.260419" + gridpoint14="109.61309,85.9003" + gridpoint15="170.08928,82.120538" + gridpoint16="131.91368,52.260419" + gridpoint17="176.51488,52.260419" + gridpoint18="131.91368,85.9003" + gridpoint19="176.51488,85.9003" + gridpoint20x21="154.21428,52.260419" + gridpoint22x23="154.21428,85.9003" + gridpoint24x26="109.61309,69.08036" + gridpoint25x27="198.81547,69.08036" + gridpoint28x30="131.91368,69.08036" + gridpoint29x31="176.51488,69.08036" + gridpoint32x33x34x35="154.21428,69.08036" + id="path-effect836" + is_visible="false" + lpeversion="1" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="30.2381,159.03868" + gridpoint1="117.17262,159.03868" + gridpoint2="30.2381,221.78273" + gridpoint3="117.17262,221.78273" + gridpoint4="49.136911,165.46428" + gridpoint5="98.27381,165.46428" + gridpoint6="49.136911,215.35713" + gridpoint7="98.27381,215.35713" + gridpoint8x9="75.229999,189.86662" + gridpoint10x11="75.229999,190.95479" + gridpoint12="18.898811,170.37797" + gridpoint13="128.51191,170.37797" + gridpoint14="18.898811,210.44344" + gridpoint15="128.51191,210.44344" + gridpoint16="46.30209,170.37797" + gridpoint17="101.10863,170.37797" + gridpoint18="46.30209,210.44344" + gridpoint19="101.10863,210.44344" + gridpoint20x21="108.84218,147.06279" + gridpoint22x23="108.84218,233.75862" + gridpoint24x26="18.898811,190.41071" + gridpoint25x27="128.51191,190.41071" + gridpoint28x30="46.30209,190.41071" + gridpoint29x31="101.10863,190.41071" + gridpoint32x33x34x35="73.70536,190.41071" + id="path-effect824" + is_visible="true" + horizontal_mirror="true" + vertical_mirror="true" + live_update="true" + lpeversion="1" + perimetral="false" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="34.77381,42.999999" + gridpoint1="78.995188,59.230301" + gridpoint2="38.553572,83.82143" + gridpoint3="89.95833,112.54762" + gridpoint4="34.962797,28.636904" + gridpoint5="71.626486,28.636904" + gridpoint6="34.962797,112.54762" + gridpoint7="71.626486,112.54762" + gridpoint8x9="53.294641,28.636904" + gridpoint10x11="53.294641,112.54762" + gridpoint12="16.630953,49.614583" + gridpoint13="89.95833,49.614583" + gridpoint14="16.630953,91.569941" + gridpoint15="89.95833,91.569941" + gridpoint16="44.79254,71.131568" + gridpoint17="71.626486,49.614583" + gridpoint18="34.962797,91.569941" + gridpoint19="71.626486,91.569941" + gridpoint20x21="55.708534,33.976843" + gridpoint22x23="50.553546,106.00316" + gridpoint24x26="16.630953,70.592262" + gridpoint25x27="89.95833,70.592262" + gridpoint28x30="34.962797,70.592262" + gridpoint29x31="58.717158,25.340978" + gridpoint32x33x34x35="53.294641,70.592262" + id="path-effect818" + is_visible="true" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" + lpeversion="1" + perimetral="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g08" + inkscape:path-effect="#path-effect31" + transform="matrix(1.2214305,0,0,1.2214305,-26.065254,25.966324)"> + <path + id="path07" + d="m 167.16156,69.08036 c 0,4.56117 1.76459,9.413422 0.79533,14.499369 -0.99049,5.197329 -5.26031,9.313128 -11.73582,9.31313 -6.46575,10e-7 -11.18172,-4.115797 -12.68876,-9.313127 -1.30406,-4.497301 -0.15762,-10.795748 -0.15762,-14.499372 0,-3.703624 -1.14644,-10.002071 0.15762,-14.499373 1.50704,-5.19733 6.22301,-9.313128 12.68876,-9.313127 6.47551,2e-6 10.74533,4.115801 11.73582,9.31313 0.96926,5.085947 -0.79533,9.938199 -0.79533,14.49937 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 186.72022,69.08036 A 29.860117,33.639881 0 0 1 156.86011,102.72024 29.860117,33.639881 0 0 1 126.99999,69.08036 29.860117,33.639881 0 0 1 156.86011,35.440479 29.860117,33.639881 0 0 1 186.72022,69.08036 Z" + inkscape:connector-curvature="0" /> + <path + id="path06" + d="m 172.10895,67.529675 c -0.48041,2.887616 -1.10783,6.328888 -3.56289,8.746619 -2.67542,2.634739 -7.79711,4.442405 -14.33178,4.442405 -6.53467,0 -11.65636,-1.807666 -14.33178,-4.442405 -2.45506,-2.417731 -3.08248,-5.859003 -3.56289,-8.746619 -0.49463,-2.97303 -0.98965,-6.618626 1.58353,-9.584541 2.68736,-3.097511 8.67136,-5.280327 16.31114,-5.280327 7.63978,0 13.62378,2.182816 16.31114,5.280327 2.57318,2.965915 2.07816,6.611511 1.58353,9.584541 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 198.81547,66.056549 A 44.601189,23.056549 0 0 1 154.21428,89.113098 44.601189,23.056549 0 0 1 109.61309,66.056549 44.601189,23.056549 0 0 1 154.21428,43 44.601189,23.056549 0 0 1 198.81547,66.056549 Z" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 34.77381,42.999999 c 14.75205,5.419055 44.221378,16.230302 44.221378,16.230302 -0.587152,-2.851166 7.444692,36.187571 6.85754,33.336405 C 88.13326,103.66351 89.95833,112.54762 89.95833,112.54762 72.828301,102.98058 38.553572,83.82143 38.553572,83.82143 Z" + id="path05" + inkscape:path-effect="#path-effect818" + inkscape:original-d="M 16.630953,28.636904 H 89.95833 V 112.54762 H 16.630953 Z" + inkscape:connector-curvature="0" + transform="matrix(1.2214305,0,0,1.2214305,-26.065254,25.966324)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path04" + inkscape:path-effect="#path-effect824" + sodipodi:type="arc" + sodipodi:cx="73.70536" + sodipodi:cy="190.41071" + sodipodi:rx="54.806545" + sodipodi:ry="40.065475" + d="m 117.17262,190.41071 c 0,4.16018 -1.41206,8.2956 -3.01639,10.99721 -1.66435,2.80267 -3.19155,3.81812 -5.94387,0.9151 -2.84172,-2.99731 -7.59882,-10.79761 -13.939094,-19.15437 -6.595576,-8.69325 -13.5232,-16.02636 -19.043267,-16.02636 -5.651193,0 -8.497467,7.33311 -12.373196,16.02636 -4.04928,9.08253 -7.956344,15.84539 -14.111913,19.15437 -5.671396,3.0487 -11.026968,1.74189 -14.138586,-0.9151 -3.152831,-2.69219 -4.368204,-6.88745 -4.368204,-10.99721 0,-4.10977 1.215373,-8.30503 4.368204,-10.99721 3.111618,-2.657 8.46719,-3.9638 14.138586,-0.9151 6.155569,3.30897 10.062633,10.07183 14.111913,19.15436 3.875729,8.69325 6.722003,16.02636 12.373196,16.02636 5.520067,0 12.447691,-7.33311 19.043267,-16.02636 6.340274,-8.35676 11.097374,-16.15705 13.939094,-19.15436 2.75232,-2.90303 4.27952,-1.88758 5.94387,0.9151 1.60433,2.7016 3.01639,6.83702 3.01639,10.99721 z" + transform="matrix(1.2214305,0,0,1.2214305,-52.17386,-34.591989)" /> + <g + id="g03" + inkscape:path-effect="#path-effect836;#path-effect33" + transform="matrix(1.2214305,0,0,1.2214305,-9.5954504,115.38134)"> + <path + id="path02" + d="m 186.22436,78.875272 c 5.225,6.979017 7.26113,16.311353 4.18561,25.908898 -3.08756,9.63512 -11.26605,18.88576 -23.78717,24.59131 -0.41408,0.20037 -0.83968,0.39508 -1.27676,0.58383 -6.16988,2.66438 -14.44402,4.03977 -23.62237,3.48587 -8.2608,-0.35221 -16.59488,-3.88606 -23.36425,-9.06364 -7.28233,-6.33722 -9.63214,-12.85818 -9.70124,-18.13087 0,0 0,0 0,0 0.0243,-8.641879 5.49777,-13.987195 10.95452,-16.974872 5.74751,-3.146879 12.75274,-3.821692 17.9974,-6.192734 0,0 0,-10e-7 0,-10e-7 2.92552,-1.52293 4.9127,-3.603371 3.87767,-6.933723 -1.16823,-2.454988 -2.78509,-4.888053 -3.71267,-5.662766 -0.40969,-1.095567 9e-5,-2.263715 2.54028,-3.081258 0.17691,-0.05694 0.3632,-0.111679 0.55899,-0.164035 6.19879,-2.078653 14.52623,-3.008198 23.12894,-1.364926 8.72481,1.666595 16.89674,5.887259 22.22105,12.998917 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 186.72022,69.08036 A 29.860117,33.639881 0 0 1 156.86011,102.72024 29.860117,33.639881 0 0 1 126.99999,69.08036 29.860117,33.639881 0 0 1 156.86011,35.440479 29.860117,33.639881 0 0 1 186.72022,69.08036 Z" + inkscape:connector-curvature="0" /> + <path + id="path01" + d="m 196.82987,66.795791 c 3.53193,4.436283 2.95286,12.479662 -2.76559,22.065661 -5.69422,9.545391 -16.9313,20.667898 -32.67231,27.891378 -1.64653,0.78656 -3.433,1.51261 -5.35777,2.15269 -4.40312,1.46424 -9.4646,2.45553 -15.05276,2.70503 -6.14202,0.32177 -12.74973,-1.23483 -19.10107,-4.57164 -5.74582,-3.44839 -9.61594,-7.60869 -11.98287,-11.77996 -2.6864,-4.71411 -3.93621,-8.876318 -4.45562,-12.323071 0,0 0,-3e-6 0,-3e-6 -1.23863,-7.063549 -0.19397,-12.815358 0.94279,-16.549397 1.20229,-3.949249 3.02137,-7.326611 5.68859,-9.070621 2.7897,-1.824092 6.49686,-1.889137 11.13382,0.372892 5.18911,2.531386 8.69434,6.208364 13.26412,9.963006 0,-1e-6 1e-5,2e-6 1e-5,2e-6 1.97639,1.556065 3.56664,2.714736 4.62148,2.644503 0.79229,-0.302739 0.73054,-0.90678 -0.51099,-2.257376 -1.58076,-0.969011 -2.3721,-1.749211 -2.44291,-1.753437 0.39679,-0.0848 1.37848,-0.557251 3.05529,-1.162196 0.73638,-0.265666 1.59952,-0.554546 2.5959,-0.846229 10.4678,-3.547237 20.94568,-8.264998 31.39955,-10.579599 10.20884,-2.260349 17.9625,-1.521196 21.64034,3.098367 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 198.81547,66.056549 A 44.601189,23.056549 0 0 1 154.21428,89.113098 44.601189,23.056549 0 0 1 109.61309,66.056549 44.601189,23.056549 0 0 1 154.21428,43 44.601189,23.056549 0 0 1 198.81547,66.056549 Z" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Lattice2_multi_px_1_0_2.svg b/testfiles/lpe_tests/Lattice2_multi_px_1_0_2.svg new file mode 100644 index 0000000..3ddbc0a --- /dev/null +++ b/testfiles/lpe_tests/Lattice2_multi_px_1_0_2.svg @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.7008 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <metadata + id="metadata851"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview849" + showgrid="false" + inkscape:zoom="0.3648043" + inkscape:cx="-95.118864" + inkscape:cy="987.24757" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="bend_path" + id="path-effect33" + is_visible="true" + lpeversion="1" + bendpath="m 109.61309,69.080359 c 13.5182,20.818475 10.90902,62.341741 89.20238,0" + prop_scale="0.85231055" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="120.38541,45.26786" + gridpoint1="188.04315,45.26786" + gridpoint2="120.38541,92.892859" + gridpoint3="188.04315,92.892859" + gridpoint4="131.91368,35.440479" + gridpoint5="176.51488,35.440479" + gridpoint6="131.91368,102.72024" + gridpoint7="176.51488,102.72024" + gridpoint8x9="154.21428,35.440479" + gridpoint10x11="154.21428,102.72024" + gridpoint12="119.52098,58.863039" + gridpoint13="188.90758,58.863039" + gridpoint14="119.52098,79.29768" + gridpoint15="188.90758,79.29768" + gridpoint16="131.91368,52.260419" + gridpoint17="176.51488,52.260419" + gridpoint18="131.91368,85.9003" + gridpoint19="176.51488,85.9003" + gridpoint20x21="154.21428,52.260419" + gridpoint22x23="154.21428,85.9003" + gridpoint24x26="109.61309,69.08036" + gridpoint25x27="198.81547,69.08036" + gridpoint28x30="131.91368,69.08036" + gridpoint29x31="176.51488,69.08036" + gridpoint32x33x34x35="154.21428,69.08036" + id="path-effect31" + is_visible="true" + horizontal_mirror="true" + vertical_mirror="true" + live_update="true" + perimetral="true" + lpeversion="1" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="109.61309,35.440479" + gridpoint1="173.86904,59.630955" + gridpoint2="127.75595,87.601192" + gridpoint3="198.81547,102.72024" + gridpoint4="131.91368,35.440479" + gridpoint5="176.51488,35.440479" + gridpoint6="131.91368,102.72024" + gridpoint7="176.51488,102.72024" + gridpoint8x9="154.21428,35.440479" + gridpoint10x11="154.21428,102.72024" + gridpoint12="145.14285,74.93899" + gridpoint13="198.81547,52.260419" + gridpoint14="109.61309,85.9003" + gridpoint15="170.08928,82.120538" + gridpoint16="131.91368,52.260419" + gridpoint17="176.51488,52.260419" + gridpoint18="131.91368,85.9003" + gridpoint19="176.51488,85.9003" + gridpoint20x21="154.21428,52.260419" + gridpoint22x23="154.21428,85.9003" + gridpoint24x26="109.61309,69.08036" + gridpoint25x27="198.81547,69.08036" + gridpoint28x30="131.91368,69.08036" + gridpoint29x31="176.51488,69.08036" + gridpoint32x33x34x35="125.07707,128.87502" + id="path-effect836" + is_visible="true" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" + lpeversion="1" + perimetral="false" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="30.2381,159.03868" + gridpoint1="117.17262,159.03868" + gridpoint2="30.2381,221.78273" + gridpoint3="117.17262,221.78273" + gridpoint4="49.136911,165.46428" + gridpoint5="98.27381,165.46428" + gridpoint6="49.136911,215.35713" + gridpoint7="98.27381,215.35713" + gridpoint8x9="75.229999,189.86662" + gridpoint10x11="75.229999,190.95479" + gridpoint12="18.898811,170.37797" + gridpoint13="128.51191,170.37797" + gridpoint14="18.898811,210.44344" + gridpoint15="128.51191,210.44344" + gridpoint16="32.455281,175.73171" + gridpoint17="114.95544,175.73171" + gridpoint18="32.455281,205.08971" + gridpoint19="114.95544,205.08971" + gridpoint20x21="87.249916,163.88451" + gridpoint22x23="87.249916,216.9369" + gridpoint24x26="18.898811,190.41071" + gridpoint25x27="128.51191,190.41071" + gridpoint28x30="46.30209,190.41071" + gridpoint29x31="101.10863,190.41071" + gridpoint32x33x34x35="73.70536,190.41071" + id="path-effect824" + is_visible="true" + horizontal_mirror="true" + vertical_mirror="true" + live_update="true" + lpeversion="1" + perimetral="false" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="34.77381,42.999999" + gridpoint1="78.995188,59.230301" + gridpoint2="38.553572,83.82143" + gridpoint3="89.95833,112.54762" + gridpoint4="34.962797,28.636904" + gridpoint5="71.626486,28.636904" + gridpoint6="34.962797,112.54762" + gridpoint7="71.626486,112.54762" + gridpoint8x9="53.294641,28.636904" + gridpoint10x11="53.294641,112.54762" + gridpoint12="16.630953,49.614583" + gridpoint13="100.47986,39.841468" + gridpoint14="16.630953,91.569941" + gridpoint15="89.95833,91.569941" + gridpoint16="44.79254,71.131568" + gridpoint17="71.626486,49.614583" + gridpoint18="34.962797,91.569941" + gridpoint19="71.626486,91.569941" + gridpoint20x21="55.708534,33.976843" + gridpoint22x23="50.553546,106.00316" + gridpoint24x26="16.630953,70.592262" + gridpoint25x27="89.95833,70.592262" + gridpoint28x30="34.962797,70.592262" + gridpoint29x31="58.717158,25.340978" + gridpoint32x33x34x35="53.294641,70.592262" + id="path-effect818" + is_visible="true" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" + lpeversion="1" + perimetral="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g08" + inkscape:path-effect="#path-effect31" + transform="matrix(4.8598993,0,0,4.8598993,43.998069,87.060982)"> + <path + id="path07" + d="m 171.64821,69.08036 c 0,4.026052 0.0558,9.68865 -2.05157,14.503599 -2.27417,5.196006 -7.04416,9.308898 -13.37557,9.3089 -6.32537,10e-7 -11.37057,-4.11289 -13.96332,-9.308897 -2.432,-4.873849 -2.63933,-10.41865 -2.63933,-14.503602 0,-4.084953 0.20733,-9.629754 2.63933,-14.503603 2.59275,-5.196007 7.63795,-9.308898 13.96332,-9.308897 6.33141,2e-6 11.1014,4.112895 13.37557,9.308901 2.10739,4.814948 2.05157,10.477547 2.05157,14.503599 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 186.72022,69.08036 A 29.860117,33.639881 0 0 1 156.86011,102.72024 29.860117,33.639881 0 0 1 126.99999,69.08036 29.860117,33.639881 0 0 1 156.86011,35.440479 29.860117,33.639881 0 0 1 186.72022,69.08036 Z" + inkscape:connector-curvature="0" /> + <path + id="path06" + d="m 178.21532,67.528608 c -0.30884,3.011722 -2.03661,6.211279 -5.99459,8.751672 -4.10617,2.63551 -10.51294,4.443017 -18.00645,4.443017 -7.49351,0 -13.90028,-1.807507 -18.00645,-4.443017 -3.95798,-2.540393 -5.68575,-5.73995 -5.99459,-8.751672 -0.31003,-3.023386 0.76042,-6.574087 4.77377,-9.588079 4.12447,-3.097443 11.04122,-5.279422 19.22727,-5.279422 8.18605,0 15.1028,2.181979 19.22727,5.279422 4.01335,3.013992 5.0838,6.564693 4.77377,9.588079 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 198.81547,66.056549 A 44.601189,23.056549 0 0 1 154.21428,89.113098 44.601189,23.056549 0 0 1 109.61309,66.056549 44.601189,23.056549 0 0 1 154.21428,43 44.601189,23.056549 0 0 1 198.81547,66.056549 Z" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 34.77381,42.999999 c 14.749889,5.418261 44.221378,16.230302 44.221378,16.230302 4.638904,1.244052 7.826233,4.390393 9.43789,10.102985 1.576132,5.586674 1.420194,12.810016 1.117852,19.798278 -0.340579,7.872061 -0.61115,12.176726 -0.342074,17.170586 0.219703,4.07755 0.749474,6.24547 0.749474,6.24547 C 72.828301,102.98058 38.553572,83.82143 38.553572,83.82143 Z" + id="path05" + inkscape:path-effect="#path-effect818" + inkscape:original-d="M 16.630953,28.636904 H 89.95833 V 112.54762 H 16.630953 Z" + inkscape:connector-curvature="0" + transform="matrix(4.8598993,0,0,4.8598993,1.8170504,-138.41646)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path04" + inkscape:path-effect="#path-effect824" + sodipodi:type="arc" + sodipodi:cx="73.70536" + sodipodi:cy="190.41071" + sodipodi:rx="54.806545" + sodipodi:ry="40.065475" + d="m 117.17262,190.41071 c 0,4.0566 -0.53381,8.36701 -1.81256,10.62327 -1.34267,2.36906 -3.46906,2.61577 -7.39895,-1.14422 -4.43179,-4.24021 -8.762496,-10.73884 -15.329244,-18.99754 -6.152122,-7.73725 -11.914305,-13.74993 -17.401867,-13.74993 -5.546114,0 -9.92601,6.01268 -15.339332,13.74993 -5.704711,8.15373 -10.520514,14.8623 -16.292603,18.99754 -5.184561,3.71431 -9.022107,3.45979 -10.986121,1.14422 -1.912657,-2.25503 -2.373843,-6.5679 -2.373843,-10.62327 0,-4.05537 0.461186,-8.36825 2.373843,-10.62327 1.964014,-2.31558 5.80156,-2.5701 10.986121,1.14422 5.772089,4.13523 10.587892,10.84381 16.292603,18.99753 5.413322,7.73725 9.793218,13.74993 15.339332,13.74993 5.487562,0 11.249745,-6.01268 17.401867,-13.74993 6.566748,-8.2587 10.897454,-14.75732 15.329244,-18.99753 3.92989,-3.76 6.05628,-3.51328 7.39895,-1.14422 1.27875,2.25625 1.81256,6.56666 1.81256,10.62327 z" + transform="matrix(4.8598993,0,0,4.8598993,-169.33301,-147.33134)" /> + <g + id="g03" + inkscape:path-effect="#path-effect836;#path-effect33" + transform="matrix(4.8598993,0,0,4.8598993,37.14187,435.61764)"> + <path + id="path02" + d="m 177.64911,97.364908 c 0.2082,2.361295 0.89148,4.575602 3.9483,4.355012 3.16167,-0.22815 7.97013,-3.093393 13.28157,-8.026463 5.13568,-4.769837 8.5235,-9.227315 8.294,-9.45094 -0.29575,-0.288189 -4.44989,3.420351 -12.28127,8.358129 -7.45056,4.697669 -19.21796,10.853384 -32.2206,16.047554 -0.18243,0.0729 -0.3649,0.1455 -0.54741,0.21787 -5.19008,2.1216 -11.05386,3.89935 -17.65198,4.6171 -4.90444,0.5472 -10.30171,-0.0734 -15.81084,-2.2428 -4.77761,-2.13739 -8.73467,-5.07129 -11.73737,-8.40286 -2.05953,-2.24223 -3.83316,-4.487842 -5.37374,-6.642968 -0.81293,-1.137216 -1.5407,-2.222317 -2.18426,-3.221048 0,0 0,-10e-7 0,-10e-7 -6.788079,-10.129725 -9.380594,-13.091399 -10.360025,-13.945237 -0.878684,-0.76601 0.152046,-0.427102 2.796726,0.481267 2.858769,0.981903 5.645939,1.793413 10.812049,1.633623 4.36503,-0.135012 11.74677,-1.104987 18.0061,-2.058699 3.53194,-0.538148 6.98033,-1.220339 10.51227,-1.758487 1.76096,-0.251973 3.20726,-0.399846 4.28534,-0.395197 1.813,0.0078 2.76397,0.733616 2.91284,0.774326 -0.0162,-0.165048 -0.50472,-0.285475 -1.94392,-0.802988 -0.30761,-0.110612 -0.66586,-0.244214 -1.06648,-0.403737 -2.17872,-0.284535 -3.23919,-0.182631 -3.12341,0.715258 0,0 0,0 0,0 0.83305,1.121587 3.50079,1.249726 7.42422,1.4824 0.49937,0.009 0.99881,0.01876 1.49317,0.03037 8.74259,0.205368 14.65927,1.00161 20.26139,3.731771 4.89735,2.386701 7.70433,5.442443 8.89323,7.678865 1.35553,2.549863 1.14908,4.607811 1.3801,7.227881 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 186.72022,69.08036 A 29.860117,33.639881 0 0 1 156.86011,102.72024 29.860117,33.639881 0 0 1 126.99999,69.08036 29.860117,33.639881 0 0 1 156.86011,35.440479 29.860117,33.639881 0 0 1 186.72022,69.08036 Z" + inkscape:connector-curvature="0" /> + <path + id="path01" + d="m 196.87834,68.535057 c 0.11255,1.683632 -0.0696,3.768663 -1.38234,7.759757 -1.28664,3.911793 -4.51495,12.316023 -10.21843,21.314682 -5.53717,8.736234 -12.6777,16.798194 -22.18036,23.258284 0,0 0,0 0,0 -1.12853,0.78721 -2.34888,1.54215 -3.6667,2.25485 -4.80442,2.59831 -10.81107,4.57666 -18.00564,5.55821 -6.97877,0.97043 -14.92947,-0.27792 -23.23854,-3.93834 -5.87251,-3.06786 -10.45631,-6.71746 -13.79578,-10.63887 -0.77135,-0.90577 -1.47413,-1.82347 -2.11021,-2.74935 0,0 0,-1e-5 0,-1e-5 -3.707962,-5.31486 -5.782955,-9.88219 -6.808755,-13.507323 -1.851239,-5.727739 -1.927626,-9.735104 -1.262165,-12.399123 1.132819,-4.534981 5.021295,-7.435932 10.14257,-8.043014 5.14432,-0.609813 10.63693,1.269429 13.36616,2.302318 2.96274,1.121269 4.2383,1.886724 5.941,2.411999 1.73326,0.534704 3.55361,0.607986 3.83568,-0.715573 0.28076,-1.317452 -1.14729,-3.827494 -2.13887,-5.504513 -0.81881,-1.38482 0.047,-0.07804 2.32732,3.926042 0.30354,0.533003 0.64448,1.132781 0.9603,1.682331 1.11841,1.856062 2.52917,4.344964 3.69409,5.7947 0.87368,1.047317 1.79976,2.238775 2.50228,2.710682 0.15311,0.172162 0.35462,0.33308 0.6055,0.484836 0.84518,0.511265 2.21033,0.877219 3.65777,1.165287 0,0 0,0 0,0 3.14142,0.525082 7.11675,0.05721 11.54208,-0.84316 0,0 0,0 0,0 1.8867,-0.406573 3.8529,-0.903915 5.90769,-1.519523 9.07026,-2.717422 16.46596,-6.804654 23.5736,-12.203542 7.13951,-5.423095 10.88485,-9.411036 13.7087,-10.820603 2.42631,-1.211123 2.92176,0.444565 3.04305,2.258966 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 198.81547,66.056549 A 44.601189,23.056549 0 0 1 154.21428,89.113098 44.601189,23.056549 0 0 1 109.61309,66.056549 44.601189,23.056549 0 0 1 154.21428,43 44.601189,23.056549 0 0 1 198.81547,66.056549 Z" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Lattice2_path_0_92_5.svg b/testfiles/lpe_tests/Lattice2_path_0_92_5.svg new file mode 100644 index 0000000..839b7bb --- /dev/null +++ b/testfiles/lpe_tests/Lattice2_path_0_92_5.svg @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:test-threshold="0.1" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="lattice2" + gridpoint0="109.61309,35.440479" + gridpoint1="173.86904,59.630955" + gridpoint2="127.75595,87.601192" + gridpoint3="198.81547,102.72024" + gridpoint4="131.91368,35.440479" + gridpoint5="176.51488,35.440479" + gridpoint6="131.91368,102.72024" + gridpoint7="176.51488,102.72024" + gridpoint8x9="154.21428,35.440479" + gridpoint10x11="154.21428,102.72024" + gridpoint12="145.14285,74.93899" + gridpoint13="198.81547,52.260419" + gridpoint14="109.61309,85.9003" + gridpoint15="170.08928,82.120538" + gridpoint16="131.91368,52.260419" + gridpoint17="176.51488,52.260419" + gridpoint18="131.91368,85.9003" + gridpoint19="176.51488,85.9003" + gridpoint20x21="154.21428,52.260419" + gridpoint22x23="154.21428,85.9003" + gridpoint24x26="109.61309,69.08036" + gridpoint25x27="198.81547,69.08036" + gridpoint28x30="131.91368,69.08036" + gridpoint29x31="176.51488,69.08036" + gridpoint32x33x34x35="154.21428,69.08036" + id="path-effect836" + is_visible="true" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="30.238099,159.03868" + gridpoint1="117.17262,159.03868" + gridpoint2="30.238099,221.78273" + gridpoint3="117.17262,221.78273" + gridpoint4="49.136911,165.46428" + gridpoint5="98.27381,165.46428" + gridpoint6="49.136911,215.35713" + gridpoint7="98.27381,215.35713" + gridpoint8x9="75.229999,189.86662" + gridpoint10x11="75.229999,190.95479" + gridpoint12="18.898813,170.37797" + gridpoint13="128.51191,170.37797" + gridpoint14="18.898813,210.44344" + gridpoint15="128.51191,210.44344" + gridpoint16="46.302089,170.37797" + gridpoint17="101.10863,170.37797" + gridpoint18="46.302089,210.44344" + gridpoint19="101.10863,210.44344" + gridpoint20x21="76.550793,157.59327" + gridpoint22x23="76.550793,223.22814" + gridpoint24x26="18.898813,190.41071" + gridpoint25x27="128.51191,190.41071" + gridpoint28x30="46.302089,190.41071" + gridpoint29x31="101.10863,190.41071" + gridpoint32x33x34x35="73.70536,190.41071" + id="path-effect824" + is_visible="true" + horizontal_mirror="true" + vertical_mirror="true" + live_update="true" /> + <inkscape:path-effect + effect="lattice2" + gridpoint0="34.77381,42.999999" + gridpoint1="86.93452,42.244047" + gridpoint2="38.553572,83.82143" + gridpoint3="89.95833,112.54762" + gridpoint4="34.962797,28.636904" + gridpoint5="71.626486,28.636904" + gridpoint6="34.962797,112.54762" + gridpoint7="71.626486,112.54762" + gridpoint8x9="53.294641,28.636904" + gridpoint10x11="53.294641,112.54762" + gridpoint12="16.630953,49.614583" + gridpoint13="89.95833,49.614583" + gridpoint14="16.630953,91.569941" + gridpoint15="89.95833,91.569941" + gridpoint16="34.962797,49.614583" + gridpoint17="71.626486,49.614583" + gridpoint18="34.962797,91.569941" + gridpoint19="71.626486,91.569941" + gridpoint20x21="53.294641,49.614583" + gridpoint22x23="53.294641,91.569941" + gridpoint24x26="16.630953,70.592262" + gridpoint25x27="89.95833,70.592262" + gridpoint28x30="34.962797,70.592262" + gridpoint29x31="71.626486,70.592262" + gridpoint32x33x34x35="53.294641,70.592262" + id="path-effect818" + is_visible="true" + horizontal_mirror="false" + vertical_mirror="false" + live_update="true" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 34.77381,42.999999 c 17.397857,-0.247271 52.16071,-0.755952 52.16071,-0.755952 1.015721,23.449992 3.02381,70.303573 3.02381,70.303573 C 72.826463,102.98211 38.553572,83.82143 38.553572,83.82143 Z" + id="path05" + inkscape:path-effect="#path-effect818" + inkscape:original-d="M 16.630953,28.636904 H 89.95833 V 112.54762 H 16.630953 Z" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path04" + inkscape:path-effect="#path-effect824" + sodipodi:type="arc" + sodipodi:cx="73.70536" + sodipodi:cy="190.41071" + sodipodi:rx="54.806545" + sodipodi:ry="40.065475" + d="m 117.17262,190.41071 c 0,4.11439 -1.31326,8.31717 -3.60751,10.92344 -2.32202,2.63782 -5.45601,3.4437 -9.38918,0.0581 -4.335768,-3.73216 -7.997388,-10.57636 -13.347966,-19.2616 -5.105343,-8.28717 -10.032527,-14.98835 -15.597965,-14.98835 -5.582169,0 -10.47619,6.70118 -15.818499,14.98835 -5.588374,8.66887 -9.731939,15.54581 -14.703035,19.2616 -4.54946,3.40063 -8.180433,2.5647 -10.693282,-0.0581 -2.486821,-2.59563 -3.777084,-6.81969 -3.777084,-10.92344 0,-4.10376 1.290263,-8.32782 3.777084,-10.92344 2.512849,-2.6228 6.143822,-3.45873 10.693282,-0.0581 4.971096,3.71579 9.114661,10.59273 14.703035,19.2616 5.342309,8.28717 10.23633,14.98835 15.818499,14.98835 5.565438,0 10.492622,-6.70118 15.597965,-14.98835 5.350578,-8.68524 9.012198,-15.52944 13.347966,-19.2616 3.93317,-3.3856 7.06716,-2.57972 9.38918,0.0581 2.29425,2.60626 3.60751,6.80904 3.60751,10.92344 z" /> + <g + id="g03" + inkscape:path-effect="#path-effect836"> + <path + id="path02" + d="m 167.16156,78.414449 c -0.88858,5.999457 0.29613,8.794669 2.84366,13.304491 1.89307,3.351267 2.40728,5.383646 -4.61182,3.890222 -6.59684,-1.403584 -16.63976,-5.678309 -21.52086,-10.126728 -5.2156,-4.753264 -2.5027,-7.097804 -0.49785,-11.369866 1.01993,-2.173344 1.5427,-4.46748 1.14014,-7.644245 -0.40312,-3.181142 -1.62626,-6.458685 -3.02364,-9.929299 -2.78565,-6.918564 -4.19965,-10.678422 2.15577,-8.285794 5.73087,2.157506 15.94831,8.874599 20.56071,14.39578 5.12969,6.140395 3.75521,10.355212 2.95389,15.765439 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 186.72022,69.08036 A 29.860117,33.639881 0 0 1 156.86011,102.72024 29.860117,33.639881 0 0 1 126.99999,69.08036 29.860117,33.639881 0 0 1 156.86011,35.440479 29.860117,33.639881 0 0 1 186.72022,69.08036 Z" + inkscape:connector-curvature="0" /> + <path + id="path01" + d="m 172.25466,77.532893 c -0.70122,3.292112 -1.98827,6.993694 -4.1988,8.480626 -2.49769,1.680088 -7.23763,1.692123 -14.20355,0.02223 -6.89939,-1.653942 -13.44271,-4.418104 -16.21117,-6.984107 -2.84598,-2.637849 -1.4848,-4.527739 -0.56675,-7.616419 0.92146,-3.100117 0.53235,-7.780509 1.41496,-11.508273 0.9237,-3.901291 4.02495,-5.244381 11.31945,-3.109419 6.83131,1.999396 15.06688,6.409442 18.99501,10.011753 4.16666,3.82105 4.22061,7.089698 3.45085,10.703606 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 198.81547,66.056549 A 44.601189,23.056549 0 0 1 154.21428,89.113098 44.601189,23.056549 0 0 1 109.61309,66.056549 44.601189,23.056549 0 0 1 154.21428,43 44.601189,23.056549 0 0 1 198.81547,66.056549 Z" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/MeasureSegments_multi_mm_1_0_2.svg b/testfiles/lpe_tests/MeasureSegments_multi_mm_1_0_2.svg new file mode 100644 index 0000000..6fedb6e --- /dev/null +++ b/testfiles/lpe_tests/MeasureSegments_multi_mm_1_0_2.svg @@ -0,0 +1,782 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + inkscape:test-threshold="0.4" + sodipodi:docname="1.svg"> + <style + id="style837"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <inkscape:path-effect + effect="measure_segments" + id="path-effect950" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> +Display and position dimension lines and labels + +<b><big>Projection</big></b> +Show a line with measurements based on the selected items + +<b><big>Options</big></b> +Options for color, precision, label formatting and display + +<b><big>Tips</big></b> +<b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. +<b><i>Blacklists:</i></b> allow to hide some segments or projection steps. +<b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. +<b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <inkscape:path-effect + effect="measure_segments" + id="path-effect910" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="20" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="20" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="true" + arrows_outside="true" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="true" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> +Display and position dimension lines and labels + +<b><big>Projection</big></b> +Show a line with measurements based on the selected items + +<b><big>Options</big></b> +Options for color, precision, label formatting and display + +<b><big>Tips</big></b> +<b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. +<b><i>Blacklists:</i></b> allow to hide some segments or projection steps. +<b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. +<b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <inkscape:path-effect + effect="measure_segments" + id="path-effect835" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#0000c9ff" + fontbutton="Sans 10" + precision="3" + fix_overlaps="0" + position="20" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="20" + line_width="0.25" + scale="3" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="true" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="true" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> +Display and position dimension lines and labels + +<b><big>Projection</big></b> +Show a line with measurements based on the selected items + +<b><big>Options</big></b> +Options for color, precision, label formatting and display + +<b><big>Tips</big></b> +<b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. +<b><i>Blacklists:</i></b> allow to hide some segments or projection steps. +<b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. +<b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." + coloropacity_opacity_LPE="1" /> + <marker + id="ArrowDIN-start" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDIN-start" + orient="auto" + refX="0.0" + refY="0.0" + sodipodi:insensitive="true"> + <path + d="M -8,0 8,-2.11 8,2.11 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDIN-start_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDIN-end" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDIN-end" + orient="auto" + refX="0.0" + refY="0.0" + sodipodi:insensitive="true"> + <path + d="M 8,0 -8,2.11 -8,-2.11 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDIN-end_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDINout-start" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDINout-start" + orient="auto" + refX="0.0" + refY="0.0" + sodipodi:insensitive="true"> + <path + d="M 0,0 -16,2.11 -16,0.5 -26,0.5 -26,-0.5 -16,-0.5 -16,-2.11 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDINout-start_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDINout-end" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDINout-end" + orient="auto" + refX="0.0" + refY="0.0" + sodipodi:insensitive="true"> + <path + d="M 0,0 16,-2.11 16,-0.5 26,-0.5 26,0.5 16,0.5 16,2.11 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDINout-end_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="387.14286" + inkscape:cy="557.14286" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="117.99672" + height="83.999763" + x="26.071312" + y="48.204327" + inkscape:path-effect="#path-effect835" + d="M 26.071312,48.204327 H 144.06803 V 132.20409 H 26.071312 Z" + sodipodi:type="rect" /> + <path + id="rect907" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 49.131645,212.60603 105.650385,-34.72176 48.3026,34.72176 66.48939,70.9784 -66.48939,44.07975 H 49.131645 Z" + sodipodi:nodetypes="ccccccc" + inkscape:path-effect="#path-effect910" + inkscape:original-d="m 49.131645,212.60603 105.650385,-34.72176 48.3026,34.72176 66.48939,70.9784 -66.48939,44.07975 H 49.131645 Z" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M -141.45175,-105.3816 -60.684094,102.56027 154.62064,-61.518024 -15.149269,-100.53631 -27.133264,5.396173 67.63033,-48.095577" + id="path948" + inkscape:path-effect="#path-effect950" + inkscape:original-d="M -141.45175,-105.3816 -60.684094,102.56027 154.62064,-61.518024 -15.149269,-100.53631 -27.133264,5.396173 67.63033,-48.095577" /> + </g> + <path + id="infoline-on-start-0-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 26.071312,48.204327 60.213448,82.346462" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="74.623274" + y="69.615438" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:3.52778px"><tspan + sodipodi:role="line" + id="tspan845">353.990mm</tspan></text> + <path + id="infoline-on-end-0-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 144.06803,48.204327 109.9259,82.346462" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-0-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 48.071312,68.204327 h 24.70848 m 24.579759,0 h 24.708479" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 144.06803,48.204327 109.9259,82.346462" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="115.02758" + y="90.204208" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:3.52778px" + transform="rotate(-90,125.47914,90.204208)"><tspan + sodipodi:role="line" + id="tspan851">251.999mm</tspan></text> + <path + id="infoline-on-end-1-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 144.06803,132.20409 109.9259,98.061954" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-1-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 124.06803,70.204327 v 7.703922 m 0,24.591921 v 7.70392" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 144.06803,132.20409 109.9259,98.061954" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="74.623274" + y="113.6152" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:3.52778px"><tspan + sodipodi:role="line" + id="tspan857">353.990mm</tspan></text> + <path + id="infoline-on-end-2-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 26.071312,132.20409 60.213448,98.061954" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-2-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="M 122.06803,112.20409 H 97.359551 m -24.579759,0 h -24.70848" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 26.071312,132.20409 60.213448,98.061954" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="37.030858" + y="90.204208" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:3.52778px" + transform="rotate(-90,47.482423,90.204208)"><tspan + sodipodi:role="line" + id="tspan863">251.999mm</tspan></text> + <path + id="infoline-on-end-3-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 26.071312,48.204327 60.213448,82.346462" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-3-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 46.071312,110.20409 v -7.70392 m 0,-24.591921 v -7.703922" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-0-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="M 49.131645,212.60603 36.642896,174.60562" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="83.78686" + y="177.58552" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-18.192992,96.153038,177.58552)"><tspan + sodipodi:role="line" + id="tspan914">[0] 111.21mm</tspan></text> + <path + id="infoline-on-end-0-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="M 154.78203,177.88427 142.29328,139.88386" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-0-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 42.887271,193.60583 39.00402,-12.81859 m 27.642339,-9.08459 39.00403,-12.81858" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 154.78203,177.88427 23.34733,-32.47926" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="178.53942" + y="180.15132" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(35.710028,189.78335,180.15132)"><tspan + sodipodi:role="line" + id="tspan920">[1] 59.49mm</tspan></text> + <path + id="infoline-on-end-1-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 203.08463,212.60603 23.34733,-32.47926" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-1-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 166.4557,161.64464 13.41028,9.63982 m 21.48204,15.44212 13.41028,9.63982" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 203.08463,212.60603 29.19233,-27.34607" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="238.65171" + y="235.3869" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(46.870329,249.89565,235.3869)"><tspan + sodipodi:role="line" + id="tspan926">[2] 97.26mm</tspan></text> + <path + id="infoline-on-end-2-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 269.57402,283.58443 29.19233,-27.34607" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-2-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 217.6808,198.93299 24.20124,25.83518 m 18.08691,19.30805 24.20124,25.83517" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 269.57402,283.58443 22.10236,33.33895" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="236.91629" + y="323.4699" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-33.542753,248.16023,323.4699)"><tspan + sodipodi:role="line" + id="tspan932">[3] 79.77mm</tspan></text> + <path + id="infoline-on-end-3-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 203.08463,327.66418 22.10236,33.33895" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-3-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 280.6252,300.2539 -22.21937,14.73054 m -22.05065,14.61868 -22.21937,14.73053" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-4-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 203.08463,327.66418 v 40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-4-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="113.74196" + y="349.07529" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px"><tspan + sodipodi:role="line" + id="tspan938">[4] 153.95mm</tspan></text> + <path + id="infoline-on-end-4-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 49.131645,327.66418 v 40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-4-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 203.08463,347.66418 h -62.42805 m -29.09689,0 H 49.131645" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-5-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 49.131645,327.66418 h -40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-5-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="18.176578" + y="270.13511" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-90,30.542756,270.1351)"><tspan + sodipodi:role="line" + id="tspan944">[5] 115.06mm</tspan></text> + <path + id="infoline-on-end-5-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 49.131645,212.60603 h -40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-5-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 29.131645,327.66418 v -42.98063 m 0,-29.09689 v -42.98063" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-0-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -141.45175,-105.3816 6.52508,-2.53444" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="-108.25485" + y="-5.807268" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(68.773104,-98.925524,-5.807268)"><tspan + sodipodi:role="line" + id="tspan954">223.08mm</tspan></text> + <path + id="infoline-on-end-0-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -60.684094,102.56027 2.797032,-9.929801" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-0-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="m -136.06686,-105.3276 34.48283,88.778403 m 7.947756,20.4620384 34.482828,88.7784056" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -60.684094,102.56027 2.797032,-9.929801" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="33.866681" + y="18.883627" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-37.310109,43.196006,18.883627)"><tspan + sodipodi:role="line" + id="tspan960">270.70mm</tspan></text> + <path + id="infoline-on-end-1-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 154.62064,-61.518024 -13.46489,2.907102" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-1-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="M -56.838588,93.343297 33.611005,24.413949 M 51.070376,11.108604 141.51997,-57.820744" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 154.62064,-61.518024 -13.46489,2.907102" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="56.56926" + y="-75.345639" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(12.943535,65.833989,-75.345639)"><tspan + sodipodi:role="line" + id="tspan966">174.20mm</tspan></text> + <path + id="infoline-on-end-2-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -15.149269,-100.53631 5.494441,7.759774" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-2-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="M 141.16152,-59.480983 76.772799,-74.279469 M 55.527331,-79.162323 -8.8613908,-93.960809" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -15.149269,-100.53631 5.494441,7.759774" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="-23.799987" + y="-48.931375" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-83.545649,-14.535258,-48.931375)"><tspan + sodipodi:role="line" + id="tspan972">106.61mm</tspan></text> + <path + id="infoline-on-end-3-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -27.133264,5.396173 7.173016,-10.8350516" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-3-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="m -11.035396,-92.421467 -3.676779,32.500871 m -2.450501,21.661192 -3.676778,32.5008707" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-4-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -27.133264,5.396173 7.173016,-10.8350516" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-4-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="13.483035" + y="-26.881641" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:3.52778px" + transform="rotate(-29.443674,22.747764,-26.881641)"><tspan + sodipodi:role="line" + id="tspan978">108.82mm</tspan></text> + <path + id="infoline-on-end-4-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 67.63033,-48.095577 -3.440974,-6.095876" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-4-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="M -19.322598,-4.7543452 12.562236,-22.752561 m 18.983742,-10.715862 31.884835,-17.998215" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.25;stroke:#000000;stroke-opacity:1" /> +</svg> diff --git a/testfiles/lpe_tests/MeasureSegments_multi_px_1_0_2.svg b/testfiles/lpe_tests/MeasureSegments_multi_px_1_0_2.svg new file mode 100644 index 0000000..bc9b4bb --- /dev/null +++ b/testfiles/lpe_tests/MeasureSegments_multi_px_1_0_2.svg @@ -0,0 +1,748 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870, 2021-01-15)" + inkscape:test-threshold="1.4" + sodipodi:docname="MeasureSegments_multi_px_1_0_2.svg"> + <style + id="style837"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <inkscape:path-effect + effect="measure_segments" + id="path-effect950" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> Display and position dimension lines and labels <b><big>Projection</big></b> Show a line with measurements based on the selected items <b><big>Options</big></b> Options for color, precision, label formatting and display <b><big>Tips</big></b> <b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. <b><i>Blacklists:</i></b> allow to hide some segments or projection steps. <b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. <b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <inkscape:path-effect + effect="measure_segments" + id="path-effect910" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="20" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="20" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="true" + arrows_outside="true" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="true" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> Display and position dimension lines and labels <b><big>Projection</big></b> Show a line with measurements based on the selected items <b><big>Options</big></b> Options for color, precision, label formatting and display <b><big>Tips</big></b> <b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. <b><i>Blacklists:</i></b> allow to hide some segments or projection steps. <b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. <b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <inkscape:path-effect + effect="measure_segments" + id="path-effect835" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#0000c9ff" + fontbutton="Sans 10" + precision="3" + fix_overlaps="0" + position="20" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="20" + line_width="0.25" + scale="3" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="true" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="true" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> Display and position dimension lines and labels <b><big>Projection</big></b> Show a line with measurements based on the selected items <b><big>Options</big></b> Options for color, precision, label formatting and display <b><big>Tips</big></b> <b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. <b><i>Blacklists:</i></b> allow to hide some segments or projection steps. <b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. <b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." + coloropacity_opacity_LPE="1" /> + <marker + id="ArrowDIN-start" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDIN-start" + orient="auto" + refX="0" + refY="0" + sodipodi:insensitive="true"> + <path + d="M -8,0 8,-2.11 v 4.22 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDIN-start_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDIN-end" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDIN-end" + orient="auto" + refX="0" + refY="0" + sodipodi:insensitive="true"> + <path + d="M 8,0 -8,2.11 v -4.22 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDIN-end_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDINout-start" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDINout-start" + orient="auto" + refX="0" + refY="0" + sodipodi:insensitive="true"> + <path + d="M 0,0 -16,2.11 V 0.5 h -10 v -1 h 10 v -1.61 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDINout-start_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + <marker + id="ArrowDINout-end" + class="rect833 path-effect835 measure-arrow-marker" + inkscape:stockid="ArrowDINout-end" + orient="auto" + refX="0" + refY="0" + sodipodi:insensitive="true"> + <path + d="m 0,0 16,-2.11 v 1.61 h 10 v 1 H 16 v 1.61 z" + class="rect833 path-effect835 measure-arrow" + id="ArrowDINout-end_path" + style="fill:context-stroke;;fill-opacity:1;stroke:none" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.49497475" + inkscape:cx="303.8775" + inkscape:cy="438.65852" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="90.467796" + height="65.625313" + x="26.071312" + y="48.204327" + inkscape:path-effect="#path-effect835" + d="M 26.071312,48.204327 H 116.53911 V 113.82964 H 26.071312 Z" + sodipodi:type="rect" + transform="matrix(2.7981986,0,0,3.4077623,176.3016,88.78988)" /> + <path + id="rect907" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 49.131645,212.60603 110.191775,-24.03945 43.76121,24.03945 66.48939,70.9784 -66.48939,44.07975 H 49.131645 Z" + sodipodi:nodetypes="ccccccc" + inkscape:path-effect="#path-effect910" + inkscape:original-d="m 49.131645,212.60603 110.191775,-24.03945 43.76121,24.03945 66.48939,70.9784 -66.48939,44.07975 H 49.131645 Z" + transform="matrix(2.0312394,0,0,2.1762641,197.80309,161.62818)" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M -137.93076,-59.908033 -60.684094,102.56027 154.62064,-61.518024 9.0345918,-129.84185 -27.133264,5.396173 62.048422,-30.827297" + id="path948" + inkscape:path-effect="#path-effect950" + inkscape:original-d="M -137.93076,-59.908033 -60.684094,102.56027 154.62064,-61.518024 9.0345918,-129.84185 -27.133264,5.396173 62.048422,-30.827297" + transform="matrix(1.976164,0,0,2.1463903,139.40983,154.47864)" + sodipodi:nodetypes="cccccc" /> + </g> + <path + id="infoline-on-start-0-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="m 249.25431,253.05877 34.14213,34.14213" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="336.57003" + y="278.3921" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:13.3333px"><tspan + sodipodi:role="line" + id="tspan845">200.935mm</tspan></text> + <path + id="infoline-on-end-0-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 502.40117,253.05877 468.25903,287.2009" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-0-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 276.81336,273.05877 h 52.82884 m 92.37108,0 h 52.82883" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 502.40117,253.05877 468.25903,287.2009" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="448.47679" + y="364.8765" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:13.3333px" + transform="rotate(-90,487.7345,364.8765)"><tspan + sodipodi:role="line" + id="tspan851">177.511mm</tspan></text> + <path + id="infoline-on-end-1-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 502.40117,476.69423 468.25903,442.5521" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-1-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 482.40117,280.61782 v 38.07314 m 0,92.37108 v 38.07314" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 502.40117,476.69423 468.25903,442.5521" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="336.57003" + y="462.02757" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:13.3333px"><tspan + sodipodi:role="line" + id="tspan857">200.935mm</tspan></text> + <path + id="infoline-on-end-2-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 249.25431,476.69423 283.39644,442.5521" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-2-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 474.84211,456.69423 h -52.82883 m -92.37108,0 h -52.82884" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="M 249.25431,476.69423 283.39644,442.5521" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect835" + class="rect833 path-effect835 measure-label" + sodipodi:insensitive="true" + x="235.32993" + y="364.8765" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#0000c9;fill-opacity:1;font-size:13.3333px" + transform="rotate(-90,274.58764,364.8765)"><tspan + sodipodi:role="line" + id="tspan863">177.511mm</tspan></text> + <path + id="infoline-on-end-3-path-effect835" + class="rect833 path-effect835 measure-helper-line measure-line" + d="m 249.25431,253.05877 34.14213,34.14213" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-3-path-effect835" + class="rect833 path-effect835 measure-DIM-line measure-line" + d="m 269.25431,449.13518 v -38.07314 m 0,-92.37108 v -38.07314" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#0000c9;stroke-opacity:1" /> + <path + id="infoline-on-start-0-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 297.60122,624.31505 -9.10406,-38.95017" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="363.67937" + y="583.87522" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-13.155907,406.176,583.87522)"><tspan + sodipodi:role="line" + id="tspan914">[0] 60.82mm</tspan></text> + <path + id="infoline-on-end-0-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 521.4271,571.99886 -9.10406,-38.95018" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-0-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 293.04919,604.83996 63.22907,-14.77891 m 97.36774,-22.75836 63.22907,-14.77892" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 521.4271,571.99886 20.28894,-34.47258" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="530.81449" + y="585.51701" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(30.479073,573.31112,585.51701)"><tspan + sodipodi:role="line" + id="tspan920">[1] 27.29mm</tspan></text> + <path + id="infoline-on-end-1-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 610.31659,624.31505 20.28895,-34.47258" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-1-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 531.57157,554.76257 1.35743,0.79892 m 86.17463,50.71835 1.35743,0.79892" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="display:none;marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 610.31659,624.31505 30.11306,-26.32876" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="646.38934" + y="691.89504" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(48.835806,688.88598,691.89504)"><tspan + sodipodi:role="line" + id="tspan926">[2] 54.29mm</tspan></text> + <path + id="infoline-on-end-2-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 745.37246,778.78279 30.11306,-26.32876" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-2-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 625.37312,611.15067 34.61958,39.59553 m 65.81671,75.27668 34.61958,39.59553" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 745.37246,778.78279 23.16322,32.61082" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="650.01793" + y="847.4009" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-35.385894,692.51457,847.4009)"><tspan + sodipodi:role="line" + id="tspan932">[3] 43.83mm</tspan></text> + <path + id="infoline-on-end-3-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 610.31659,874.71197 23.16322,32.61082" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-3-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 756.95407,795.0882 -26.76764,19.01286 m -81.52059,57.90346 -26.76764,19.01286" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-4-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 610.31659,874.71197 v 40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-4-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="411.46227" + y="900.04531" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px"><tspan + sodipodi:role="line" + id="tspan938">[4] 82.74mm</tspan></text> + <path + id="infoline-on-end-4-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 297.60122,874.71197 v 40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-4-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="M 610.31659,894.71197 H 503.95495 m -99.99209,0 H 297.60122" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-5-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 297.60122,874.71197 h -40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-5-path-effect910" + class="rect907 path-effect910 measure-label" + sodipodi:insensitive="true" + x="240.43792" + y="749.51351" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-90,282.93456,749.51351)"><tspan + sodipodi:role="line" + id="tspan944">[5] 66.25mm</tspan></text> + <path + id="infoline-on-end-5-path-effect910" + class="rect907 path-effect910 measure-helper-line measure-line" + d="m 297.60122,624.31505 h -40" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-5-path-effect910" + class="rect907 path-effect910 measure-DIM-line measure-line" + d="m 277.60122,874.71197 v -75.20241 m 0,-99.99209 v -75.20242" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-0-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m -133.16397,25.892619 6.41251,-2.807073" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-0-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="-93.489244" + y="197.34875" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(66.358638,-58.473056,197.34875)"><tspan + sodipodi:role="line" + id="tspan954">100.72mm</tspan></text> + <path + id="infoline-on-end-0-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 19.488108,374.61301 2.38337,-10.0263" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-0-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="m -125.55234,30.812217 55.445177,126.659693 m 33.039665,75.47624 55.445181,126.65969" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-1-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 19.488108,374.61301 2.38337,-10.0263" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-1-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="197.0472" + y="199.09298" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-39.615226,232.06339,199.09298)"><tspan + sodipodi:role="line" + id="tspan960">146.14mm</tspan></text> + <path + id="infoline-on-end-1-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 444.96557,22.43695 -11.03701,1.219086" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-1-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="M 27.232015,361.71262 196.928,221.25192 M 260.39742,168.71703 430.0934,28.256333" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-2-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 444.96557,22.43695 -11.03701,1.219086" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-2-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="264.75454" + y="-41.97728" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(27.009194,295.8417,-41.97728)"><tspan + sodipodi:role="line" + id="tspan966">85.44mm</tspan></text> + <path + id="infoline-on-end-2-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 157.26367,-124.21265 4.17925,9.13711" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-2-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="M 429.18185,20.003643 330.84798,-30.119844 M 265.67951,-63.338009 167.34564,-113.4615" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-3-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 157.26367,-124.21265 4.17925,9.13711" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-3-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="100.96782" + y="21.518703" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-76.167319,132.02243,21.518703)"><tspan + sodipodi:role="line" + id="tspan972">79.10mm</tspan></text> + <path + id="infoline-on-end-3-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 85.79005,166.06093 8.572416,-10.21126" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-3-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="m 158.80375,-109.55449 -23.22496,94.322806 M 118.10876,55.718824 94.8838,150.04163" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-on-start-4-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 85.79005,166.06093 8.572416,-10.21126" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <text + xml:space="preserve" + id="text-on-4-path-effect950" + class="path948 path-effect950 measure-label" + sodipodi:insensitive="true" + x="147.70297" + y="125.43862" + style="font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;fill-opacity:1;font-size:13.3333px" + transform="rotate(-23.805346,178.69573,125.43862)"><tspan + sodipodi:role="line" + id="tspan978">50.97mm</tspan></text> + <path + id="infoline-on-end-4-path-effect950" + class="path948 path-effect950 measure-helper-line measure-line" + d="m 262.02769,88.311229 -2.82542,-6.404454" + sodipodi:insensitive="true" + inkscape:label="dinhelpline" + style="stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> + <path + id="infoline-4-path-effect950" + class="path948 path-effect950 measure-DIM-line measure-line" + d="m 99.992472,154.33039 43.190608,-19.05414 m 66.7199,-29.43442 43.19061,-19.054145" + sodipodi:insensitive="true" + inkscape:label="dinline" + style="marker-start:url(#ArrowDIN-start);marker-end:url(#ArrowDIN-end);stroke-width:0.944882;stroke:#000000;stroke-opacity:1" /> +</svg> diff --git a/testfiles/lpe_tests/MirrorSymmetry_multi_mm_1_0_2.svg b/testfiles/lpe_tests/MirrorSymmetry_multi_mm_1_0_2.svg new file mode 100644 index 0000000..8a4dcda --- /dev/null +++ b/testfiles/lpe_tests/MirrorSymmetry_multi_mm_1_0_2.svg @@ -0,0 +1,301 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <metadata + id="metadata904"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview902" + showgrid="false" + inkscape:zoom="0.3648043" + inkscape:cx="-95.118864" + inkscape:cy="987.24757" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="109.61309,221.40475" + end_point="109.61309,268.27381" + center_point="109.61309,244.83928" + id="path-effect43" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="97.517858,216.1131" + end_point="97.517858,262.98214" + center_point="97.517858,239.54762" + id="path-effect41" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect907" + is_visible="true" + bendpath="m 145.04523,85.135967 c 51.89028,-2.813269 94.40779,-21.961914 160.51335,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="225.3019,28.0629" + end_point="225.3019,155.81617" + center_point="225.3019,91.939535" + id="path-effect905" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="213.89975,25.039084" + end_point="213.89975,152.79237" + center_point="213.89975,88.915727" + id="path-effect903" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="109.61309,221.40475" + end_point="109.61309,268.27381" + center_point="109.61309,244.83928" + id="path-effect834" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="true" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="97.517858,216.1131" + end_point="97.517858,262.98214" + center_point="97.517858,239.54762" + id="path-effect832" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="83.91071,19.565481" + end_point="83.91071,92.892857" + center_point="83.91071,56.229169" + id="path-effect827" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="78.619044,19.565481" + end_point="78.619044,92.892857" + center_point="78.619044,56.229169" + id="path-effect825" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="75.595235,30.148813" + end_point="65.011901,98.184523" + center_point="70.303568,64.166668" + id="path-effect823" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="63.499996,22.589289" + end_point="63.499996,95.916667" + center_point="63.499996,59.252978" + id="path-effect819" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="mirror-path-effect834" + d="m 109.61309,237.85835 c -3.6389,0.44285 -7.62152,0.24737 -12.095232,-0.86013 -23.91655,5.92073 -33.797799,-14.22411 -52.160715,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.88217,-15.19082 52.160715,-14.31565 4.109532,-0.19676 8.131782,0.15923 12.095232,0.88767 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(-1,0,0,1,289.22967,87.301346)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 45.357143,218.38095 c 18.362916,4.39316 28.244165,24.538 52.160715,18.61727 23.916552,5.92073 33.797802,-14.22411 52.160712,-18.61727 l 0,46.86905 C 132.34833,260.11929 115.7964,250.05918 97.517858,250.93435 79.239313,250.05918 62.68739,260.11929 45.357143,265.25 Z m 128.511897,0 c -18.36292,4.39316 -28.24417,24.538 -52.16072,18.61727 -23.916548,5.92073 -33.797797,-14.22411 -52.160713,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.882173,-15.19082 52.160713,-14.31565 18.27855,-0.87517 34.83047,9.18494 52.16072,14.31565 z" + id="path14" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect41;#path-effect43" + inkscape:original-d="m 45.357143,218.38095 c 25.001478,5.98138 34.280178,41.16221 84.666667,0 V 265.25 c -32.626792,-27.89561 -57.704794,-7.98221 -84.666667,0 z" + transform="translate(-99.6218,76.255794)" /> + <path + d="m 91.470234,57.741074 c 0,20.248796 -18.445601,36.663688 -41.199402,36.663688 -22.753801,0 -41.1994018,-16.414892 -41.1994018,-36.663688 0,-20.248797 18.4456008,-36.663689 41.1994018,-36.663689 22.753801,0 41.199402,16.414892 41.199402,36.663689 z m -55.940476,0 c 0,20.248796 18.445601,36.663688 41.199402,36.663688 22.753801,0 41.1994,-16.414892 41.1994,-36.663688 0,-20.248797 -18.445599,-36.663689 -41.1994,-36.663689 -22.753801,0 -41.199402,16.414892 -41.199402,36.663689 z" + sodipodi:ry="36.663689" + sodipodi:rx="41.199402" + sodipodi:cy="57.741074" + sodipodi:cx="50.270832" + sodipodi:type="arc" + inkscape:path-effect="#path-effect819" + id="path13" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(-72.855159,75.729492)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path12" + transform="translate(-68.305237,161.42467)" + inkscape:path-effect="#path-effect823;#path-effect825;#path-effect827" + sodipodi:type="arc" + sodipodi:cx="50.270832" + sodipodi:cy="57.741074" + sodipodi:rx="41.199402" + sodipodi:ry="36.663689" + d="m 91.470234,57.741074 c 0,10.474759 -4.936083,19.923557 -12.85119,26.60479 -7.915107,-6.681233 -12.85119,-16.130031 -12.85119,-26.60479 0,-10.474759 4.936083,-19.923557 12.85119,-26.604791 7.915107,6.681234 12.85119,16.130032 12.85119,26.604791 z m -15.119048,0 c 0,10.474759 4.936083,19.923557 12.85119,26.60479 7.915107,-6.681233 12.851194,-16.130031 12.851194,-26.60479 0,-10.474759 -4.936087,-19.923557 -12.851194,-26.604791 -7.915107,6.681234 -12.85119,16.130032 -12.85119,26.604791 z" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 109.61309,237.85835 c -3.6389,0.44285 -7.62152,0.24737 -12.095232,-0.86013 -23.91655,5.92073 -33.797799,-14.22411 -52.160715,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.88217,-15.19082 52.160715,-14.31565 4.109532,-0.19676 8.131782,0.15923 12.095232,0.88767 z" + id="path11" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect832;#path-effect834" + inkscape:original-d="m 45.357143,218.38095 c 25.001478,5.98138 34.280178,41.16221 84.666667,0 V 265.25 c -32.626792,-27.89561 -57.704794,-7.98221 -84.666667,0 z" + transform="translate(70.003493,87.301346)" /> + <g + id="g10" + transform="translate(-103.96459,113.26101)" + inkscape:path-effect="#path-effect903;#path-effect905;#path-effect907"> + <g + transform="translate(18.142857,-30.994048)" + id="g09"> + <path + inkscape:connector-curvature="0" + id="path08" + d="m 196.96375,117.30813 c -3.4773,1.93975 -7.332,3.28955 -11.51248,3.87441 -9.02202,1.2622 -17.96771,-1.29223 -24.94741,-6.7292 -7.01469,-5.46423 -11.74545,-13.60099 -13.01333,-23.275048 -1.24945,-9.533499 1.07382,-18.876067 5.83615,-25.932311 4.81072,-7.127951 12.37926,-12.345875 22.41598,-13.722142 4.63487,-0.635547 9.35207,-0.3808 13.86321,0.662333 2.11758,-1.02508 4.39964,-1.871815 6.83106,-2.511112 2.37257,-0.624108 4.86418,-1.042451 7.44922,-1.227839 11.44968,-0.821124 22.20573,3.082636 29.55897,9.739272 7.42275,6.719547 10.99042,15.768951 10.13681,25.497234 -0.84009,9.574157 -5.76029,18.129233 -11.8964,24.165293 -6.21588,6.11452 -14.08305,10.12728 -22.82331,10.74543 -2.00665,0.14193 -3.98722,0.10205 -5.93534,-0.10725 -2.02305,-0.21529 -4.01644,-0.61184 -5.96313,-1.17907 z m 22.13427,-1.59985 c 3.65306,1.4431 7.51743,2.27629 11.5451,2.40351 3.51573,0.11106 6.91215,-0.32273 10.17724,-1.21954 0,0 0,0 0,0 12.3595,-3.41284 25.10953,-14.43101 28.26503,-29.38942 3.19719,-15.155994 -5.45921,-30.747306 -22.38032,-36.99644 0,10e-7 0,-1e-6 0,-1e-6 -4.30419,-1.554729 -8.98332,-2.479871 -13.82899,-2.637255 -5.5549,-0.180418 -10.78924,0.664352 -15.46121,2.315552 -4.75365,-1.427217 -9.90374,-2.022889 -15.15445,-1.61621 -2.00952,0.155642 -3.96199,0.452557 -5.84506,0.877845 0,0 -1e-5,1e-6 -1e-5,1e-6 -9.60449,2.164106 -16.88858,7.473129 -21.41957,14.348034 -4.51363,6.848557 -6.40039,15.392404 -5.09617,24.108598 1.31281,8.773564 5.62853,16.261936 11.623,21.664306 5.98793,5.39647 13.56738,8.65623 21.42584,9.14868 0,0 0,0 0,0 1.53221,0.0974 3.08279,0.0898 4.64891,-0.0288 4.08393,-0.30935 7.92829,-1.34778 11.50066,-2.97882 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 182.46788,94.110836 c -6.15194,-1.601735 -12.28479,-3.126483 -18.2964,-4.67315 -4.70179,4.048847 -9.31923,8.079757 -13.98686,12.037744 -0.27408,-6.163258 -0.56655,-12.325657 -0.87472,-18.487393 -5.04582,-3.27459 -9.89297,-6.626659 -14.42021,-10.120449 5.09237,-1.899938 10.33221,-3.991699 15.80089,-6.178085 1.3355,-5.991077 2.65814,-11.991602 4.01083,-18.00021 3.83485,4.778576 7.79853,9.536187 11.81704,14.295729 6.35034,-0.548122 12.98854,-1.099784 19.9047,-1.540845 -3.96063,5.162527 -7.65789,10.357738 -11.20398,15.564642 2.44044,5.693287 4.86324,11.392717 7.24871,17.102017 z m 23.66146,-2.6115 c 5.8745,-2.867646 11.96063,-5.543043 18.29344,-7.963156 5.82012,3.303404 11.4388,6.818762 16.78265,10.552985 -0.10236,-6.172837 -0.26071,-12.346725 -0.47378,-18.521177 1.3021,-0.78631 2.62124,-1.561469 3.95795,-2.324941 4.67125,-2.653869 9.50032,-5.161086 14.46777,-7.516365 -4.38985,-1.508801 -8.86753,-2.899289 -13.43252,-4.162319 -2.87535,-0.776826 -5.7565,-1.501923 -8.64037,-2.177313 -2.5671,-5.868862 -5.32369,-11.698809 -8.24873,-17.484192 -4.276,5.221335 -8.25931,10.542671 -11.98249,15.942013 -6.61377,0.524772 -13.09415,1.289764 -19.433,2.256345 -0.86402,0.130796 -1.72327,0.263998 -2.57779,0.399411 0.94567,0.760271 1.8897,1.52343 2.83142,2.289743 4.22478,3.402049 8.35583,6.89556 12.3618,10.4771 -1.41851,6.067815 -2.71762,12.146671 -3.90635,18.231866 z m 24.55757,-0.602969 c 4.15951,-1.501989 8.424,-2.884852 12.80391,-4.129797 2.17379,-0.612791 4.3669,-1.19128 6.57772,-1.735493 5.46089,3.981 10.59354,8.166859 15.41686,12.516363 0.6473,-6.139902 1.24359,-12.287384 1.78822,-18.441918 6.19693,-2.807543 12.61459,-5.370057 19.2117,-7.676309 -6.70033,-3.22471 -13.64367,-6.180009 -20.82784,-8.82642 -1.82213,-6.137466 -3.86044,-12.26169 -6.12442,-18.363206 -4.7051,4.417269 -9.20427,8.957183 -13.47898,13.610732 -0.2342,0.255551 -0.46755,0.511425 -0.70007,0.767618 -7.88127,-0.253592 -15.60882,-0.127866 -23.17069,0.320313 5.02735,4.612154 9.84889,9.364182 14.40706,14.249777 -2.11353,5.876374 -4.07835,11.780721 -5.90347,17.70834 z m -24.34926,0.587586 c -2.03348,-0.644069 -4.07871,-1.264898 -6.13328,-1.863161 -4.22654,-1.239102 -8.46888,-2.400073 -12.69579,-3.513155 -5.06854,3.966384 -9.91859,8.001303 -14.6847,12.049768 -0.35024,-6.165958 -0.6943,-12.332438 -1.0295,-18.49963 -5.43604,-3.183233 -10.79993,-6.347999 -15.97045,-9.558541 5.61942,-2.231542 11.45934,-4.529066 17.60111,-6.795377 1.58085,-6.022109 3.24496,-12.044322 5.03524,-18.065273 4.24937,4.785509 8.51039,9.598877 12.70905,14.462997 2.0382,-0.111168 4.10003,-0.210998 6.18525,-0.29676 5.19625,-0.224635 10.45948,-0.313582 15.77815,-0.249348 -4.71967,4.845416 -9.13599,9.813232 -13.29392,14.866968 2.26312,5.795129 4.43262,11.616664 6.49884,17.461512 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(5.855037,20.589994)" + id="g06"> + <path + inkscape:connector-curvature="0" + id="path05" + d="m 214.0524,108.21451 c -4.43851,7.44281 -11.32662,12.78979 -20.81596,14.21257 -9.06573,1.35927 -18.81281,-1.231 -26.37095,-6.71224 -7.66545,-5.55905 -12.69866,-13.73998 -13.65201,-23.473659 -0.93818,-9.578664 2.23205,-18.839937 7.4642,-25.825349 5.27316,-7.040175 12.92194,-12.179279 22.10828,-13.559448 9.66245,-1.4517 19.06218,1.568132 25.88919,7.766054 1.53278,-2.199754 3.33794,-4.194562 5.38838,-5.92491 4.97289,-4.196182 11.39849,-6.810825 18.50815,-6.942085 8.40609,-0.155193 16.00748,3.190966 21.32103,8.702453 6.94209,7.197883 9.58952,17.431607 7.90544,28.289374 -1.65254,10.654518 -7.09464,19.94887 -12.6993,25.7905 -4.42063,4.58221 -9.4658,7.38038 -15.21038,7.51032 -4.90588,0.11097 -9.78136,-1.72016 -14.32536,-5.03916 -1.9026,-1.36125 -3.76257,-2.96799 -5.51071,-4.79442 z m 18.43165,-1.3378 c 4.59228,6.3485 10.23735,10.5723 15.91175,11.59221 0.36011,0.0587 0.72407,0.10522 1.09209,0.13941 5.93672,0.55153 12.20043,-2.28509 17.95691,-7.49347 5.67675,-5.13623 11.12784,-12.917379 13.67496,-22.193541 5.07638,-18.487268 -4.27369,-38.259869 -24.77922,-40.274917 -0.58346,-0.05734 -1.16529,-0.0971 -1.74478,-0.119644 -9.46464,-0.358935 -17.84285,3.820219 -23.34178,10.464359 -4.54269,-4.946156 -10.71509,-8.286172 -17.65733,-9.243964 -2.52378,-0.349426 -5.12719,-0.382912 -7.75673,-0.07509 -9.4102,1.101582 -17.17985,6.300078 -22.23882,13.480193 -5.04472,7.159878 -7.55728,16.492597 -6.15498,26.058525 1.41804,9.673208 6.55655,17.68151 13.55076,23.13424 6.94617,5.41528 15.38988,8.06204 23.02837,7.15134 2.15514,-0.25695 4.15378,-0.78095 6.00475,-1.53706 4.94118,-2.03087 9.14521,-5.95515 12.45405,-11.08259 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path04" + d="m 189.94048,95.384055 c -5.97731,-1.55637 -12.1511,-3.077736 -18.41921,-4.663006 -4.99559,4.018294 -10.20077,7.994586 -15.75011,11.873891 -0.002,-6.172018 -0.0389,-12.342185 -0.10684,-18.510694 -5.48661,-3.371464 -10.89034,-6.853408 -16.08997,-10.510073 6.24346,-1.72297 12.29997,-3.675577 18.25088,-5.760626 1.64174,-5.964328 3.1765,-11.938838 4.64721,-17.922163 3.80175,4.831365 7.71373,9.623766 11.66196,14.400098 6.23897,-0.516266 12.45846,-1.080077 18.64853,-1.577294 -3.37719,5.188004 -6.70193,10.397439 -10.08642,15.607313 2.42288,5.686388 4.8441,11.372663 7.24397,17.062554 z M 232.7399,90.8523 c 4.74593,-2.53896 9.59268,-4.896984 14.57529,-7.011039 1.31768,1.111238 2.60174,2.239925 3.84997,3.38627 2.77426,2.521295 5.41908,5.124321 7.94063,7.795597 0.46007,-6.143256 0.86704,-12.292291 1.22026,-18.44658 4.77498,-3.313103 9.83928,-6.418534 15.15162,-9.30506 -5.39178,-2.565285 -10.94831,-4.896878 -16.66737,-6.955303 -1.21093,-4.640749 -2.55224,-9.272013 -4.0284,-13.889316 -0.41894,-1.308725 -0.84857,-2.615994 -1.28865,-3.921746 -3.8284,5.009138 -7.37579,10.124281 -10.67473,15.323435 -6.12146,0.212591 -12.22599,0.7122 -18.30161,1.44196 4.27417,4.421126 8.31427,8.955032 12.06273,13.595411 -1.40315,5.980596 -2.68006,11.977621 -3.83974,17.986371 z m 18.79171,0.61715 c 4.79655,-1.997053 9.83818,-3.7379 15.08056,-5.223265 3.80534,4.06876 7.34422,8.274211 10.63554,12.575136 1.15079,-6.056132 2.25436,-12.122971 3.31006,-18.19999 5.17535,-2.726932 10.59077,-5.241044 16.20495,-7.531104 -5.1067,-3.139179 -10.38835,-6.088882 -15.84277,-8.80963 -0.85083,-6.101891 -1.89658,-12.210779 -3.14673,-18.317199 -4.38709,4.512019 -8.54473,9.152391 -12.4512,13.910547 -3.89287,-0.342103 -7.78662,-0.561542 -11.67432,-0.652107 -2.20069,-0.05281 -4.40064,-0.06391 -6.59929,-0.03597 2.05845,2.659534 4.02367,5.353461 5.88617,8.080742 1.53485,2.241379 3.00491,4.50319 4.41213,6.782793 -2.0866,5.771909 -4.02672,11.579708 -5.8151,17.420049 z m -39.98926,0.917805 c -5.41659,-1.811662 -11.11691,-3.460875 -16.99879,-5.046547 -4.60273,4.0159 -9.2809,8.076272 -14.1691,12.126125 -0.33014,-6.165797 -0.66981,-12.331122 -1.01634,-18.496165 -5.38988,-3.186316 -10.82342,-6.387166 -16.1794,-9.66679 5.96596,-2.154261 11.81796,-4.412318 17.63739,-6.676978 1.42842,-6.017463 2.84597,-12.035764 4.29559,-18.053537 3.97059,4.767767 7.93424,9.545392 11.81694,14.35577 5.90083,-0.439759 11.78079,-0.795494 17.6313,-0.968312 0.28607,-0.0084 0.57212,-0.0163 0.85813,-0.02378 -0.25448,0.353552 -0.50789,0.707437 -0.76025,1.061642 -3.31702,4.650095 -6.47291,9.357322 -9.55769,14.104839 2.22062,5.744914 4.37458,11.504915 6.44222,17.283729 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(43.054517,-7.050862)" + id="g03"> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 174.70218,116.81999 c -11.57311,-4.05365 -21.90009,-14.92849 -24.06102,-29.478914 -1.07093,-7.210977 0.0286,-14.264984 2.91811,-20.344254 2.89342,-6.087444 7.60858,-11.248789 13.86087,-14.627619 2.39731,0.666735 4.70457,1.583985 6.87474,2.728523 0,0 0,10e-7 0,10e-7 10.48256,5.483671 16.81787,15.799937 17.25703,27.91763 0.43009,11.867271 -4.75214,22.994313 -11.8099,29.837613 0,0 0,0 0,0 -1.54988,1.49407 -3.23142,2.82585 -5.03983,3.96702 z m 20.0904,-1.45521 c 9.66284,-5.30421 18.59201,-17.705344 19.67417,-31.946006 1.11454,-14.66669 -6.89333,-27.746818 -21.33997,-32.902262 -8.38757,3.469032 -14.51871,9.926486 -17.59373,17.709372 -1.95502,4.965118 -2.67323,10.447597 -2.07391,16.10611 0.5992,5.657433 2.44468,10.864146 5.0447,15.392815 4.04442,7.071611 9.96216,12.598681 16.28874,15.639971 z" + id="path02" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="0.69109549" + inkscape:transform-center-y="-1.9962783" + d="m 171.29971,86.705908 c -1.1889,-0.355304 -2.38249,-0.704583 -3.57994,-1.048636 -4.8113,3.91262 -9.49461,7.912225 -14.18448,11.943824 -0.35028,-6.165168 -0.69325,-12.330868 -1.02625,-18.497288 -5.35529,-3.201744 -10.73552,-6.367474 -16.01949,-9.561435 5.75411,-2.251824 11.59849,-4.544081 17.61449,-6.779575 1.54676,-6.011974 3.16601,-12.021192 4.90068,-18.026289 2.93563,3.431855 5.85239,6.882125 8.72346,10.359106 1.77577,-3.535294 3.62578,-7.061706 5.56891,-10.577388 0.27307,-0.490401 0.5478,-0.980453 0.8242,-1.470141 3.14912,5.46544 6.17302,10.98207 9.05066,16.544241 6.70843,0.942757 13.39308,2.137569 20.00016,3.619656 -5.29623,3.851971 -10.28979,7.890927 -15.03007,12.06786 0.87474,6.112395 1.70702,12.228674 2.49558,18.348352 -4.3158,-2.587396 -8.79907,-5.052219 -13.40656,-7.398542 -0.88821,-0.451816 -1.78099,-0.899448 -2.67784,-1.343235 -1.08969,0.601046 -2.17387,1.207749 -3.25351,1.81949 z m 22.71454,-1.640925 c 1.12266,-0.515817 2.25257,-1.023099 3.39003,-1.521336 5.26239,3.24674 10.28212,6.683172 14.98579,10.316207 -0.10131,-6.166319 -0.25807,-12.333518 -0.46902,-18.501113 1.92369,-1.345265 3.88855,-2.662715 5.89706,-3.949865 3.41704,-2.186148 6.94543,-4.282077 10.57485,-6.28498 -3.19664,-1.131618 -6.4422,-2.191065 -9.73641,-3.173483 -3.33291,-0.982686 -6.69228,-1.884521 -10.07128,-2.709976 -2.33954,-5.83044 -4.87336,-11.624935 -7.58044,-17.377837 -2.73596,3.75658 -5.33456,7.558283 -7.80758,11.397138 -2.667,-3.712182 -5.43676,-7.383471 -8.2953,-11.011087 -2.36218,5.873608 -4.54544,11.777788 -6.5686,17.701555 -1.166,0.34541 -2.32633,0.698121 -3.48105,1.057764 -5.22732,1.628974 -10.30009,3.368883 -15.26314,5.166187 5.44735,3.249968 10.86443,6.567653 16.13003,10.017295 0.0205,6.172642 0.0754,12.343186 0.1623,18.511824 0.66348,-0.533832 1.32948,-1.065322 1.99838,-1.594316 4.07732,-3.229852 8.2905,-6.371715 12.6692,-9.389382 1.16228,0.439795 2.31752,0.888211 3.46518,1.345405 z" + id="path01" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/MirrorSymmetry_multi_px_1_0_2.svg b/testfiles/lpe_tests/MirrorSymmetry_multi_px_1_0_2.svg new file mode 100644 index 0000000..8ec801a --- /dev/null +++ b/testfiles/lpe_tests/MirrorSymmetry_multi_px_1_0_2.svg @@ -0,0 +1,301 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <metadata + id="metadata937"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview935" + showgrid="false" + inkscape:zoom="0.3648043" + inkscape:cx="-95.118864" + inkscape:cy="987.24757" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="109.61309,221.40475" + end_point="109.61309,268.27381" + center_point="109.61309,244.83928" + id="path-effect43" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="97.517858,216.1131" + end_point="97.517858,262.98214" + center_point="97.517858,239.54762" + id="path-effect41" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect907" + is_visible="true" + bendpath="m 145.04523,85.135967 c 51.89028,-2.813269 94.40779,-21.961914 160.51335,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="225.3019,28.0629" + end_point="225.3019,155.81617" + center_point="225.3019,91.939535" + id="path-effect905" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="213.89975,25.039084" + end_point="213.89975,152.79237" + center_point="213.89975,88.915727" + id="path-effect903" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="109.61309,221.40475" + end_point="109.61309,268.27381" + center_point="109.61309,244.83928" + id="path-effect834" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="true" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="97.517858,216.1131" + end_point="97.517858,262.98214" + center_point="97.517858,239.54762" + id="path-effect832" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="83.91071,19.565481" + end_point="83.91071,92.892857" + center_point="83.91071,56.229169" + id="path-effect827" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="78.619044,19.565481" + end_point="78.619044,92.892857" + center_point="78.619044,56.229169" + id="path-effect825" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="75.595235,30.148813" + end_point="65.011901,98.184523" + center_point="70.303568,64.166668" + id="path-effect823" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" + lpeversion="1" + split_items="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="63.499996,22.589289" + end_point="63.499996,95.916667" + center_point="63.499996,59.252978" + id="path-effect819" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" + lpeversion="1" + split_items="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="mirror-path-effect834" + d="m 109.61309,237.85835 c -3.6389,0.44285 -7.62152,0.24737 -12.095232,-0.86013 -23.91655,5.92073 -33.797799,-14.22411 -52.160715,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.88217,-15.19082 52.160715,-14.31565 4.109532,-0.19676 8.131782,0.15923 12.095232,0.88767 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(-1,0,0,1,356.42918,79.677423)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 45.357143,218.38095 c 18.362916,4.39316 28.244165,24.538 52.160715,18.61727 23.916552,5.92073 33.797802,-14.22411 52.160712,-18.61727 l 0,46.86905 C 132.34833,260.11929 115.7964,250.05918 97.517858,250.93435 79.239313,250.05918 62.68739,260.11929 45.357143,265.25 Z m 128.511897,0 c -18.36292,4.39316 -28.24417,24.538 -52.16072,18.61727 -23.916548,5.92073 -33.797797,-14.22411 -52.160713,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.882173,-15.19082 52.160713,-14.31565 18.27855,-0.87517 34.83047,9.18494 52.16072,14.31565 z" + id="path14" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect41;#path-effect43" + inkscape:original-d="m 45.357143,218.38095 c 25.001478,5.98138 34.280178,41.16221 84.666667,0 V 265.25 c -32.626792,-27.89561 -57.704794,-7.98221 -84.666667,0 z" + transform="translate(-32.422293,68.631871)" /> + <path + d="m 91.470234,57.741074 c 0,20.248796 -18.445601,36.663688 -41.199402,36.663688 -22.753801,0 -41.1994018,-16.414892 -41.1994018,-36.663688 0,-20.248797 18.4456008,-36.663689 41.1994018,-36.663689 22.753801,0 41.199402,16.414892 41.199402,36.663689 z m -55.940476,0 c 0,20.248796 18.445601,36.663688 41.199402,36.663688 22.753801,0 41.1994,-16.414892 41.1994,-36.663688 0,-20.248797 -18.445599,-36.663689 -41.1994,-36.663689 -22.753801,0 -41.199402,16.414892 -41.199402,36.663689 z" + sodipodi:ry="36.663689" + sodipodi:rx="41.199402" + sodipodi:cy="57.741074" + sodipodi:cx="50.270832" + sodipodi:type="arc" + inkscape:path-effect="#path-effect819" + id="path13" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(-5.6556515,68.105569)" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path12" + transform="translate(-1.1057301,153.80075)" + inkscape:path-effect="#path-effect823;#path-effect825;#path-effect827" + sodipodi:type="arc" + sodipodi:cx="50.270832" + sodipodi:cy="57.741074" + sodipodi:rx="41.199402" + sodipodi:ry="36.663689" + d="m 91.470234,57.741074 c 0,10.474759 -4.936083,19.923557 -12.85119,26.60479 -7.915107,-6.681233 -12.85119,-16.130031 -12.85119,-26.60479 0,-10.474759 4.936083,-19.923557 12.85119,-26.604791 7.915107,6.681234 12.85119,16.130032 12.85119,26.604791 z m -15.119048,0 c 0,10.474759 4.936083,19.923557 12.85119,26.60479 7.915107,-6.681233 12.851194,-16.130031 12.851194,-26.60479 0,-10.474759 -4.936087,-19.923557 -12.851194,-26.604791 -7.915107,6.681234 -12.85119,16.130032 -12.85119,26.604791 z" /> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 109.61309,237.85835 c -3.6389,0.44285 -7.62152,0.24737 -12.095232,-0.86013 -23.91655,5.92073 -33.797799,-14.22411 -52.160715,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.88217,-15.19082 52.160715,-14.31565 4.109532,-0.19676 8.131782,0.15923 12.095232,0.88767 z" + id="path11" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect832;#path-effect834" + inkscape:original-d="m 45.357143,218.38095 c 25.001478,5.98138 34.280178,41.16221 84.666667,0 V 265.25 c -32.626792,-27.89561 -57.704794,-7.98221 -84.666667,0 z" + transform="translate(137.203,79.677423)" /> + <g + id="g10" + transform="translate(-36.765086,105.63709)" + inkscape:path-effect="#path-effect903;#path-effect905;#path-effect907"> + <g + transform="translate(18.142857,-30.994048)" + id="g09"> + <path + inkscape:connector-curvature="0" + id="path08" + d="m 196.96375,117.30813 c -3.4773,1.93975 -7.332,3.28955 -11.51248,3.87441 -9.02202,1.2622 -17.96771,-1.29223 -24.94741,-6.7292 -7.01469,-5.46423 -11.74545,-13.60099 -13.01333,-23.275048 -1.24945,-9.533499 1.07382,-18.876067 5.83615,-25.932311 4.81072,-7.127951 12.37926,-12.345875 22.41598,-13.722142 4.63487,-0.635547 9.35207,-0.3808 13.86321,0.662333 2.11758,-1.02508 4.39964,-1.871815 6.83106,-2.511112 2.37257,-0.624108 4.86418,-1.042451 7.44922,-1.227839 11.44968,-0.821124 22.20573,3.082636 29.55897,9.739272 7.42275,6.719547 10.99042,15.768951 10.13681,25.497234 -0.84009,9.574157 -5.76029,18.129233 -11.8964,24.165293 -6.21588,6.11452 -14.08305,10.12728 -22.82331,10.74543 -2.00665,0.14193 -3.98722,0.10205 -5.93534,-0.10725 -2.02305,-0.21529 -4.01644,-0.61184 -5.96313,-1.17907 z m 22.13427,-1.59985 c 3.65306,1.4431 7.51743,2.27629 11.5451,2.40351 3.51573,0.11106 6.91215,-0.32273 10.17724,-1.21954 0,0 0,0 0,0 12.3595,-3.41284 25.10953,-14.43101 28.26503,-29.38942 3.19719,-15.155994 -5.45921,-30.747306 -22.38032,-36.99644 0,10e-7 0,-1e-6 0,-1e-6 -4.30419,-1.554729 -8.98332,-2.479871 -13.82899,-2.637255 -5.5549,-0.180418 -10.78924,0.664352 -15.46121,2.315552 -4.75365,-1.427217 -9.90374,-2.022889 -15.15445,-1.61621 -2.00952,0.155642 -3.96199,0.452557 -5.84506,0.877845 0,0 -1e-5,1e-6 -1e-5,1e-6 -9.60449,2.164106 -16.88858,7.473129 -21.41957,14.348034 -4.51363,6.848557 -6.40039,15.392404 -5.09617,24.108598 1.31281,8.773564 5.62853,16.261936 11.623,21.664306 5.98793,5.39647 13.56738,8.65623 21.42584,9.14868 0,0 0,0 0,0 1.53221,0.0974 3.08279,0.0898 4.64891,-0.0288 4.08393,-0.30935 7.92829,-1.34778 11.50066,-2.97882 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 182.46788,94.110836 c -6.15194,-1.601735 -12.28479,-3.126483 -18.2964,-4.67315 -4.70179,4.048847 -9.31923,8.079757 -13.98686,12.037744 -0.27408,-6.163258 -0.56655,-12.325657 -0.87472,-18.487393 -5.04582,-3.27459 -9.89297,-6.626659 -14.42021,-10.120449 5.09237,-1.899938 10.33221,-3.991699 15.80089,-6.178085 1.3355,-5.991077 2.65814,-11.991602 4.01083,-18.00021 3.83485,4.778576 7.79853,9.536187 11.81704,14.295729 6.35034,-0.548122 12.98854,-1.099784 19.9047,-1.540845 -3.96063,5.162527 -7.65789,10.357738 -11.20398,15.564642 2.44044,5.693287 4.86324,11.392717 7.24871,17.102017 z m 23.66146,-2.6115 c 5.8745,-2.867646 11.96063,-5.543043 18.29344,-7.963156 5.82012,3.303404 11.4388,6.818762 16.78265,10.552985 -0.10236,-6.172837 -0.26071,-12.346725 -0.47378,-18.521177 1.3021,-0.78631 2.62124,-1.561469 3.95795,-2.324941 4.67125,-2.653869 9.50032,-5.161086 14.46777,-7.516365 -4.38985,-1.508801 -8.86753,-2.899289 -13.43252,-4.162319 -2.87535,-0.776826 -5.7565,-1.501923 -8.64037,-2.177313 -2.5671,-5.868862 -5.32369,-11.698809 -8.24873,-17.484192 -4.276,5.221335 -8.25931,10.542671 -11.98249,15.942013 -6.61377,0.524772 -13.09415,1.289764 -19.433,2.256345 -0.86402,0.130796 -1.72327,0.263998 -2.57779,0.399411 0.94567,0.760271 1.8897,1.52343 2.83142,2.289743 4.22478,3.402049 8.35583,6.89556 12.3618,10.4771 -1.41851,6.067815 -2.71762,12.146671 -3.90635,18.231866 z m 24.55757,-0.602969 c 4.15951,-1.501989 8.424,-2.884852 12.80391,-4.129797 2.17379,-0.612791 4.3669,-1.19128 6.57772,-1.735493 5.46089,3.981 10.59354,8.166859 15.41686,12.516363 0.6473,-6.139902 1.24359,-12.287384 1.78822,-18.441918 6.19693,-2.807543 12.61459,-5.370057 19.2117,-7.676309 -6.70033,-3.22471 -13.64367,-6.180009 -20.82784,-8.82642 -1.82213,-6.137466 -3.86044,-12.26169 -6.12442,-18.363206 -4.7051,4.417269 -9.20427,8.957183 -13.47898,13.610732 -0.2342,0.255551 -0.46755,0.511425 -0.70007,0.767618 -7.88127,-0.253592 -15.60882,-0.127866 -23.17069,0.320313 5.02735,4.612154 9.84889,9.364182 14.40706,14.249777 -2.11353,5.876374 -4.07835,11.780721 -5.90347,17.70834 z m -24.34926,0.587586 c -2.03348,-0.644069 -4.07871,-1.264898 -6.13328,-1.863161 -4.22654,-1.239102 -8.46888,-2.400073 -12.69579,-3.513155 -5.06854,3.966384 -9.91859,8.001303 -14.6847,12.049768 -0.35024,-6.165958 -0.6943,-12.332438 -1.0295,-18.49963 -5.43604,-3.183233 -10.79993,-6.347999 -15.97045,-9.558541 5.61942,-2.231542 11.45934,-4.529066 17.60111,-6.795377 1.58085,-6.022109 3.24496,-12.044322 5.03524,-18.065273 4.24937,4.785509 8.51039,9.598877 12.70905,14.462997 2.0382,-0.111168 4.10003,-0.210998 6.18525,-0.29676 5.19625,-0.224635 10.45948,-0.313582 15.77815,-0.249348 -4.71967,4.845416 -9.13599,9.813232 -13.29392,14.866968 2.26312,5.795129 4.43262,11.616664 6.49884,17.461512 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(5.855037,20.589994)" + id="g06"> + <path + inkscape:connector-curvature="0" + id="path05" + d="m 214.0524,108.21451 c -4.43851,7.44281 -11.32662,12.78979 -20.81596,14.21257 -9.06573,1.35927 -18.81281,-1.231 -26.37095,-6.71224 -7.66545,-5.55905 -12.69866,-13.73998 -13.65201,-23.473659 -0.93818,-9.578664 2.23205,-18.839937 7.4642,-25.825349 5.27316,-7.040175 12.92194,-12.179279 22.10828,-13.559448 9.66245,-1.4517 19.06218,1.568132 25.88919,7.766054 1.53278,-2.199754 3.33794,-4.194562 5.38838,-5.92491 4.97289,-4.196182 11.39849,-6.810825 18.50815,-6.942085 8.40609,-0.155193 16.00748,3.190966 21.32103,8.702453 6.94209,7.197883 9.58952,17.431607 7.90544,28.289374 -1.65254,10.654518 -7.09464,19.94887 -12.6993,25.7905 -4.42063,4.58221 -9.4658,7.38038 -15.21038,7.51032 -4.90588,0.11097 -9.78136,-1.72016 -14.32536,-5.03916 -1.9026,-1.36125 -3.76257,-2.96799 -5.51071,-4.79442 z m 18.43165,-1.3378 c 4.59228,6.3485 10.23735,10.5723 15.91175,11.59221 0.36011,0.0587 0.72407,0.10522 1.09209,0.13941 5.93672,0.55153 12.20043,-2.28509 17.95691,-7.49347 5.67675,-5.13623 11.12784,-12.917379 13.67496,-22.193541 5.07638,-18.487268 -4.27369,-38.259869 -24.77922,-40.274917 -0.58346,-0.05734 -1.16529,-0.0971 -1.74478,-0.119644 -9.46464,-0.358935 -17.84285,3.820219 -23.34178,10.464359 -4.54269,-4.946156 -10.71509,-8.286172 -17.65733,-9.243964 -2.52378,-0.349426 -5.12719,-0.382912 -7.75673,-0.07509 -9.4102,1.101582 -17.17985,6.300078 -22.23882,13.480193 -5.04472,7.159878 -7.55728,16.492597 -6.15498,26.058525 1.41804,9.673208 6.55655,17.68151 13.55076,23.13424 6.94617,5.41528 15.38988,8.06204 23.02837,7.15134 2.15514,-0.25695 4.15378,-0.78095 6.00475,-1.53706 4.94118,-2.03087 9.14521,-5.95515 12.45405,-11.08259 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path04" + d="m 189.94048,95.384055 c -5.97731,-1.55637 -12.1511,-3.077736 -18.41921,-4.663006 -4.99559,4.018294 -10.20077,7.994586 -15.75011,11.873891 -0.002,-6.172018 -0.0389,-12.342185 -0.10684,-18.510694 -5.48661,-3.371464 -10.89034,-6.853408 -16.08997,-10.510073 6.24346,-1.72297 12.29997,-3.675577 18.25088,-5.760626 1.64174,-5.964328 3.1765,-11.938838 4.64721,-17.922163 3.80175,4.831365 7.71373,9.623766 11.66196,14.400098 6.23897,-0.516266 12.45846,-1.080077 18.64853,-1.577294 -3.37719,5.188004 -6.70193,10.397439 -10.08642,15.607313 2.42288,5.686388 4.8441,11.372663 7.24397,17.062554 z M 232.7399,90.8523 c 4.74593,-2.53896 9.59268,-4.896984 14.57529,-7.011039 1.31768,1.111238 2.60174,2.239925 3.84997,3.38627 2.77426,2.521295 5.41908,5.124321 7.94063,7.795597 0.46007,-6.143256 0.86704,-12.292291 1.22026,-18.44658 4.77498,-3.313103 9.83928,-6.418534 15.15162,-9.30506 -5.39178,-2.565285 -10.94831,-4.896878 -16.66737,-6.955303 -1.21093,-4.640749 -2.55224,-9.272013 -4.0284,-13.889316 -0.41894,-1.308725 -0.84857,-2.615994 -1.28865,-3.921746 -3.8284,5.009138 -7.37579,10.124281 -10.67473,15.323435 -6.12146,0.212591 -12.22599,0.7122 -18.30161,1.44196 4.27417,4.421126 8.31427,8.955032 12.06273,13.595411 -1.40315,5.980596 -2.68006,11.977621 -3.83974,17.986371 z m 18.79171,0.61715 c 4.79655,-1.997053 9.83818,-3.7379 15.08056,-5.223265 3.80534,4.06876 7.34422,8.274211 10.63554,12.575136 1.15079,-6.056132 2.25436,-12.122971 3.31006,-18.19999 5.17535,-2.726932 10.59077,-5.241044 16.20495,-7.531104 -5.1067,-3.139179 -10.38835,-6.088882 -15.84277,-8.80963 -0.85083,-6.101891 -1.89658,-12.210779 -3.14673,-18.317199 -4.38709,4.512019 -8.54473,9.152391 -12.4512,13.910547 -3.89287,-0.342103 -7.78662,-0.561542 -11.67432,-0.652107 -2.20069,-0.05281 -4.40064,-0.06391 -6.59929,-0.03597 2.05845,2.659534 4.02367,5.353461 5.88617,8.080742 1.53485,2.241379 3.00491,4.50319 4.41213,6.782793 -2.0866,5.771909 -4.02672,11.579708 -5.8151,17.420049 z m -39.98926,0.917805 c -5.41659,-1.811662 -11.11691,-3.460875 -16.99879,-5.046547 -4.60273,4.0159 -9.2809,8.076272 -14.1691,12.126125 -0.33014,-6.165797 -0.66981,-12.331122 -1.01634,-18.496165 -5.38988,-3.186316 -10.82342,-6.387166 -16.1794,-9.66679 5.96596,-2.154261 11.81796,-4.412318 17.63739,-6.676978 1.42842,-6.017463 2.84597,-12.035764 4.29559,-18.053537 3.97059,4.767767 7.93424,9.545392 11.81694,14.35577 5.90083,-0.439759 11.78079,-0.795494 17.6313,-0.968312 0.28607,-0.0084 0.57212,-0.0163 0.85813,-0.02378 -0.25448,0.353552 -0.50789,0.707437 -0.76025,1.061642 -3.31702,4.650095 -6.47291,9.357322 -9.55769,14.104839 2.22062,5.744914 4.37458,11.504915 6.44222,17.283729 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(43.054517,-7.050862)" + id="g03"> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 174.70218,116.81999 c -11.57311,-4.05365 -21.90009,-14.92849 -24.06102,-29.478914 -1.07093,-7.210977 0.0286,-14.264984 2.91811,-20.344254 2.89342,-6.087444 7.60858,-11.248789 13.86087,-14.627619 2.39731,0.666735 4.70457,1.583985 6.87474,2.728523 0,0 0,10e-7 0,10e-7 10.48256,5.483671 16.81787,15.799937 17.25703,27.91763 0.43009,11.867271 -4.75214,22.994313 -11.8099,29.837613 0,0 0,0 0,0 -1.54988,1.49407 -3.23142,2.82585 -5.03983,3.96702 z m 20.0904,-1.45521 c 9.66284,-5.30421 18.59201,-17.705344 19.67417,-31.946006 1.11454,-14.66669 -6.89333,-27.746818 -21.33997,-32.902262 -8.38757,3.469032 -14.51871,9.926486 -17.59373,17.709372 -1.95502,4.965118 -2.67323,10.447597 -2.07391,16.10611 0.5992,5.657433 2.44468,10.864146 5.0447,15.392815 4.04442,7.071611 9.96216,12.598681 16.28874,15.639971 z" + id="path02" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="0.69109549" + inkscape:transform-center-y="-1.9962783" + d="m 171.29971,86.705908 c -1.1889,-0.355304 -2.38249,-0.704583 -3.57994,-1.048636 -4.8113,3.91262 -9.49461,7.912225 -14.18448,11.943824 -0.35028,-6.165168 -0.69325,-12.330868 -1.02625,-18.497288 -5.35529,-3.201744 -10.73552,-6.367474 -16.01949,-9.561435 5.75411,-2.251824 11.59849,-4.544081 17.61449,-6.779575 1.54676,-6.011974 3.16601,-12.021192 4.90068,-18.026289 2.93563,3.431855 5.85239,6.882125 8.72346,10.359106 1.77577,-3.535294 3.62578,-7.061706 5.56891,-10.577388 0.27307,-0.490401 0.5478,-0.980453 0.8242,-1.470141 3.14912,5.46544 6.17302,10.98207 9.05066,16.544241 6.70843,0.942757 13.39308,2.137569 20.00016,3.619656 -5.29623,3.851971 -10.28979,7.890927 -15.03007,12.06786 0.87474,6.112395 1.70702,12.228674 2.49558,18.348352 -4.3158,-2.587396 -8.79907,-5.052219 -13.40656,-7.398542 -0.88821,-0.451816 -1.78099,-0.899448 -2.67784,-1.343235 -1.08969,0.601046 -2.17387,1.207749 -3.25351,1.81949 z m 22.71454,-1.640925 c 1.12266,-0.515817 2.25257,-1.023099 3.39003,-1.521336 5.26239,3.24674 10.28212,6.683172 14.98579,10.316207 -0.10131,-6.166319 -0.25807,-12.333518 -0.46902,-18.501113 1.92369,-1.345265 3.88855,-2.662715 5.89706,-3.949865 3.41704,-2.186148 6.94543,-4.282077 10.57485,-6.28498 -3.19664,-1.131618 -6.4422,-2.191065 -9.73641,-3.173483 -3.33291,-0.982686 -6.69228,-1.884521 -10.07128,-2.709976 -2.33954,-5.83044 -4.87336,-11.624935 -7.58044,-17.377837 -2.73596,3.75658 -5.33456,7.558283 -7.80758,11.397138 -2.667,-3.712182 -5.43676,-7.383471 -8.2953,-11.011087 -2.36218,5.873608 -4.54544,11.777788 -6.5686,17.701555 -1.166,0.34541 -2.32633,0.698121 -3.48105,1.057764 -5.22732,1.628974 -10.30009,3.368883 -15.26314,5.166187 5.44735,3.249968 10.86443,6.567653 16.13003,10.017295 0.0205,6.172642 0.0754,12.343186 0.1623,18.511824 0.66348,-0.533832 1.32948,-1.065322 1.99838,-1.594316 4.07732,-3.229852 8.2905,-6.371715 12.6692,-9.389382 1.16228,0.439795 2.31752,0.888211 3.46518,1.345405 z" + id="path01" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/MirrorSymmetry_path_0_92_5.svg b/testfiles/lpe_tests/MirrorSymmetry_path_0_92_5.svg new file mode 100644 index 0000000..7432760 --- /dev/null +++ b/testfiles/lpe_tests/MirrorSymmetry_path_0_92_5.svg @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.2"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bend_path" + id="path-effect907" + is_visible="true" + bendpath="m 145.04523,85.135967 c 51.89028,-2.813269 94.40779,-21.961914 160.51335,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="225.3019,28.062899" + end_point="225.3019,155.81617" + center_point="225.3019,91.939535" + id="path-effect905" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="213.89975,25.039084" + end_point="213.89975,152.79237" + center_point="213.89975,88.915727" + id="path-effect903" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="109.61309,221.40475" + end_point="109.61309,268.27381" + center_point="109.61309,244.83928" + id="path-effect834" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="97.517858,216.1131" + end_point="97.517858,262.98214" + center_point="97.517858,239.54762" + id="path-effect832" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="83.91071,19.565481" + end_point="83.91071,92.892857" + center_point="83.91071,56.229169" + id="path-effect827" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="78.619044,19.565481" + end_point="78.619044,92.892857" + center_point="78.619044,56.229169" + id="path-effect825" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="75.595234,30.148813" + end_point="65.011901,98.184524" + center_point="70.303568,64.166668" + id="path-effect823" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="true" + oposite_fuse="true" /> + <inkscape:path-effect + effect="mirror_symmetry" + start_point="63.499996,22.589289" + end_point="63.499996,95.916667" + center_point="63.499996,59.252978" + id="path-effect819" + is_visible="true" + mode="free" + discard_orig_path="false" + fuse_paths="false" + oposite_fuse="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + d="m 91.470234,57.741074 c 0,20.248796 -18.445601,36.663688 -41.199402,36.663688 -22.753801,0 -41.1994018,-16.414892 -41.1994018,-36.663688 0,-20.248797 18.4456008,-36.663689 41.1994018,-36.663689 22.753801,0 41.199402,16.414892 41.199402,36.663689 z m -55.940476,0 c 0,20.248796 18.445601,36.663688 41.199402,36.663688 22.753801,0 41.1994,-16.414892 41.1994,-36.663688 0,-20.248797 -18.445599,-36.663689 -41.1994,-36.663689 -22.753801,0 -41.199402,16.414892 -41.199402,36.663689 z" + sodipodi:ry="36.663689" + sodipodi:rx="41.199402" + sodipodi:cy="57.741074" + sodipodi:cx="50.270832" + sodipodi:type="arc" + inkscape:path-effect="#path-effect819" + id="path13" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(-0.75595238,-9.827381)" /> + <!-- dont pass <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path12" + transform="translate(-0.75595238,88.446429)" + inkscape:path-effect="#path-effect823;#path-effect825;#path-effect827" + sodipodi:type="arc" + sodipodi:cx="50.270832" + sodipodi:cy="57.741074" + sodipodi:rx="41.199402" + sodipodi:ry="36.663689" + d="m 91.470234,57.741074 c 0,10.474759 -4.936083,19.923557 -12.85119,26.60479 -7.915107,-6.681233 -12.85119,-16.130031 -12.85119,-26.60479 v 0 c 0,-10.474759 4.936083,-19.923557 12.85119,-26.604791 7.915107,6.681234 12.85119,16.130032 12.85119,26.604791 z m -15.119048,0 c 0,10.474759 4.936083,19.923557 12.85119,26.60479 7.915107,-6.681233 12.851194,-16.130031 12.851194,-26.60479 v 0 c 0,-10.474759 -4.936087,-19.923557 -12.851194,-26.604791 -7.915107,6.681234 -12.85119,16.130032 -12.85119,26.604791 z" />--> + <path + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 45.357143,218.38095 c 18.362916,4.39316 28.244165,24.538 52.160715,18.61727 23.916552,5.92073 33.797802,-14.22411 52.160712,-18.61727 l 0,46.86905 C 132.34833,260.11929 115.7964,250.05918 97.517858,250.93435 79.239313,250.05918 62.68739,260.11929 45.357143,265.25 Z m 128.511897,0 c -18.36292,4.39316 -28.24417,24.538 -52.16072,18.61727 -23.916548,5.92073 -33.797797,-14.22411 -52.160713,-18.61727 l 0,46.86905 c 17.330247,-5.13071 33.882173,-15.19082 52.160713,-14.31565 18.27855,-0.87517 34.83047,9.18494 52.16072,14.31565 z" + id="path11" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect832;#path-effect834" + inkscape:original-d="m 45.357143,218.38095 c 25.001478,5.98138 34.280178,41.16221 84.666667,0 V 265.25 c -32.626792,-27.89561 -57.704794,-7.98221 -84.666667,0 z" /> + <g + id="g10" + transform="translate(-12.85119,37.797619)" + inkscape:path-effect="#path-effect903;#path-effect905;#path-effect907"> + <g + transform="translate(18.142857,-30.994048)" + id="g09"> + <path + inkscape:connector-curvature="0" + id="path08" + d="m 223.37896,115.63945 c -5.01796,1.56458 -10.41489,2.63394 -16.11245,3.07293 -1.44425,0.11127 -2.87753,0.17974 -4.29894,0.20625 0,0 -1e-5,0 -1e-5,0 -11.44197,0.22162 -22.38046,-2.25637 -30.92041,-7.34332 -8.53917,-5.0865 -14.25868,-12.564053 -15.58107,-21.659625 -1.30283,-8.961074 1.89343,-18.020453 8.53648,-25.273067 6.6787,-7.291534 17.25658,-13.183722 31.39368,-15.398986 0,0 0,-10e-7 0,-10e-7 1.77399,-0.280217 3.58887,-0.495842 5.43996,-0.641981 7.33095,-0.578762 14.5268,-0.0121 21.18866,1.506277 6.63614,-1.562586 14.07169,-2.18512 21.97308,-1.574124 0.62426,0.04827 1.24674,0.103895 1.86721,0.166753 16.73273,1.816456 30.27032,8.762006 38.47809,17.44782 8.24258,8.722646 10.91039,18.809571 7.96256,27.853504 -2.94069,9.02205 -10.86291,15.55593 -20.25091,19.59741 -9.44387,4.06552 -20.77239,5.84026 -32.39461,5.09879 -0.43899,-0.0289 -0.87942,-0.0615 -1.32127,-0.0976 -5.57306,-0.45585 -10.91833,-1.45317 -15.96005,-2.96104 z m 30.40259,2.32623 c 4.68661,2.32005 9.78935,4.22297 15.25921,5.59995 11.71448,2.94901 23.5054,3.03924 33.67912,0.4258 10.10451,-2.59565 18.98888,-8.00796 23.18489,-16.64522 4.20601,-8.657867 2.90685,-19.203669 -4.07014,-29.136346 -6.95269,-9.898072 -19.39426,-18.764669 -35.64676,-22.835423 -7.46588,-1.869976 -14.89908,-2.507064 -21.86667,-2.077319 -5.27782,-2.130162 -11.15435,-3.700783 -17.46211,-4.528211 -1.42132,-0.176021 -2.85477,-0.313976 -4.29766,-0.412444 -19.69248,-1.343887 -35.74358,4.895267 -44.93886,13.889817 -6.77558,6.672504 -9.8164,14.834758 -8.80102,23.027515 1.02271,8.252005 5.9497,15.265661 12.91968,20.642181 9.3488,7.20964 22.22619,11.57899 35.86857,12.55215 1.02662,0.0732 2.04555,0.12686 3.05654,0.16159 4.49482,0.1451 8.88233,-0.0835 13.11521,-0.66404 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 206.28983,91.48747 c -2.00083,-0.416388 -4.00843,-0.810294 -6.02094,-1.182587 -6.64504,-1.239681 -13.28831,-2.285798 -19.84267,-3.256405 -7.07443,4.315977 -13.84305,8.720076 -20.57349,13.052622 -0.13197,-6.195983 -0.27452,-12.391843 -0.42244,-18.587889 -7.09797,-2.919569 -13.93991,-5.902895 -20.29355,-9.114886 7.31541,-2.248124 14.98513,-4.821755 23.17595,-7.450821 2.32576,-6.155505 4.72529,-12.319588 7.28269,-18.485207 5.46769,4.56742 11.06683,9.152069 16.65438,13.810326 3.6254,-0.290483 7.33042,-0.550988 11.1145,-0.765185 6.3562,-0.37226 12.81847,-0.541531 19.36744,-0.474845 -6.41407,4.58367 -12.4096,9.396657 -18.05707,14.368501 -0.309,0.273383 -0.61675,0.547093 -0.92328,0.821121 0.41043,0.793393 0.81893,1.587439 1.22539,2.382159 2.53494,4.928461 4.9767,9.890645 7.31309,14.883096 z m 34.08954,-0.09798 c 0.91253,-0.184055 1.82883,-0.362006 2.74896,-0.533682 7.95885,-1.468928 16.09942,-2.466654 24.35017,-3.006352 7.35194,4.862745 14.22166,10.088203 20.63604,15.582959 1.07003,-6.109149 2.07627,-12.234285 3.01747,-18.374371 8.4687,-1.534317 17.14056,-2.624282 25.92756,-3.257898 -8.7444,-5.086476 -17.93222,-9.724951 -27.54382,-13.818379 -2.24464,-6.575719 -4.77792,-13.136265 -7.61749,-19.662094 -6.90075,3.865114 -13.54326,7.98638 -19.88297,12.346124 -5.32126,-0.643246 -10.68583,-1.117102 -16.0855,-1.413386 -5.55667,-0.271438 -11.0433,-0.353235 -16.45463,-0.265074 5.3377,3.681257 10.50728,7.526273 15.45564,11.534755 1.48807,1.215819 2.94888,2.445563 4.38286,3.688461 -1.95622,3.483516 -3.83795,6.992042 -5.64272,10.524132 -1.12918,2.210054 -2.22604,4.428508 -3.29157,6.654805 z m 34.18886,5.503778 c 8.91934,-0.305358 17.96617,-0.06537 27.04117,0.701693 6.43564,5.891884 12.39808,12.033274 17.91419,18.330754 1.89617,-5.87341 3.73987,-11.77264 5.52985,-17.696631 8.44155,-0.33358 16.97817,-0.228605 25.52182,0.326926 -7.72733,-6.169084 -15.93737,-12.001743 -24.61047,-17.400931 -1.19839,-6.807081 -2.64945,-13.646735 -4.37081,-20.49942 -7.21025,2.822148 -14.23993,5.920472 -21.04444,9.2773 -10.18438,-2.898182 -20.62658,-5.188223 -31.25831,-6.802049 6.08907,5.884291 11.67695,11.98474 16.79996,18.239215 -4.00479,5.09178 -7.84929,10.268227 -11.52296,15.523143 z m -33.89179,-5.481567 c -8.44904,-3.068477 -17.17756,-5.606402 -26.03689,-7.683459 -4.92398,2.248616 -9.68986,4.641089 -14.31708,7.144747 -2.80427,1.519957 -5.55009,3.073366 -8.25194,4.651593 0.0698,-6.197862 0.17692,-12.397424 0.32667,-18.598996 -7.67089,-3.100581 -15.32593,-6.01439 -22.73288,-8.906336 8.44731,-2.635864 17.4016,-5.250084 27.02967,-7.572589 0.21299,-0.411015 0.42717,-0.821918 0.64259,-1.232709 2.9977,-5.664425 6.20488,-11.28748 9.65057,-16.850145 5.92771,4.955137 11.66948,10.08632 17.14789,15.38412 7.17065,0.268161 14.43738,0.826715 21.77591,1.717027 3.54307,0.451967 7.05894,0.980266 10.54594,1.581985 -3.81191,1.804907 -7.54453,3.698007 -11.18941,5.67704 -3.72825,2.037646 -7.32444,4.162862 -10.79926,6.364986 2.26368,6.077478 4.33946,12.18686 6.20822,18.322736 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(5.855037,20.589994)" + id="g06"> + <path + inkscape:connector-curvature="0" + id="path05" + d="m 235.89782,106.81304 c -4.30696,4.64399 -9.66741,8.39171 -15.90879,10.71182 -3.11764,1.15338 -6.58309,2.02531 -10.41512,2.53442 -11.1605,1.48275 -23.57582,-0.42338 -33.60668,-5.53022 -10.09453,-5.13925 -16.84265,-13.05286 -17.93024,-22.791117 -1.06743,-9.557646 3.50951,-19.038031 10.98922,-26.437335 7.50108,-7.420446 18.49241,-13.289253 31.50497,-14.973137 4.47837,-0.579519 8.88679,-0.6188 13.10644,-0.145872 8.6915,0.970448 16.32046,4.121319 22.00142,8.740062 4.91187,-4.084517 11.34192,-7.099444 18.77749,-8.373074 5.1986,-0.887351 10.80104,-0.906778 16.4997,0.08695 13.34615,2.32728 23.8953,9.560158 29.74229,18.31652 5.89083,8.822016 6.879,18.743182 3.18442,27.70827 -3.66486,8.892967 -11.25487,15.404617 -19.34778,19.295667 -8.18208,3.93394 -17.18797,5.41525 -25.66173,3.92027 -3.69966,-0.65271 -7.10273,-1.82346 -10.25841,-3.42917 -4.44603,-2.34694 -8.85821,-5.6273 -12.6772,-9.63405 z m 23.29469,1.76317 c 5.0151,7.76032 12.20065,13.86544 21.2706,16.88523 8.6927,2.89419 18.22977,2.65555 27.06347,-0.16116 8.74263,-2.78768 17.10715,-8.25729 21.828,-16.49005 4.75891,-8.29911 5.00484,-18.135322 0.3786,-27.591234 -4.59566,-9.393375 -13.94309,-18.006506 -26.71003,-22.337729 -13.40334,-4.547121 -26.70462,-3.059856 -36.12811,2.434229 -3.25124,-3.708758 -7.51393,-6.913552 -12.61015,-9.281822 -6.11868,-2.840002 -13.30804,-4.406528 -20.94975,-4.291048 -7.11571,0.10753 -13.76798,1.658338 -19.53004,4.214726 -7.93057,3.519476 -14.15479,8.89714 -18.12472,15.041882 -3.97747,6.156424 -5.75694,13.159899 -4.70761,20.198804 1.05666,7.088126 4.80692,13.156982 10.12806,18.021662 5.30639,4.85119 12.02193,8.36939 18.72072,10.5294 4.77978,1.58877 9.69979,2.38256 14.59516,2.28791 5.24442,-0.1014 9.97534,-1.20935 14.28996,-3.07501 3.61676,-1.60253 7.19249,-3.76014 10.48584,-6.38579 z" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + id="path04" + d="m 207.04998,92.939158 c -7.62162,-1.461108 -15.70997,-2.664461 -24.07281,-3.870518 -6.86384,4.361883 -13.99904,8.723752 -21.67324,12.92593 0.13956,-6.198176 0.23784,-12.394757 0.30006,-18.590048 -7.46133,-3.058745 -14.89583,-6.27979 -22.07125,-9.828044 8.74684,-1.860378 17.19048,-4.174856 25.49774,-6.673365 2.45248,-6.113154 4.79446,-12.244186 7.11007,-18.386055 5.15034,4.595208 10.39433,9.157358 15.58895,13.742826 8.64441,-0.887549 17.24911,-1.705552 25.80357,-2.145053 -5.16053,5.174315 -10.06805,10.483923 -14.94379,15.863139 2.90275,5.632737 5.73573,11.283604 8.4607,16.961188 z m 55.60705,-0.01304 c 6.81115,-1.302667 13.92761,-2.137539 21.25006,-2.522896 5.17515,4.952489 9.98067,10.124537 14.44341,15.422707 1.68971,-5.930162 3.32293,-11.882529 4.89841,-17.856057 7.11924,-1.46214 14.4728,-2.551244 21.97264,-3.255311 -6.71126,-4.785171 -13.74371,-9.291835 -21.07772,-13.422945 -0.99258,-6.461354 -2.23386,-12.94895 -3.74147,-19.443244 -6.09774,3.625184 -11.93937,7.487014 -17.4803,11.567818 -8.38637,-1.679134 -16.84339,-2.824491 -25.30277,-3.367994 5.03284,5.235245 9.6136,10.67889 13.77864,16.268803 -3.10347,5.469419 -6.02061,11.007858 -8.7409,16.609119 z m 25.69305,6.480256 c 7.11975,-0.19698 14.43587,0.03097 21.84908,0.665565 4.53973,5.60034 8.71884,11.30703 12.56419,17.02666 2.40295,-5.59064 4.76072,-11.2133 7.07207,-16.86693 7.24831,-0.532753 14.62285,-0.698261 22.03557,-0.484528 -5.98333,-5.454495 -12.32715,-10.742058 -19.01182,-15.765645 -0.13066,-6.479132 -0.47404,-13.032252 -1.04776,-19.639817 -6.47304,2.733842 -12.76763,5.724355 -18.83918,8.953866 -8.05901,-2.870632 -16.26871,-5.294762 -24.56081,-7.204314 4.14327,5.986411 7.86948,12.090074 11.21499,18.248853 -3.91221,4.936508 -7.6745,9.960671 -11.27633,15.06629 z m -53.46319,-8.593341 c -5.68408,-1.988661 -11.68394,-3.710617 -17.9084,-5.208595 -1.1103,-0.263005 -2.2311,-0.517512 -3.36175,-0.764407 -6.32335,3.988707 -12.64881,8.222471 -19.24404,12.541617 -0.15039,-6.195388 -0.29408,-12.391002 -0.42586,-18.587152 -7.07394,-2.947417 -14.36125,-5.806606 -21.62967,-8.742476 8.29631,-2.581127 16.4421,-5.269206 24.6042,-7.794164 2.3726,-6.123062 4.82356,-12.23118 7.43698,-18.317312 3.24028,2.936825 6.4294,5.908684 9.5328,8.929194 1.88052,1.829171 3.72705,3.678065 5.53544,5.546175 8.58051,-0.249642 17.1375,-0.06974 25.5916,0.674947 -5.77529,4.411226 -11.16512,9.085783 -16.25228,13.94091 2.21706,5.896559 4.26376,11.82545 6.12098,17.781263 z" + inkscape:transform-center-y="-1.9962783" + inkscape:transform-center-x="0.69109549" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + <g + transform="translate(43.054517,-7.050862)" + id="g03"> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 198.59484,115.29881 c -7.49145,-2.72489 -14.52438,-7.03431 -19.80999,-12.59443 -4.79617,-5.018222 -8.18206,-11.076571 -8.98432,-17.965115 -0.79885,-6.859261 1.09697,-13.61705 5.4515,-19.492954 4.85519,-6.529809 12.77216,-11.955173 22.99236,-14.803622 8.36019,2.252794 15.41081,6.224676 20.43804,11.215764 6.71866,6.701916 9.48432,14.887289 8.28732,23.143534 -1.19111,8.215667 -6.06475,15.291573 -12.17833,20.751153 -4.59099,4.08989 -10.13344,7.44483 -16.19658,9.74567 z m 26.47897,2.01541 c 14.13852,-2.87737 28.79437,-11.61308 33.07913,-25.388054 4.30424,-13.837568 -3.57553,-29.980567 -22.6481,-38.613991 -6.12074,0.630348 -11.71465,2.234401 -16.48956,4.59137 -11.16666,5.539613 -17.12773,14.805909 -17.23481,24.975507 -0.107,10.161015 5.48027,19.398408 12.6781,26.428998 3.143,3.0454 6.72468,5.7535 10.61524,8.00617 z" + id="path02" + inkscape:original-d="m 216.95833,93.270828 a 33.261906,35.151787 0 0 1 -33.2619,35.151792 33.261906,35.151787 0 0 1 -33.26191,-35.151792 33.261906,35.151787 0 0 1 33.26191,-35.151787 33.261906,35.151787 0 0 1 33.2619,35.151787 z" /> + <path + inkscape:connector-curvature="0" + style="fill:#ffff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="0.69109549" + inkscape:transform-center-y="-1.9962783" + d="m 198.43109,84.995338 c -1.58656,-0.477781 -3.18468,-0.937889 -4.79314,-1.380888 -5.45612,2.646929 -10.72903,5.493481 -15.85369,8.480815 -1.65281,0.962345 -3.29396,1.93983 -4.92729,2.93015 0.0695,-6.191602 0.17861,-12.384846 0.33249,-18.580039 -7.2161,-3.207754 -14.60503,-6.188666 -21.93452,-9.107645 7.60264,-2.36626 15.41518,-4.665724 23.56285,-6.695625 0.82069,-0.204561 1.64378,-0.405615 2.46926,-0.603039 2.98536,-6.016743 6.19835,-11.989424 9.67478,-17.894575 3.89348,3.599595 7.66863,7.281319 11.29738,11.041755 3.58795,-3.791514 7.36399,-7.502989 11.35027,-11.116882 3.34408,5.422216 6.47167,10.91219 9.35006,16.462931 0.24647,0.477128 0.49094,0.95464 0.73342,1.432527 9.37688,2.262189 18.43946,5.140546 27.16809,8.538025 -8.01017,2.215838 -15.74563,4.862705 -23.11832,7.928601 0.0562,6.19731 0.0356,12.389966 -0.0607,18.576926 -2.45295,-1.605793 -4.96685,-3.159507 -7.5432,-4.655888 -4.14575,-2.415036 -8.46869,-4.674937 -12.93281,-6.78866 -1.60216,0.458577 -3.19366,0.936164 -4.77497,1.431511 z m 31.51653,2.414472 c 1.63861,-0.22578 3.28634,-0.430107 4.94238,-0.613129 6.55673,4.593648 12.68041,9.522334 18.3979,14.692639 1.06844,-6.098495 2.07261,-12.212503 3.01126,-18.340981 7.74172,-1.858801 15.7381,-3.304367 23.90109,-4.324699 -8.02819,-4.629321 -16.42962,-8.851095 -25.18464,-12.568278 -1.99108,-6.452201 -4.26459,-12.892098 -6.83817,-19.300148 -4.52095,2.90148 -8.89763,5.925078 -13.11386,9.06439 -3.00162,-4.313189 -6.21098,-8.569685 -9.63852,-12.755598 -1.95993,2.282194 -3.86903,4.58884 -5.7254,6.918969 -2.42733,3.050495 -4.75074,6.1387 -6.97671,9.260354 -9.57108,0.817726 -18.86907,2.264306 -27.90309,4.178986 7.43225,3.505036 14.62211,7.325625 21.42615,11.47917 -0.99732,6.115702 -1.92265,12.238564 -2.77838,18.367462 4.17346,-1.885828 8.45355,-3.634103 12.85736,-5.216058 2.98652,-1.075042 6.03259,-2.072741 9.1318,-2.993018 1.51181,0.698489 3.00873,1.415407 4.49083,2.149939 z" + id="path01" + inkscape:original-d="m 184.45238,101.20833 -17.02464,-7.272519 -15.64246,9.901599 1.65567,-18.438735 -14.25076,-11.8171 18.04791,-4.123243 6.835,-17.204964 9.49855,15.890426 18.47502,1.183848 -12.17748,13.944067 z" /> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Offset_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Offset_multi_mm_1_0_2.svg new file mode 100644 index 0000000..58e6b12 --- /dev/null +++ b/testfiles/lpe_tests/Offset_multi_mm_1_0_2.svg @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 296.99999" + version="1.1" + id="svg1048" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs1042"> + <inkscape:path-effect + effect="offset" + id="path-effect3681" + is_visible="true" + lpeversion="1" + linejoin_type="extrp_arc" + unit="mm" + offset="60.493735" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1662" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="88.776151" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1654" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="18.737882" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1650" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="59.515401" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1646" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="58.317287" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1642" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-24.333219" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1640" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="29.883462" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1638" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-18.128821" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1636" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="19.962127" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.08" + inkscape:cx="-11265.935" + inkscape:cy="7059.9816" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="mm" /> + <metadata + id="metadata1045"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:27.0512;stroke-miterlimit:4;stroke-dasharray:none" + id="path1644" + sodipodi:sides="5" + sodipodi:cx="-399.80942" + sodipodi:cy="-180.44173" + sodipodi:r1="360.73807" + sodipodi:r2="180.36903" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -644.74023,-815.44922 -40.77149,450.125 -393.91408,221.59766 L -663.92969,34.142578 -574.9082,477.25781 -277.34375,137.0625 171.5918,189.32422 -60,-198.79883 l 188.43555,-410.8125 -440.69727,100.31836 z" + inkscape:transform-center-x="379.29723" + inkscape:transform-center-y="-183.09287" + inkscape:path-effect="#path-effect1646" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1611" + sodipodi:sides="5" + sodipodi:cx="-311.88177" + sodipodi:cy="86.136711" + sodipodi:r1="133.35405" + sodipodi:r2="66.677025" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -324.08789,54.492188 -2.03125,22.43164 -19.63086,11.042969 20.70508,8.863281 4.43554,22.082032 14.83008,-16.95313 22.3711,2.60352 -11.54102,-19.341797 9.39063,-20.472656 -21.96094,5 z" + inkscape:transform-center-x="2.4433845" + inkscape:transform-center-y="0.51611801" + inkscape:path-effect="#path-effect1638" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + id="path1648" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1598.6191,1541.1289 c -80.3815,2e-4 -130.3907,80.8619 -130.3907,156.4434 0,75.5814 50.0093,156.4433 130.3907,156.4433 80.3817,2e-4 130.3886,-80.8632 130.3886,-156.4433 0,-75.5802 -50.007,-156.4434 -130.3886,-156.4434 z" + inkscape:path-effect="#path-effect1650" + inkscape:original-d="m -1570.7428,1689.4779 a 29.561346,37.160658 0 0 1 -29.5613,37.1607 29.561346,37.160658 0 0 1 -29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,37.1606 z m 42.9973,8.0942 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1616" + style="fill:none;fill-rule:nonzero;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1766.1172,2176.748 c -59.8491,0 -100.7558,62.208 -100.7558,126.8106 0,64.6026 40.9067,126.8105 100.7558,126.8105 59.8493,2e-4 100.7578,-62.2072 100.7578,-126.8105 0,-64.6034 -40.9086,-126.8107 -100.7578,-126.8106 z" + inkscape:path-effect="#path-effect1640" + inkscape:original-d="m -1738.2397,2295.4647 a 29.561346,37.160658 0 0 1 -29.5614,37.1606 29.561346,37.160658 0 0 1 -29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5614,37.1607 z m 42.9972,8.0941 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1652" + style="fill:#c83737;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1279.7363,1605.9277 c -77.1046,0 -133.8106,85.6297 -133.8106,183 0,84.1137 42.5225,159.3512 104.1074,178.2129 26.239,59.2627 76.4951,101.6602 136.6856,101.6602 89.1788,0 156.9707,-92.2128 156.9707,-199.5957 0,-107.383 -67.792,-199.5958 -156.9707,-199.5957 -1.8737,0 -3.6775,0.1378 -5.5059,0.2285 -23.6771,-37.8416 -59.3046,-63.9102 -101.4765,-63.9102 z m 80.9961,105.2657 c 9.5804,22.3932 15.3379,48.8925 15.3379,77.7343 0,84.0689 -46.3335,145.5235 -96.334,145.5235 -0.6657,0 -1.3775,-0.097 -2.0547,-0.127 -6.559,-19.9407 -10.457,-41.827 -10.457,-65.1191 0,-79.5882 41.7018,-142.1601 93.5078,-158.0117 z" + inkscape:path-effect="#path-effect1654" + inkscape:original-d="m -1034.5217,1869.2049 a 138.23195,180.85736 0 0 1 -138.232,180.8573 138.23195,180.85736 0 0 1 -138.2319,-180.8573 138.23195,180.85736 0 0 1 138.2319,-180.8574 138.23195,180.85736 0 0 1 138.232,180.8574 z m -130.1426,-80.2774 a 115.07191,164.26231 0 0 1 -115.072,164.2624 115.07191,164.26231 0 0 1 -115.0719,-164.2624 115.07191,164.26231 0 0 1 115.0719,-164.2623 115.07191,164.26231 0 0 1 115.072,164.2623 z" /> + <g + id="g1660" + inkscape:path-effect="#path-effect1662" + transform="matrix(1.1103049,0,0,1.1184615,-2592.2041,1717.8817)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1656" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,209.44531 c -104.302606,-1e-5 -207.291016,72.14096 -207.291016,181.49805 0,109.35709 102.98843,181.49805 207.291016,181.49805 104.302586,0 207.291014,-72.14096 207.291014,-181.49805 0,-109.35709 -102.98844,-181.49805 -207.291014,-181.49805 z" /> + <path + id="path1658" + inkscape:test-ignore="1" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m -634.36133,245.58203 a 79.664469,79.664469 0 0 0 -67.90429,37.76367 l -3.89258,6.29492 -7.39453,0.36133 a 79.664469,79.664469 0 0 0 -56.90039,131.0586 l 4.7871,5.65039 -1.94336,7.15039 a 79.664469,79.664469 0 0 0 107.0625,94.60937 l 6.85352,-2.80664 6.19922,4.05664 a 79.664469,79.664469 0 0 0 123.0625,-72.58789 l -0.55078,-7.38281 5.76953,-4.63867 a 79.664469,79.664469 0 0 0 -31,-139.47266 l -7.19531,-1.75781 -2.62891,-6.92383 a 79.664469,79.664469 0 0 0 -74.32422,-51.375 z" + inkscape:original-d="m -603.8755,463.05932 -41.24201,-26.98797 -45.61276,18.67429 12.9226,-47.56323 -31.85542,-37.60964 49.22862,-2.40772 25.92503,-41.91833 17.50235,46.07517 47.87798,11.7027 -38.41157,30.88374 z" /> + </g> + <g + id="g1634" + inkscape:path-effect="#path-effect1636" + transform="matrix(1.1103049,0,0,1.1184615,-1814.3473,2305.6139)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1627" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,271.19531 c -78.090216,-1e-5 -145.541016,51.5633 -145.541016,119.74805 0,68.18475 67.4508,119.74805 145.541016,119.74805 78.090211,0 145.541015,-51.5633 145.541015,-119.74805 0,-68.18475 -67.450807,-119.74805 -145.541015,-119.74805 z" /> + <path + id="path1629" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m 1.9179688,162.68945 -40.0624998,64.77735 -76.076169,3.7207 49.226559,58.12109 -19.96875,73.5 70.486329,-28.85742 63.732421,41.70508 -5.662109,-75.95508 59.35742,-47.72656 -73.986326,-18.08399 z" + inkscape:original-d="m 28.693756,340.79243 -41.24201,-26.98797 -45.612767,18.67429 12.922603,-47.56323 -31.855423,-37.60964 49.228618,-2.40772 25.9250314,-41.91833 17.5023566,46.07517 47.877974,11.7027 -38.411567,30.88374 z" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.411951px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -2601.4453,730.88281 a 180.07746,180.07746 0 0 0 -87.6231,23.08008 c -144.0639,80.94049 -341.893,452.97931 -373.6328,561.99221 -3.6587,12.566 -9.6368,37.5238 -1.7363,59.2969 l 7.6289,21.0253 19.4727,11.0039 c 43.9323,24.8288 44.1482,28.099 51.4121,33.4356 10.2406,7.5235 19.3853,14.9325 26.5468,21.8125 1.0225,0.9823 1.9746,1.9265 2.8555,2.8281 0.7928,0.8115 1.5187,1.578 2.1817,2.3028 0.5891,0.6441 1.1179,1.2422 1.5937,1.7988 6.1336,91.3732 93.6603,78.8898 336.4629,113.5898 287.3297,41.0635 535.3255,-80.3362 651.123,-489.539 62.6256,-221.30461 -118.1922,-232.18481 -272.1836,-205.0391 -142.0528,25.0412 -293.5601,66.31375 -348.9082,32.48242 -11.4665,-7.0089 -29.0032,-26.708 -13.8671,-102.38671 a 424.28252,424.28252 0 0 1 26.7773,-85.57032 180.07746,180.07746 0 0 0 -28.1035,-2.11328 z" + id="path3679" + inkscape:test-ignore="1" + sodipodi:nodetypes="ccsssc" + inkscape:path-effect="#path-effect3681" + inkscape:original-d="m -3007.5731,1354.6181 c -12.6856,-34.9602 210.6842,-470.68828 348.1365,-547.91411 -90.7945,453.96261 743.8726,-110.62832 636.0671,270.33221 -108.2015,382.3603 -327.0952,482.8939 -584.3548,446.1279 -257.2596,-36.7661 -284.9184,-25.6639 -284.9184,-64.6282 0,-38.9644 -114.9304,-103.9178 -114.9304,-103.9178 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Offset_multi_px_1_0_2.svg b/testfiles/lpe_tests/Offset_multi_px_1_0_2.svg new file mode 100644 index 0000000..e26401b --- /dev/null +++ b/testfiles/lpe_tests/Offset_multi_px_1_0_2.svg @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg1048" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs1042"> + <inkscape:path-effect + effect="offset" + id="path-effect3681" + is_visible="true" + lpeversion="1" + linejoin_type="extrp_arc" + unit="mm" + offset="18.119682" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1662" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="32.877949" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1654" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="12.616673" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1650" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="18.352952" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1646" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="30.881299" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1642" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-24.333219" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1640" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="11.428703" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1638" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-18.128821" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1636" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="3.4299632" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.22627417" + inkscape:cx="-2737.8361" + inkscape:cy="2478.355" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata1045"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:27.0512;stroke-miterlimit:4;stroke-dasharray:none" + id="path1644" + sodipodi:sides="5" + sodipodi:cx="-399.80942" + sodipodi:cy="-180.44173" + sodipodi:r1="360.73807" + sodipodi:r2="180.36903" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -760.01562,-1114.3086 -59.95899,661.97071 -579.30659,325.89062 611.04682,261.58204 130.91797,651.66406 437.60743,-500.30664 660.2246,76.85742 L 99.927734,-207.43945 377.04688,-811.5957 -271.05859,-664.06055 Z" + inkscape:transform-center-x="379.29723" + inkscape:transform-center-y="-183.09287" + inkscape:path-effect="#path-effect1646" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1611" + sodipodi:sides="5" + sodipodi:cx="-311.88177" + sodipodi:cy="86.136711" + sodipodi:r1="133.35405" + sodipodi:r2="66.677025" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="" + inkscape:transform-center-x="2.4433845" + inkscape:transform-center-y="0.51611801" + inkscape:path-effect="#path-effect1638" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + id="path1648" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1598.6191,1531.2793 c -87.2067,2e-4 -140.2403,87.0622 -140.2403,166.293 0,79.2307 53.0337,166.2929 140.2403,166.2929 87.207,3e-4 140.2382,-87.0637 140.2382,-166.2929 0,-79.2293 -53.0313,-166.293 -140.2382,-166.293 z" + inkscape:path-effect="#path-effect1650" + inkscape:original-d="m -1570.7428,1689.4779 a 29.561346,37.160658 0 0 1 -29.5613,37.1607 29.561346,37.160658 0 0 1 -29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,37.1606 z m 42.9973,8.0942 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1616" + style="fill:none;fill-rule:nonzero;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1766.1172,2163.4355 c -69.073,0 -114.0683,70.589 -114.0683,140.1231 0,69.5341 44.9954,140.123 114.0683,140.123 69.0731,2e-4 114.0703,-70.588 114.0703,-140.123 0,-69.5351 -44.9973,-140.1232 -114.0703,-140.1231 z" + inkscape:path-effect="#path-effect1640" + inkscape:original-d="m -1738.2397,2295.4647 a 29.561346,37.160658 0 0 1 -29.5614,37.1606 29.561346,37.160658 0 0 1 -29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5614,37.1607 z m 42.9972,8.0941 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1652" + style="fill:#c83737;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1279.7363,1576.9805 c -98.0404,0 -162.7578,104.3025 -162.7578,211.9472 0,87.1378 42.8446,172.2663 112.0039,201.2618 31.2648,61.6848 87.8054,107.5585 157.7363,107.5585 109.0074,0 185.91796,-109.5765 185.91796,-228.5429 0,-115.289 -72.22916,-221.7563 -175.90236,-228.2285 -27.7864,-37.3845 -68.0415,-63.9961 -116.998,-63.9961 z m 63.7812,176.041 c 2.2781,11.2145 3.6055,23.2112 3.6055,35.9062 10e-5,58.2904 -23.9131,97.1225 -48.2852,110.9121 -1.6555,-9.8189 -2.666,-20.0158 -2.666,-30.6347 0,-53.647 20.8736,-94.6468 47.3457,-116.1836 z" + inkscape:path-effect="#path-effect1654" + inkscape:original-d="m -1034.5217,1869.2049 a 138.23195,180.85736 0 0 1 -138.232,180.8573 138.23195,180.85736 0 0 1 -138.2319,-180.8573 138.23195,180.85736 0 0 1 138.2319,-180.8574 138.23195,180.85736 0 0 1 138.232,180.8574 z m -130.1426,-80.2774 a 115.07191,164.26231 0 0 1 -115.072,164.2624 115.07191,164.26231 0 0 1 -115.0719,-164.2624 115.07191,164.26231 0 0 1 115.0719,-164.2623 115.07191,164.26231 0 0 1 115.072,164.2623 z" /> + <g + id="g1660" + inkscape:path-effect="#path-effect1662" + transform="matrix(1.1103049,0,0,1.1184615,-2592.2041,1717.8817)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1656" + ry="101.8336" + rx="127.62676" + cy="390.94354" + cx="-54.396549" + d="m -54.396484,177.59961 c -117.820166,-2e-5 -239.136716,82.75434 -239.136716,213.34375 0,130.58941 121.31657,213.34375 239.136716,213.34375 117.820144,0 239.136714,-82.75434 239.136714,-213.34375 0,-130.58941 -121.316586,-213.34375 -239.136714,-213.34375 z" /> + <path + id="path1658" + inkscape:test-ignore="1" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m -634.80273,213.73633 a 111.50917,111.50917 0 0 0 -89.41993,45.28125 111.50917,111.50917 0 0 0 -76.15039,175.41015 111.50917,111.50917 0 0 0 143.29493,126.62891 111.50917,111.50917 0 0 0 164.70898,-97.14844 111.50917,111.50917 0 0 0 -41.49414,-186.66797 111.50917,111.50917 0 0 0 -100.93945,-63.5039 z" + inkscape:original-d="m -603.8755,463.05932 -41.24201,-26.98797 -45.61276,18.67429 12.9226,-47.56323 -31.85542,-37.60964 49.22862,-2.40772 25.92503,-41.91833 17.50235,46.07517 47.87798,11.7027 -38.41157,30.88374 z" /> + </g> + <g + id="g1634" + inkscape:path-effect="#path-effect1636" + transform="matrix(1.1103049,0,0,1.1184615,-1814.3473,2305.6139)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1627" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,277.47656 c -75.424376,-1e-5 -139.259766,49.46933 -139.259766,113.4668 0,63.99747 63.83539,113.4668 139.259766,113.4668 75.424374,0 139.259765,-49.46933 139.259765,-113.4668 0,-63.99747 -63.835393,-113.4668 -139.259765,-113.4668 z" /> + <path + id="path1629" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m 0.56445312,176.81445 -35.10742212,56.76367 -66.662111,3.26172 43.136721,50.92774 -17.498047,64.4082 61.765625,-25.28906 55.847656,36.54687 L 37.085938,296.875 89.097656,255.05469 24.265625,239.20703 Z" + inkscape:original-d="m 28.693756,340.79243 -41.24201,-26.98797 -45.612767,18.67429 12.922603,-47.56323 -31.855423,-37.60964 49.228618,-2.40772 25.9250314,-41.91833 17.5023566,46.07517 47.877974,11.7027 -38.411567,30.88374 z" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.411951px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -2617.2402,727.23633 a 154.16806,154.16806 0 0 0 -75.7422,19.76172 c -146.0544,82.05881 -410.5688,543.88655 -378.9668,630.97855 l 8.6367,23.8027 22.0449,12.459 c 45.9749,25.9831 40.109,25.1988 50.6133,32.916 12.8472,9.4385 22.84,17.7581 29.9395,25.3809 0.083,0.089 0.1421,0.1588 0.2226,0.246 8.0528,96.2705 102.9523,83.8603 343.0781,118.1778 291.3014,41.631 543.1407,-82.5252 659.9414,-495.2735 27.6784,-97.80895 9.6733,-178.11252 -72.9492,-212.6562 -103.2953,-43.18682 -286.6805,19.308 -422.3203,37.33984 -113.8465,15.13466 -162.2186,13.15106 -139.541,-100.23437 a 419.37536,419.37536 0 0 1 26.2441,-84.06836 154.16806,154.16806 0 0 0 -51.2011,-8.83008 z" + id="path3679" + inkscape:test-ignore="1" + sodipodi:nodetypes="ccsssc" + inkscape:path-effect="#path-effect3681" + inkscape:original-d="m -3007.5731,1354.6181 c -12.6856,-34.9602 210.6842,-470.68828 348.1365,-547.91411 -90.7945,453.96261 743.8726,-110.62832 636.0671,270.33221 -108.2015,382.3603 -327.0952,482.8939 -584.3548,446.1279 -257.2596,-36.7661 -284.9184,-25.6639 -284.9184,-64.6282 0,-38.9644 -114.9304,-103.9178 -114.9304,-103.9178 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Offset_multi_px_1_1.svg b/testfiles/lpe_tests/Offset_multi_px_1_1.svg new file mode 100644 index 0000000..bc0a530 --- /dev/null +++ b/testfiles/lpe_tests/Offset_multi_px_1_1.svg @@ -0,0 +1,247 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg1048" + inkscape:version="1.1-dev (85844a075a, 2021-04-29)" + sodipodi:docname="1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs1042"> + <inkscape:path-effect + effect="offset" + id="path-effect1662" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="33.655753" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1654" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="35.530225" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1650" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="12.115545" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1646" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="14.467366" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1642" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-25.387334" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1640" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-6.9244833" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1638" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-18.128821" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1636" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-24.893108" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.12374369" + inkscape:cx="-884.89361" + inkscape:cy="-60.609151" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pagecheckerboard="0" /> + <metadata + id="metadata1045"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1644" + sodipodi:sides="5" + sodipodi:cx="-278.59417" + sodipodi:cy="-605.4344" + sodipodi:r1="133.35405" + sodipodi:r2="66.677025" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -338.34766,-760.35352 -9.94726,109.8125 -96.10156,54.06446 101.36718,43.39453 21.7168,108.10351 72.59375,-82.99609 109.52734,12.75 -56.5,-94.68945 45.96875,-100.22266 -107.51367,24.47461 z" + inkscape:transform-center-x="10.601544" + inkscape:transform-center-y="2.2228879" + inkscape:path-effect="#path-effect1646" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1611" + sodipodi:sides="5" + sodipodi:cx="-311.88177" + sodipodi:cy="86.136711" + sodipodi:r1="133.35405" + sodipodi:r2="66.677025" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -345.13086,-0.06445312 c -1.8444,20.36783812 -3.6888,40.73567712 -5.5332,61.10351512 -17.82487,10.027344 -35.64974,20.054688 -53.47461,30.082032 18.80078,8.048829 37.60156,16.097656 56.40234,24.146486 4.028,20.05013 8.05599,40.10026 12.08399,60.15039 13.46484,-15.39388 26.92969,-30.78776 40.39453,-46.18164 20.3138,2.36458 40.6276,4.72917 60.9414,7.09375 -10.47917,-17.56185 -20.95833,-35.1237 -31.4375,-52.685549 8.52669,-18.589193 17.05339,-37.178385 25.58008,-55.767578 -19.94141,4.539714 -39.88281,9.079427 -59.82422,13.619141 -15.04427,-13.853516 -30.08854,-27.707031 -45.13281,-41.56054712 z" + inkscape:transform-center-x="10.601544" + inkscape:transform-center-y="2.2228879" + inkscape:path-effect="#path-effect1638" /> + <path + id="path1648" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m -0.68554688,-632.60547 c -43.58775312,0 -75.94726812,46.3939 -75.94726512,98.77735 2e-6,52.38343 32.359518,98.77734 75.94726512,98.77734 43.58775688,10e-6 75.94726388,-46.39391 75.94726588,-98.77734 2e-6,-52.38345 -32.359511,-98.77736 -75.94726588,-98.77735 z m -1.51757812,70.42969 c 6.5973407,0 14.509766,7.96603 14.509766,21.10937 0,13.14335 -7.9124253,21.10938 -14.509766,21.10938 -6.5973376,0 -14.509766,-7.96603 -14.509766,-21.10938 0,-13.14334 7.9124267,-21.10937 14.509766,-21.10937 z" + inkscape:path-effect="#path-effect1650" + inkscape:original-d="m 24.42155,-541.06574 a 26.624529,33.2248 0 0 1 -26.6245296,33.2248 26.624529,33.2248 0 0 1 -26.6245264,-33.2248 26.624529,33.2248 0 0 1 26.6245264,-33.2248 26.624529,33.2248 0 0 1 26.6245296,33.2248 z m 38.725583,7.23686 a 63.83276,86.662025 0 0 1 -63.83276263,86.66202 63.83276,86.662025 0 0 1 -63.83275637,-86.66202 63.83276,86.662025 0 0 1 63.83275637,-86.66203 63.83276,86.662025 0 0 1 63.83276263,86.66203 z" /> + <path + id="path1616" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m -33.972656,78.003906 c -5.448084,-0.0067 -10.879166,1.126733 -15.911534,3.200592 -6.434278,2.640102 -12.203101,6.746747 -17.112432,11.646375 -5.615727,5.606754 -10.155693,12.234247 -13.698617,19.319547 -5.025637,10.07139 -8.075823,21.0698 -9.404137,32.22982 -0.929057,7.84329 -1.028994,15.78377 -0.318528,23.64941 0.949874,10.43013 3.373453,20.75419 7.477269,30.40181 3.147723,7.39261 7.291819,14.39427 12.530953,20.50107 4.609017,5.36885 10.09446,10.04216 16.358941,13.36913 4.992823,2.65991 10.488914,4.41802 16.127704,4.96522 5.401312,0.5374 10.902307,-0.0494 16.08534,-1.65207 6.288727,-1.93251 12.0804339,-5.30822 17.1026144,-9.53253 6.064976,-5.09947 11.0564829,-11.39537 15.0277086,-18.2327 4.799013,-8.2768 8.130738,-17.3605 10.168206,-26.69612 2.118236,-9.73165 2.840671,-19.75239 2.304177,-29.69265 C 22.160684,140.44793 19.945118,129.47219 15.878226,119.18494 12.84973,111.538 8.7902785,104.26673 3.5902453,97.87971 -0.94233546,92.318409 -6.3678931,87.429138 -12.615394,83.86693 c -4.987546,-2.851123 -10.510897,-4.811512 -16.219249,-5.535287 -1.70344,-0.217795 -3.420686,-0.327822 -5.138013,-0.327737 z m -1.517578,32.353514 c 4.550672,-0.0101 9.094595,1.08692 13.14694,3.15536 4.702214,2.38193 8.725725,5.98849 11.857042,10.20877 4.0837553,5.50159 6.710819,12.02521 7.8652338,18.76398 1.5657554,9.13429 0.4261756,18.74427 -3.4026815,27.19648 -2.3513356,5.18393 -5.7347853,9.9412 -10.0798093,13.64163 -3.563154,3.04205 -7.795765,5.33251 -12.351895,6.46599 -5.707319,1.43674 -11.853271,1.07808 -17.348531,-1.0333 -4.51594,-1.72078 -8.557357,-4.5744 -11.860694,-8.08549 -4.240834,-4.50063 -7.313413,-10.03709 -9.181653,-15.91595 -3.370435,-10.59683 -2.853975,-22.40133 1.537148,-32.62729 2.368672,-5.51241 5.8866,-10.57857 10.472304,-14.47504 3.636508,-3.09467 7.970078,-5.40501 12.626743,-6.50765 2.19857,-0.52632 4.459389,-0.78826 6.719853,-0.78749 z" + inkscape:path-effect="#path-effect1640" + inkscape:original-d="m -8.8660351,150.50538 a 26.624529,33.2248 0 0 1 -26.6245299,33.2248 26.624529,33.2248 0 0 1 -26.624526,-33.2248 26.624529,33.2248 0 0 1 26.624526,-33.2248 26.624529,33.2248 0 0 1 26.6245299,33.2248 z m 38.7255801,7.23686 a 63.83276,86.662025 0 0 1 -63.83276,86.66202 63.83276,86.662025 0 0 1 -63.832757,-86.66202 63.83276,86.662025 0 0 1 63.832757,-86.662029 63.83276,86.662025 0 0 1 63.83276,86.662029 z" /> + <path + id="path1652" + style="fill:#c83737;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 286.51758,-634.54297 c -82.7488,0 -139.16992,88.5797 -139.16992,182.39453 0,77.17355 38.56381,150.90133 98.89648,174.40235 26.92684,54.51299 76.24006,94.60352 136.62695,94.60351 92.91988,2e-5 160.0293,-93.60453 160.0293,-197.23242 0,-101.80178 -64.78448,-193.86283 -155.16016,-197.07812 -24.00138,-33.4152 -58.94309,-57.08985 -101.22265,-57.08985 z m 62.12304,138.19922 c 3.77116,13.43084 5.98829,28.27401 5.98829,44.19531 0,60.06079 -28.04491,100.45697 -56.36329,109.42578 -2.71748,-11.87751 -4.36328,-24.43301 -4.36328,-37.65234 0,-55.38244 24.38167,-97.61537 54.73828,-115.96875 z" + inkscape:path-effect="#path-effect1654" + inkscape:original-d="M 507.37089,-380.37454 A 124.49909,161.70192 0 0 1 382.8718,-218.67263 124.49909,161.70192 0 0 1 258.37271,-380.37454 124.49909,161.70192 0 0 1 382.8718,-542.07646 124.49909,161.70192 0 0 1 507.37089,-380.37454 Z m -117.21342,-71.77477 a 103.63992,146.86452 0 0 1 -103.63992,146.86452 103.63992,146.86452 0 0 1 -103.63992,-146.86452 103.63992,146.86452 0 0 1 103.63992,-146.86452 103.63992,146.86452 0 0 1 103.63992,146.86452 z" /> + <path + id="path1622" + style="fill:#c83737;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 253.23047,117.94336 c -8.21232,-0.008 -16.33207,2.23922 -23.61486,5.9722 -8.75629,4.46593 -16.37504,10.92827 -22.82397,18.30305 -8.59298,9.85166 -15.1784,21.34547 -20.08886,33.42983 -7.02407,17.34467 -10.62397,35.95864 -11.51127,54.61561 -0.36242,7.73238 -0.27317,15.48881 0.32663,23.20701 0.5023,4.81173 0.80941,9.65254 1.67413,14.41885 0.67446,4.15296 1.36299,8.30895 2.38576,12.39338 1.04419,4.55095 2.28032,9.05773 3.74722,13.49102 1.7968,5.51545 3.92941,10.92065 6.39438,16.17184 1.69541,3.7229 3.68393,7.30342 5.71733,10.84968 1.55602,2.61333 3.20028,5.17523 4.96148,7.65534 -0.5987,-8.02476 -0.87506,-16.08157 -0.57674,-24.12629 0.21755,-6.23728 0.61386,-12.4704 1.3115,-18.67345 1.91473,-17.00585 5.65763,-33.82136 11.37506,-49.95802 8.31286,-23.49785 20.74458,-45.67966 37.40799,-64.28469 12.57458,-14.04299 27.63466,-25.97925 44.60133,-34.27395 -6.89324,-6.82611 -15.00394,-12.58264 -24.13572,-15.98406 -3.77806,-1.42066 -7.72594,-2.37476 -11.7327,-2.85775 -1.7969,-0.22036 -3.60797,-0.34548 -5.41869,-0.3496 z m 120.9043,61.45703 c 2.57801,9.30501 4.52631,18.78251 5.86005,28.34504 0.72139,4.80451 1.16231,9.64642 1.55078,14.48767 0.32635,3.23407 0.4413,6.4852 0.57591,9.73162 0.27148,7.14632 0.11285,14.30307 -0.32905,21.43925 -0.35072,6.19986 -1.02777,12.37887 -1.90349,18.5256 -0.68574,4.80995 -1.53374,9.59632 -2.55304,14.34683 -1.39849,6.74577 -3.13452,13.42126 -5.2396,19.98148 -1.12679,3.56333 -2.316,7.10755 -3.6481,10.59997 -2.41751,6.37406 -5.09228,12.65694 -8.16055,18.74643 -3.80732,7.58738 -8.11384,14.92796 -12.96587,21.89568 -3.08798,4.47895 -6.45957,8.7597 -10.00814,12.88186 -2.71992,3.1534 -5.57783,6.1876 -8.5818,9.07205 -3.91112,3.78905 -8.04379,7.35472 -12.40728,10.6139 -2.30491,1.64777 -4.58411,3.33633 -7.0007,4.82003 -3.9246,2.5367 -8.02474,4.80065 -12.24154,6.81298 -2.67488,1.24716 -5.3742,2.44764 -8.15262,3.44807 -2.16069,0.86645 -4.37865,1.57548 -6.61118,2.23096 -0.6656,0.20679 -1.32442,0.43587 -1.99628,0.62214 6.5525,8.85771 14.27738,16.8993 23.17405,23.4257 2.79299,2.06018 5.72141,3.93457 8.71168,5.6943 5.29109,2.96355 10.85007,5.48456 16.66701,7.22585 2.51846,0.82503 5.10847,1.42098 7.71172,1.90808 5.595,1.01236 11.30437,1.49215 16.98677,1.14146 10.62171,-0.59637 21.03516,-3.6854 30.46145,-8.57379 11.0467,-5.71387 20.77061,-13.78945 28.95145,-23.11842 10.40371,-11.85903 18.37699,-25.73171 24.11442,-40.39551 6.82925,-17.49712 10.49073,-36.16009 11.37655,-54.90088 0.32683,-6.64366 0.28328,-13.3037 -0.11142,-19.94342 -0.37581,-7.42057 -1.27973,-14.80803 -2.53951,-22.12833 -0.98986,-5.63094 -2.32201,-11.1983 -3.8643,-16.70214 -4.87002,-17.09959 -12.52115,-33.48957 -23.22208,-47.72877 -9.10071,-12.0918 -20.49793,-22.63935 -33.91524,-29.76322 -3.44652,-1.82817 -7.01838,-3.42235 -10.69005,-4.74247 z" + inkscape:original-d="M 474.0833,311.19658 A 124.49909,161.70192 0 0 1 349.58421,472.89849 124.49909,161.70192 0 0 1 225.08512,311.19658 124.49909,161.70192 0 0 1 349.58421,149.49465 124.49909,161.70192 0 0 1 474.0833,311.19658 Z M 356.86988,239.42181 A 103.63992,146.86452 0 0 1 253.22996,386.28633 103.63992,146.86452 0 0 1 149.59004,239.42181 103.63992,146.86452 0 0 1 253.22996,92.557292 103.63992,146.86452 0 0 1 356.86988,239.42181 Z" + inkscape:path-effect="#path-effect1642" /> + <g + id="g1660" + inkscape:path-effect="#path-effect1662" + transform="translate(-103.6134,-636.91437)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1656" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,255.45312 c -84.772646,-1e-5 -161.283206,56.80926 -161.283206,135.49024 0,78.68098 76.51057,135.49023 161.283206,135.49023 84.772634,0 161.283204,-56.80925 161.283204,-135.49023 0,-78.68098 -76.510575,-135.49024 -161.283204,-135.49024 z" /> + <path + id="path1658" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m 5.3066406,127.28125 -52.4882816,84.86719 -99.667969,4.875 64.494141,76.14258 -26.162111,96.29687 92.345705,-37.80664 83.498047,54.63867 L 59.908203,306.7832 137.67383,244.25781 40.742188,220.5625 Z" + inkscape:original-d="m 28.693756,340.79243 -41.24201,-26.98797 -45.612767,18.67429 12.922603,-47.56323 -31.855423,-37.60964 49.228618,-2.40772 25.9250314,-41.91833 17.5023566,46.07517 47.877974,11.7027 -38.411567,30.88374 z" /> + </g> + <g + id="g1634" + inkscape:path-effect="#path-effect1636" + transform="translate(-136.90099,54.656749)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1627" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,314.00195 c -14.461769,-0.002 -28.963005,2.18361 -42.65465,6.894 -12.910866,4.44143 -25.135806,11.14456 -35.382786,20.21243 -7.31327,6.47563 -13.60662,14.18642 -18.03401,22.9175 -3.57122,7.0288 -5.88459,14.7293 -6.49385,22.60181 -0.5723,7.17418 0.31289,14.44303 2.4539,21.30802 2.63293,8.48866 7.12506,16.33797 12.75188,23.19245 6.68632,8.14824 14.95183,14.93387 23.99204,20.31724 13.93752,8.29079 29.696453,13.28391 45.748793,15.33203 9.897767,1.25871 19.930507,1.43736 29.869777,0.57702 14.144523,-1.23449 28.136913,-4.68607 41.0528687,-10.62578 10.901156,-5.0161 21.0529853,-11.82122 29.4386983,-20.43806 6.697934,-6.88352 12.255103,-14.9593 15.800034,-23.91019 2.816116,-7.09165 4.32134,-14.72705 4.183849,-22.36576 -0.125193,-7.90236 -1.995774,-15.73793 -5.208249,-22.94624 -3.930311,-8.84073 -9.800395,-16.74369 -16.752943,-23.44034 -8.388333,-8.0776 -18.3423941,-14.45054 -28.9750716,-19.15276 -14.6888184,-6.49315 -30.6765114,-9.81437 -46.6978884,-10.38279 -1.696742,-0.0606 -3.394571,-0.0906 -5.092392,-0.0906 z" /> + <path + id="path1629" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m -7.2988281,258.9707 c -2.093099,3.38412 -4.1861979,6.76823 -6.2792969,10.15235 -3.973307,0.19401 -7.946615,0.38802 -11.919922,0.58203 2.570964,3.03581 5.141927,6.07161 7.712891,9.10742 -1.042969,3.83919 -2.085937,7.67839 -3.128906,11.51758 3.68164,-1.50716 7.363281,-3.01433 11.0449214,-4.52149 3.3294271,2.17904 6.6588541,4.35807 9.98828122,6.53711 -0.29557291,-3.9681 -0.59114583,-7.93619 -0.88671874,-11.90429 3.10026042,-2.49284 6.20052082,-4.98568 9.30078122,-7.47852 -3.8645833,-0.94466 -7.72916667,-1.88932 -11.59375,-2.83398 -1.4127604,-3.7194 -2.8255208,-7.43881 -4.2382812,-11.15821 z" + inkscape:original-d="m 28.693756,340.79243 -41.24201,-26.98797 -45.612767,18.67429 12.922603,-47.56323 -31.855423,-37.60964 49.228618,-2.40772 25.9250314,-41.91833 17.5023566,46.07517 47.877974,11.7027 -38.411567,30.88374 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PatternAlongPath_mixed_0_92_5.svg b/testfiles/lpe_tests/PatternAlongPath_mixed_0_92_5.svg new file mode 100644 index 0000000..6851a5f --- /dev/null +++ b/testfiles/lpe_tests/PatternAlongPath_mixed_0_92_5.svg @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg30" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="0.2"> + <defs + id="defs24"> + <inkscape:path-effect + effect="bend_path" + id="path-effect02" + is_visible="true" + bendpath="m 82.297345,237.53599 c 25.395355,51.27027 45.799555,19.81549 66.906005,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect01" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="bend_path" + id="path-effect04" + is_visible="true" + bendpath="m -63.896159,235.56126 c 81.310561,-3.231 188.447999,-90.39934 240.949219,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect03" + is_visible="true" + pattern="m -92.982138,148.83333 -31.137792,-13.18289 -28.51224,18.17698 2.91557,-33.68754 -26.09811,-21.499757 32.93972,-7.637147 12.38272,-31.464565 17.4423,28.96752 33.751048,2.053587 -22.159788,25.540062 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect05" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <!--<clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath106"> + <path + style="fill:#ff0000;stroke-width:0.26458332" + d="m 146.58027,255.34206 c 4.40329,4.38582 7.07348,10.84442 6.08716,18.35464 0,0 0,0 0,0 -0.54405,4.38155 -2.51679,9.30581 -6.86059,14.55284 -3.10857,3.91956 -8.16507,7.87327 -15.69805,11.33454 -5.11206,2.33769 -11.14957,3.67451 -17.97308,3.80818 -2.35094,0.046 -4.78029,-0.0511 -7.27754,-0.29492 -10.904811,-1.77099 -19.188147,-5.75731 -24.855153,-10.99114 0,0 -3e-6,0 -3e-6,0 -8.385265,-7.82973 -11.637197,-15.12473 -12.203568,-21.04832 0,0 0,0 0,0 -1.187638,-10.10297 3.234073,-16.99404 9.231566,-20.49065 6.24374,-3.64018 13.797721,-3.66006 21.147996,-2.47304 0,0 2e-6,0 2e-6,0 4.26675,0.66679 8.12107,1.64199 10.68031,1.55398 0,0 0,0 0,0 1.507,-0.1929 2.17146,-0.36854 2.02093,-0.71202 -0.045,-0.0122 -0.0588,-0.0232 -0.0381,-0.0279 0.0659,-0.015 0.40876,0.0297 1.08157,0.19882 1.22254,0.17565 3.1788,-0.0456 5.72495,-0.2706 3.47768,-0.35334 7.26449,-0.75149 11.25581,-0.55674 0,0 0,0 0,0 6.91909,0.33911 13.09388,2.49858 17.6758,7.06232 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:original-d="m 161.01785,263.64749 a 34.256705,27.30487 0 0 1 -34.2567,27.30488 34.256705,27.30487 0 0 1 -34.25671,-27.30488 34.256705,27.30487 0 0 1 34.25671,-27.30487 34.256705,27.30487 0 0 1 34.2567,27.30487 z" /> + </clipPath>--> + </defs> + <g id="t" transform="scale(0.445)"> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -96.00595,43.000001 c 1.12691,-1.874672 57.141873,30.146166 134.835161,76.802349 5.522235,-2.62146 23.443782,-11.13962 28.966014,-13.76108 9.479995,-4.42881 19.138478,-9.18307 28.762558,-14.323284 9.716607,-5.190448 19.512687,-10.795583 28.902437,-17.068515 -0.003,0.0019 0.50636,-0.340469 0.50356,-0.338593 8.03978,-5.416285 15.49753,-10.957648 21.67036,-17.509759 2.52057,-2.68686 4.75783,-5.403214 6.38559,-8.302498 l 0,0 c 1.31008,-2.401377 2.29472,-4.761195 2.42842,-6.974059 0.18589,-1.953104 -0.27117,-4.031272 -1.22362,-5.755083 l 0,0 c -1.19712,-2.341221 -3.48858,-4.370684 -6.05193,-6.251241 l 0,0 c -3.8146,-2.719749 -8.3266,-4.71805 -12.95094,-6.469566 l 0,0 c -6.75169,-2.529778 -13.81106,-4.33826 -20.72426,-5.839497 l 0,0 C 100.29818,13.932448 86.397988,11.761293 72.845632,11.076792 l 0,0 -1.5e-5,1e-6 -10e-7,0 C 62.104263,10.547487 52.477378,10.918303 43.470273,12.794457 l 0,0 c -7.14284,1.502433 -13.343689,3.781639 -18.484063,7.176594 l 0,0 c -4.454272,2.923938 -7.927361,6.566327 -10.326277,10.438946 l 0,0 c -2.458382,3.937425 -3.884641,8.186113 -4.6771877,11.996764 l 0,0 c -0.8869029,4.273144 -1.0487325,8.329865 -0.9898268,11.57237 l 0,0 c 0.069299,3.698343 0.4349771,6.782148 0.6753522,8.798681 l 0,0 c 0.1341923,1.124818 0.2429313,2.015973 0.283693,2.616867 l 0,0 c 0.021436,0.315941 0.024951,0.562523 0.00671,0.734956 l 0,0 c 0,0 -10e-8,2e-6 -10e-8,2e-6 -0.00949,0.08756 -0.024717,0.157037 -0.045943,0.207705 0,0 -2e-7,10e-7 -2e-7,10e-7 -0.045483,0.03791 -0.06689,0.06204 -0.076893,0.07679 -0.00985,0.0146 -0.00858,0.01997 -0.00846,0.02038 0,0 0,0 0,0 0,0 10e-8,0 10e-8,0 4e-6,1.3e-5 2.1e-6,8e-6 2.1e-6,8e-6 0,0 2e-6,5e-6 -3.4e-6,-8e-6 0,0 0,0 0,0 0,0 0,0 0,0 -1.586e-4,-3.93e-4 -0.0025,-0.0054 -0.019295,-0.01079 -0.016972,-0.0054 -0.048666,-0.0112 -0.1076304,-0.01303 -7e-7,10e-7 -1.3e-6,0 -1.3e-6,0 -0.048088,-0.02798 -0.1023329,-0.07572 -0.1627162,-0.143513 0,0 -7e-7,-1e-6 -7e-7,-1e-6 l 0,0 C 9.4192659,66.134789 9.2793552,65.927705 9.1205752,65.643987 l -10e-8,0 C 8.8146567,65.097342 8.4433787,64.274583 8.0421928,63.166679 l 0,0 C 7.3202118,61.173372 6.4513429,58.119607 5.9115133,54.225564 l 0,0 C 5.4389047,50.828227 5.1867708,46.505146 5.7693011,41.722847 l 0,0 C 6.288872,37.449005 7.5474181,32.569043 10.108761,27.789204 l 0,0 c 2.535779,-4.696592 6.333109,-9.202805 11.37479,-12.866809 l 0,0 C 27.25484,10.747406 34.158507,7.7835478 41.90036,5.8978585 l 0,0 C 51.611184,3.5134485 61.943672,2.7257764 73.141049,2.998987 l 0,1.8e-6 1.6e-5,-1.4e-6 0,0 c 14.141617,0.3286099 28.629535,2.233091 44.194875,5.3156485 l 0,0 c 7.1911,1.4141531 14.70165,3.2255771 22.1229,5.8742411 l 0,0 c 5.06304,1.788021 10.31403,4.091463 15.20811,7.425372 l 0,0 c 3.38384,2.253505 6.67561,5.320069 9.06417,9.419686 1.8992,3.398686 2.79088,7.318336 2.4947,11.286636 -0.38119,4.112032 -1.7556,7.836517 -3.60588,11.033246 l 0,0 c -2.18413,3.852895 -4.88073,7.230193 -7.75616,10.265198 -6.96416,7.378244 -14.98711,13.43088 -23.32904,18.999663 -0.17408,0.116209 -0.34816,0.232114 -0.52221,0.34772 -9.7819,6.525895 -19.87573,12.272175 -29.81056,17.506342 -9.889345,5.21118 -19.78287,9.98446 -29.476935,14.38906 -8.003562,3.13864 -25.443524,9.97101 -33.447085,13.10965 C -42.196093,79.54929 -97.132968,44.874853 -96.00595,43.000001 Z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect05" + inkscape:original-d="M -96.00595,43.000001 38.553572,123.8869 c 0,0 213.178568,-83.154757 77.863098,-111.124995 C -18.898809,-15.208333 9.8273808,66.434522 9.8273808,66.434522" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 152.65849,100.5663 c 20.86023,12.75112 37.43135,29.32026 49.6301,47.58868 13.59959,21.93003 19.12592,42.44335 20.17112,60.85364 -18.7901,-8.52561 -39.22291,-13.3731 -57.3882,-12.63372 -16.13916,0.6799 -29.84239,6.34941 -39.66931,14.28678 -3.19137,2.5247 -6.05647,5.27884 -8.657,8.17748 -5.85732,7.59119 -10.2683,16.06182 -14.01104,24.75867 -5.873085,13.47786 -9.473537,27.42406 -13.883168,42.5837 -1.177413,4.00975 -2.317978,8.06292 -3.459126,12.19403 -17.075695,-8.07708 -38.829221,-12.73329 -63.979693,-17.47117 6.13215,-6.71561 11.199584,-13.26812 15.344317,-19.36337 -9.416444,-4.78978 -18.535882,-9.38551 -27.7709852,-14.35772 0,0 -6.5e-6,0 -6.5e-6,0 -15.9800042,-8.62786 -30.9020703,-17.54856 -44.0777433,-28.03762 -13.756943,-10.95882 -24.711581,-22.98218 -30.975628,-36.68233 6.488013,9.23126 16.616332,17.07774 28.043058,24.07898 12.531743,7.65917 26.586768,14.29597 40.5275806,20.60229 21.2386774,9.60187 41.9397544,18.20429 60.6425504,28.86048 3.303999,0.62986 6.39342,1.35987 9.289693,2.19099 1.430322,-7.3556 2.808835,-14.04597 4.255538,-20.57449 1.897863,-8.60132 3.603533,-15.83724 5.494373,-23.09486 4.823241,-4.89887 10.637868,-10.71194 17.237392,-16.26376 8.190878,-6.88961 19.069418,-14.72297 33.697108,-19.73874 0,0 1e-5,0 1e-5,0 3.94486,-1.3062 8.17833,-2.40065 12.67713,-3.20197 10.56066,-3.25485 22.47341,-4.74518 35.27982,-3.76315 -10.56314,-12.0327 -23.77806,-22.21003 -39.19789,-29.51092 0,0 0,-1e-5 0,-1e-5 -16.0223,-7.42616 -32.37472,-12.25578 -47.634671,-14.67209 10e-7,0 -1e-5,0 -1e-5,0 -16.410743,-2.79716 -32.150398,-4.15918 -46.35441,-4.76527 1e-6,0 -8e-6,0 -8e-6,0 -14.54916,-0.68838 -28.426071,-0.96892 -41.4045275,-1.3503 11.9217705,-2.31231 25.2392945,-4.35155 39.6579545,-5.62424 13.843308,-1.28497 29.85575,-1.48807 47.256704,0.18263 15.933978,1.32925 33.637458,5.56649 51.625668,13.12526 13.00259,5.62335 24.74858,13.27931 34.92075,22.56737 -5.28598,-14.30086 -13.50645,-32.33459 -27.28745,-50.94525 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect03;#path-effect04" + inkscape:original-d="M -69.547617,188.14285 52.160714,308.33927 154.97024,187.3869 38.27795,127.97145" + transform="translate(-80.023759,-16.422809)" /> + <!-- <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 88.624459,234.40415 c 0.03307,0.0149 0.06484,0.0349 0.09596,0.0603 0.0301,0.0247 0.05929,0.0543 0.08758,0.0888 0,0 0,0 0,0 0.05637,0.0688 0.109193,0.157 0.158587,0.26436 0,0 0,0 0,0 0,0 0,0 0,0 0.09809,0.21312 0.182629,0.50132 0.255207,0.86227 0,0 0,0 0,0 0,0 0,0 0,0 0.143743,0.71488 0.237908,1.6968 0.308246,2.95577 0,0 0,0 0,0 0.134896,2.41443 0.143814,5.79692 0.473042,10.11228 0,0 0,0 0,0 0.121958,1.59859 0.293144,3.31339 0.545766,5.11382 0.578815,4.16747 1.68085,9.60527 5.093494,15.23333 2.244579,3.6226 5.891623,7.46882 11.860323,10.21825 0.24682,0.10215 0.49545,0.20198 0.74581,0.29944 0,0 0,0 0,0 4.63604,1.80381 10.04368,2.8633 15.58041,2.53996 5.59257,-0.2476 11.05304,-1.17955 15.83353,-2.50357 4.92472,-1.28607 9.55331,-2.82419 13.65862,-4.3081 0,0 0,0 0,0 -0.0119,0.004 0.6707,-0.24502 0.65876,-0.24067 0,0 0,0 0,0 3.6821,-1.33758 7.13912,-2.64018 10.08981,-4.0362 0,0 0,0 0,0 1.0064,-0.4998 1.71784,-0.81608 2.07376,-1.09602 0,0 0,0 0,0 0.10356,-0.0995 0.0245,-0.0123 -0.27612,0.24439 0,0 0,0 0,0 -1e-5,0 -1e-5,10e-6 -1e-5,10e-6 l 0,0 c -0.28439,0.1691 -0.68635,0.78373 -1.33273,1.89955 v 0 c 0,10e-6 -1e-5,2e-5 -1e-5,3e-5 l 0,0 c -0.47815,1.29497 -0.72117,2.02128 -0.59588,2.17785 0,0 1e-5,10e-6 1e-5,10e-6 0.0217,0.22915 0.006,0.37648 -0.0152,0.14733 -0.0983,-0.47981 -0.42547,-1.05632 -0.84343,-1.81138 -0.0398,-0.0719 -0.0803,-0.14523 -0.12156,-0.22028 -1.52257,-2.60835 -3.63843,-5.09438 -5.72482,-7.53916 0,0 0,0 0,0 -6.28389,-7.30974 -13.95437,-14.97114 -19.69072,-20.8341 0,0 0,0 0,0 -8.14171,-8.31736 -14.73513,-15.07937 -19.61586,-20.55578 0,0 0,0 0,0 -2.64842,-2.97167 -4.67686,-5.43862 -5.94236,-7.29698 0,0 0,0 0,0 -0.65662,-0.96422 -1.11039,-1.76815 -1.34247,-2.39824 0,0 0,0 0,0 -0.11783,-0.31991 -0.17861,-0.59535 -0.18,-0.82451 0,0 0,0 0,-1e-5 0,0 0,0 0,0 -6.6e-4,-0.11535 0.0137,-0.21907 0.0434,-0.31086 0,0 0,0 0,0 0,0 0,0 0,0 0.0756,-0.11295 0.11049,-0.17353 0.1264,-0.20619 0.0156,-0.0321 0.0126,-0.0365 0.0123,-0.0368 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -10e-6,-1e-5 -10e-6,-1e-5 -10e-6,-1e-5 0,0 0,0 10e-6,1e-5 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 3.6e-4,2.3e-4 0.005,0.003 0.0364,-0.0167 0.0315,-0.0195 0.0898,-0.0611 0.19738,-0.14947 0,0 0,0 0,0 0,0 0,0 0,0 0.0919,-0.0416 0.1986,-0.0706 0.31995,-0.0872 0,0 0,0 0,0 0,0 0,0 0,0 0.24094,-0.033 0.53925,-0.0171 0.89254,0.0464 0,0 0,0 0,0 0.69595,0.12512 1.60539,0.43511 2.70722,0.9211 0,0 0,0 0,0 2.12259,0.93621 4.97515,2.53324 8.36951,4.73419 0,0 0,0 0,0 6.15976,3.99382 13.97936,9.87817 22.66396,17.65192 0,0 0,0 0,0 6.66601,5.9613 13.59439,12.70255 20.62788,20.85005 0,0 0,0 0,0 2.17454,2.50374 4.48035,5.26997 6.56369,8.42982 0.0564,0.0825 0.11323,0.1669 0.17046,0.25328 0.59917,0.90426 1.24347,2.02864 1.80552,3.39577 0.22155,0.49922 0.43482,1.23395 0.57853,2.20029 0,0 1e-5,2e-5 1e-5,2e-5 0.1865,0.65708 0.0782,1.82258 -0.49193,3.5155 0,0 -2e-5,4e-5 -2e-5,4e-5 -0.74055,1.52197 -1.56228,2.644 -2.32112,3.27915 0,0 0,0 0,0 -1e-5,0 -2e-5,10e-6 -2e-5,10e-6 0,0 0,0 0,0 -0.94766,0.89088 -1.79134,1.55709 -2.45994,1.98556 0,0 -1e-5,10e-6 -1e-5,10e-6 -1.92279,1.27747 -3.67392,2.219 -5.14274,2.90672 0,0 0,0 0,0 -1.02211,0.49619 -2.05135,0.97546 -3.08716,1.43887 -3.83648,1.736 -7.84096,3.24472 -11.94146,4.60562 0,0 0,0 0,0 -1.13141,0.3786 -2.28198,0.74993 -3.45019,1.1115 -5.35277,1.77377 -11.8659,3.1578 -18.83234,3.83992 -7.23928,0.82142 -14.75285,-0.32549 -21.60338,-2.70952 -6.252659,-2.55244 -10.614646,-5.86876 -13.659996,-9.22853 0,0 0,0 0,0 -1.080217,-1.19102 -2.014511,-2.41022 -2.820106,-3.63753 0,0 -10e-7,0 -10e-7,0 -4.582955,-7.22147 -5.782062,-13.69919 -6.034646,-18.72557 -0.283535,-4.81909 0.07711,-9.00447 0.570917,-12.26229 0,0 0,0 0,0 0.618389,-4.08044 1.547844,-7.36731 2.290307,-9.35924 0,0 0,0 0,0 0.401243,-1.07647 0.783181,-1.87686 1.121523,-2.3786 0,0 0,0 0,0 0,0 10e-7,0 10e-7,0 0.172566,-0.25591 0.334965,-0.43624 0.485794,-0.53901 0,0 0,0 0,0 0,0 1e-6,0 1e-6,0 0.07599,-0.0517 0.149048,-0.0839 0.219078,-0.096 0,0 0,0 0,0 0.03515,-0.006 0.06953,-0.007 0.103133,-0.003 0.03474,0.004 0.06832,0.0134 0.101394,0.0283 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect01;#path-effect02" + inkscape:original-d="m 82.398808,230.47619 c 0,0 52.916662,49.89284 58.964282,46.86905 6.04762,-3.02381 1.07286,-84.75943 1.07286,-84.75943 v 0 0 0 0" + clip-path="url(#clipPath106)" />--> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PatternAlongPath_multiple_mm_1_0_2.svg b/testfiles/lpe_tests/PatternAlongPath_multiple_mm_1_0_2.svg new file mode 100644 index 0000000..3b93c20 --- /dev/null +++ b/testfiles/lpe_tests/PatternAlongPath_multiple_mm_1_0_2.svg @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bend_path" + id="clipPath02" + is_visible="true" + lpeversion="1" + bendpath="m -40.69542,174.22194 c 104.485786,-17.217 237.08433,-133.133756 298.74555,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect01" + is_visible="true" + lpeversion="1" + pattern="m -137.07091,101.96249 -33.15834,-12.573816 -29.15597,20.186756 1.71192,-35.42097 -28.20844,-21.490926 34.21636,-9.317549 11.7222,-33.4688798 19.43495,29.6624088 35.45316,0.806021 -22.2049,27.649926 z" + copytype="repeated" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect03" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect04" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + </defs> + <g id="t" transform="scale(0.445)"> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32.329146,33.420325 c 2.007472,-1.437508 44.210571,56.228913 96.951294,133.373725 l 0.002,-0.006 c -0.0905,0.005 -0.18076,0.01 -0.27106,0.0145 0.001,-5e-5 -0.78453,0.0254 -0.78307,0.0253 0.17005,-0.005 -3.24831,0.10507 -3.07827,0.0996 0.0928,-0.22318 0.32224,-0.77416 0.41519,-0.99736 0,0 1e-5,-2e-5 1e-5,-2e-5 -0.13174,0.31633 1.70822,-4.10101 1.57649,-3.78468 0,0 1e-5,-2e-5 1e-5,-2e-5 -0.0897,0.21532 5.73293,-13.74015 5.64321,-13.52484 0.0595,-0.14234 5.40193,-12.90952 5.4614,-13.05185 0.37621,-0.89789 11.46245,-27.28842 11.83866,-28.18631 17.69985,-42.048573 -0.0756,0.17936 17.62425,-41.869214 l 0,0 c 2.07279,-4.951638 4.02146,-9.606023 5.92881,-14.328541 l 0,0 c 0.59019,-1.462382 1.15624,-2.869733 1.67995,-4.265282 l 0,0 c 0.16033,-0.429247 0.3052,-0.817187 0.42314,-1.171417 l 0,0 c 0.038,-0.116514 0.0647,-0.193321 0.076,-0.231811 l 0,0 c 0.0105,-0.08432 -0.003,0.02697 -0.0524,0.331247 -0.01,1.231493 0.14246,2.037869 0.4766,2.430338 0.32847,0.501349 0.53598,0.777884 0.63956,0.824131 0.2559,0.183037 0.26487,0.222221 0.067,0.07058 l 0,0 c -0.6178,-0.380506 -1.48224,-0.720221 -2.49296,-1.136542 l 0,0 c -3.47083,-1.390796 -7.18698,-2.561757 -10.77254,-3.691808 l 0,0 c -11.60304,-3.648059 -24.24089,-7.166941 -33.67648,-9.834592 l 0,0 c -14.31602,-4.047017 -25.1055,-7.082739 -33.756487,-9.690345 l 0,0 C 91.482945,23.382441 87.761112,22.19198 85.206033,21.268062 l 0,0 C 83.864161,20.782842 82.843904,20.37109 82.16417,20.036746 l 0,0 c -0.347249,-0.170804 -0.605871,-0.321521 -0.773405,-0.451599 l 0,0 c 0,0 -10e-7,-10e-7 -10e-7,-10e-7 -0.08459,-0.06569 -0.145988,-0.126141 -0.183865,-0.181268 0,0 0,-10e-7 0,-10e-7 0,0 0,-1e-6 0,-1e-6 -0.0088,-0.07198 -0.0192,-0.109862 -0.02751,-0.129764 -0.0083,-0.01973 -0.01445,-0.02172 -0.01481,-0.02182 0,0 0,0 0,0 -1e-5,-2e-6 -8e-6,-2e-6 -8e-6,-2e-6 0,0 -2e-6,0 8e-6,1e-6 0,0 0,0 0,0 3.7e-4,7e-5 0.0068,0.001 0.0229,-0.01308 0.01623,-0.01421 0.04225,-0.04364 0.08182,-0.104394 0,0 1e-6,-1e-6 1e-6,-1e-6 0,0 0,0 0,0 0.05832,-0.03281 0.140115,-0.05999 0.245112,-0.08161 0,0 10e-7,0 10e-7,0 l 0,0 c 0.20789,-0.04283 0.506596,-0.06382 0.89387,-0.06337 l 0,0 c 0.758415,9.01e-4 1.855499,0.08407 3.274634,0.247024 l 0,0 c 2.700792,0.31013 6.567359,0.909106 11.474369,1.782276 l 0,0 c 8.410685,1.496594 20.405815,3.893518 34.480225,7.038842 l 0,0 c 9.8546,2.201484 22.17112,5.041721 34.36907,8.415177 l 0,0 c 3.64482,1.004513 7.58546,2.114993 11.50672,3.542442 l 0,0 c 1.0693,0.376726 2.31821,0.858841 3.66822,1.577275 0.36022,0.160317 0.92305,0.526791 1.6477,1.147843 0.25021,0.183358 0.59648,0.609276 1.02298,1.286085 0.40358,0.516802 0.60299,1.465635 0.57661,2.838809 -0.0714,0.489387 -0.13195,0.781988 -0.16908,0.878172 l 0,0 c -0.066,0.254472 -0.12788,0.467689 -0.18132,0.640524 l 0,0 c -0.16615,0.544198 -0.33534,1.044528 -0.49534,1.506339 l 0,0 c -0.53115,1.53867 -1.08658,3.034387 -1.64474,4.523446 -1.80928,4.829193 -3.68178,9.606527 -5.64985,14.588731 l 0,0 c -5.36249,13.57588 -10.97668,27.374101 -17.07763,42.180363 -3.80455,9.23323 -7.71867,18.65031 -11.74093,28.25012 -1.83892,4.38891 -3.66901,8.74097 -5.48676,13.04936 -1.92022,4.55125 -3.82602,9.05193 -5.71778,13.5025 -1e-5,1e-5 -1e-5,1e-5 -1e-5,2e-5 0.0235,-0.0554 -1.63023,3.83093 -1.6067,3.77556 0,0 0,1e-5 0,1e-5 0.0112,-0.0264 -0.43546,1.02163 -0.42423,0.99528 -0.008,0.001 -3.28625,0.61014 -3.29424,0.61163 -0.001,2.5e-4 -0.83666,0.15537 -0.83799,0.15562 -0.095,0.0159 -0.18991,0.0317 -0.28485,0.0476 l -1.7e-4,3e-5 C 72.178367,94.580448 30.321674,34.857833 32.329146,33.420325 Z" + id="path03" + inkscape:path-effect="#path-effect04" + inkscape:original-d="M 32.329146,33.420325 129.5476,169.18536 c 0,0 50.07202,-118.765773 50.54938,-122.828855 0.47736,-4.063082 -98.932408,-27.10422 -98.932408,-27.10422" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 29.093324,170.62113 c 2.24716,-1.60246 33.120979,40.11717 68.914774,93.12416 0.151266,0.22401 4.535412,6.72462 4.686682,6.94863 0,0 0,-10e-6 0,-10e-6 36.2189,-47.57555 66.66242,-83.88173 68.71549,-82.22448 2.05306,1.65726 -28.23322,40.58521 -68.89534,88.25246 0,0 -1e-5,1e-5 -1e-5,1e-5 0.18257,0.24262 -5.406385,-7.19168 -5.223814,-6.94907 C 57.39877,216.64355 26.846164,172.22359 29.093324,170.62113 Z" + id="path02" + inkscape:path-effect="#path-effect03" + inkscape:original-d="m 29.093324,170.62113 73.511526,103.08678 68.80541,-85.23847" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 52.582039,184.49388 c -15.297493,-6.67799 -29.083443,-13.6332 -41.708646,-21.63599 -3.670656,0.33663 -7.4435337,0.66289 -11.26318994,0.95768 -13.03152006,1.00575 -27.77184906,1.76717 -42.03070206,0.81429 10.793638,-8.18506 20.192355,-17.4494 29.11489,-26.96572 -5.466171,-10.75017 -9.244079,-22.04281 -11.750028,-33.59245 1.782548,0.56549 3.588069,1.11659 5.407034,1.65512 10.7152239,3.15435 22.3321358,5.9907 32.987382,8.60319 3.82386,-2.74551 7.591056,-5.5195 11.234097,-8.24365 6.403783,-4.8615 12.838707,-9.911353 18.729865,-14.591562 -1.127392,12.266662 -0.563093,24.122552 1.472553,35.246942 11.030398,6.09812 22.242277,12.13063 33.30898,18.30651 -9.573381,3.16932 -16.630163,5.66107 -29.555965,10.1149 0.218678,4.75458 0.630925,9.44525 1.237042,14.0563 0.687829,5.17938 1.625499,10.27503 2.816688,15.27444 z M 161.58138,155.5141 c -7.62736,4.93449 -15.01249,11.20799 -22.04847,17.38577 -2.16149,1.89284 -4.27073,3.82592 -6.32957,5.78544 -3.02954,7.35694 -6.36724,15.42002 -9.74151,23.18848 -4.8241,-0.14067 -10.04402,-0.0575 -15.76218,0.25121 -0.1882,-7.13978 -0.48954,-14.29169 -0.88014,-21.33734 -11.387457,-8.87177 -21.417331,-17.52622 -30.359627,-27.10346 12.303028,3.19814 23.286569,6.84179 33.214007,11.20358 0.95298,-2.06211 1.72713,-4.06175 2.31972,-5.99939 -2.8e-4,-5.77501 -0.17053,-11.51252 -0.52496,-17.16438 4.40519,-0.18226 9.27441,-0.59763 15.85912,-1.09483 0.81151,-1.31923 1.63524,-2.63503 2.47216,-3.94722 6.10142,-9.58901 12.82239,-19.07664 20.98661,-27.94551 -1.64299,11.23521 -4.15339,24.10993 -6.62905,35.73427 5.72081,3.32156 11.96198,7.02994 17.42389,11.04338 z m 124.19971,5.67248 c -12.44856,-15.34652 -27.22392,-28.33482 -43.13906,-36.9607 -1.41257,-0.76318 -2.83166,-1.48265 -4.25453,-2.15904 -13.54658,3.39022 -26.9542,8.24625 -38.14411,15.59354 -0.12411,-5.24869 -0.82756,-10.61738 -2.1988,-16.01169 -0.95715,-3.76074 -2.23425,-7.51743 -3.80859,-11.24937 -11.09921,-0.78906 -21.3815,0.72863 -30.15128,3.04552 -2.81957,0.74535 -5.52679,1.58192 -8.1163,2.48071 2.46037,-3.4191 5.03536,-6.76252 7.76027,-10.04326 6.47859,-7.788062 13.73353,-15.009159 22.06731,-21.51437 -2.51446,-10.483042 -6.9725,-21.056339 -13.82744,-31.333268 13.26583,1.306786 28.71794,4.509421 45.28922,11.031081 3.4463,1.447788 6.85422,3.034503 10.21316,4.765435 19.25142,-1.114279 39.94093,1.822353 60.08963,9.567748 0.17681,0.06772 0.35356,0.135646 0.53025,0.203783 -4.49806,11.989286 -11.58901,21.622481 -19.80045,29.597611 9.45923,17.54282 14.85044,35.17266 17.49072,52.98627 z" + id="path01" + inkscape:path-effect="#path-effect01;#clipPath02" + inkscape:original-d="M 18.727816,113.83898 98.832052,228.95326 218.39678,92.70685" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PatternAlongPath_multiple_px_1_0_2.svg b/testfiles/lpe_tests/PatternAlongPath_multiple_px_1_0_2.svg new file mode 100644 index 0000000..0bcbd31 --- /dev/null +++ b/testfiles/lpe_tests/PatternAlongPath_multiple_px_1_0_2.svg @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="bend_path" + id="clipPath02" + is_visible="true" + lpeversion="1" + bendpath="m -40.69542,174.22194 c 104.485786,-17.217 237.08433,-133.133756 298.74555,0" + prop_scale="1" + scale_y_rel="false" + vertical="false" + hide_knot="false" + bendpath-nodetypes="cc" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect01" + is_visible="true" + lpeversion="1" + pattern="m -137.07091,101.96249 -33.15834,-12.573816 -29.15597,20.186756 1.71192,-35.42097 -28.20844,-21.490926 34.21636,-9.317549 11.7222,-33.4688798 19.43495,29.6624088 35.45316,0.806021 -22.2049,27.649926 z" + copytype="repeated" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect03" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect04" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + </defs> + <g id="t" transform="scale(0.445)"> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32.329146,33.420325 c 2.007472,-1.437508 44.210571,56.228913 96.951294,133.373725 l 0.002,-0.006 c -0.0905,0.005 -0.18076,0.01 -0.27106,0.0145 0.001,-5e-5 -0.78453,0.0254 -0.78307,0.0253 0.17005,-0.005 -3.24831,0.10507 -3.07827,0.0996 0.0928,-0.22318 0.32224,-0.77416 0.41519,-0.99736 0,0 1e-5,-2e-5 1e-5,-2e-5 -0.13174,0.31633 1.70822,-4.10101 1.57649,-3.78468 0,0 1e-5,-2e-5 1e-5,-2e-5 -0.0897,0.21532 5.73293,-13.74015 5.64321,-13.52484 0.0595,-0.14234 5.40193,-12.90952 5.4614,-13.05185 0.37621,-0.89789 11.46245,-27.28842 11.83866,-28.18631 17.69985,-42.048573 -0.0756,0.17936 17.62425,-41.869214 l 0,0 c 2.07279,-4.951638 4.02146,-9.606023 5.92881,-14.328541 l 0,0 c 0.59019,-1.462382 1.15624,-2.869733 1.67995,-4.265282 l 0,0 c 0.16033,-0.429247 0.3052,-0.817187 0.42314,-1.171417 l 0,0 c 0.038,-0.116514 0.0647,-0.193321 0.076,-0.231811 l 0,0 c 0.0105,-0.08432 -0.003,0.02697 -0.0524,0.331247 -0.01,1.231493 0.14246,2.037869 0.4766,2.430338 0.32847,0.501349 0.53598,0.777884 0.63956,0.824131 0.2559,0.183037 0.26487,0.222221 0.067,0.07058 l 0,0 c -0.6178,-0.380506 -1.48224,-0.720221 -2.49296,-1.136542 l 0,0 c -3.47083,-1.390796 -7.18698,-2.561757 -10.77254,-3.691808 l 0,0 c -11.60304,-3.648059 -24.24089,-7.166941 -33.67648,-9.834592 l 0,0 c -14.31602,-4.047017 -25.1055,-7.082739 -33.756487,-9.690345 l 0,0 C 91.482945,23.382441 87.761112,22.19198 85.206033,21.268062 l 0,0 C 83.864161,20.782842 82.843904,20.37109 82.16417,20.036746 l 0,0 c -0.347249,-0.170804 -0.605871,-0.321521 -0.773405,-0.451599 l 0,0 c 0,0 -10e-7,-10e-7 -10e-7,-10e-7 -0.08459,-0.06569 -0.145988,-0.126141 -0.183865,-0.181268 0,0 0,-10e-7 0,-10e-7 0,0 0,-1e-6 0,-1e-6 -0.0088,-0.07198 -0.0192,-0.109862 -0.02751,-0.129764 -0.0083,-0.01973 -0.01445,-0.02172 -0.01481,-0.02182 0,0 0,0 0,0 -1e-5,-2e-6 -8e-6,-2e-6 -8e-6,-2e-6 0,0 -2e-6,0 8e-6,1e-6 0,0 0,0 0,0 3.7e-4,7e-5 0.0068,0.001 0.0229,-0.01308 0.01623,-0.01421 0.04225,-0.04364 0.08182,-0.104394 0,0 1e-6,-1e-6 1e-6,-1e-6 0,0 0,0 0,0 0.05832,-0.03281 0.140115,-0.05999 0.245112,-0.08161 0,0 10e-7,0 10e-7,0 l 0,0 c 0.20789,-0.04283 0.506596,-0.06382 0.89387,-0.06337 l 0,0 c 0.758415,9.01e-4 1.855499,0.08407 3.274634,0.247024 l 0,0 c 2.700792,0.31013 6.567359,0.909106 11.474369,1.782276 l 0,0 c 8.410685,1.496594 20.405815,3.893518 34.480225,7.038842 l 0,0 c 9.8546,2.201484 22.17112,5.041721 34.36907,8.415177 l 0,0 c 3.64482,1.004513 7.58546,2.114993 11.50672,3.542442 l 0,0 c 1.0693,0.376726 2.31821,0.858841 3.66822,1.577275 0.36022,0.160317 0.92305,0.526791 1.6477,1.147843 0.25021,0.183358 0.59648,0.609276 1.02298,1.286085 0.40358,0.516802 0.60299,1.465635 0.57661,2.838809 -0.0714,0.489387 -0.13195,0.781988 -0.16908,0.878172 l 0,0 c -0.066,0.254472 -0.12788,0.467689 -0.18132,0.640524 l 0,0 c -0.16615,0.544198 -0.33534,1.044528 -0.49534,1.506339 l 0,0 c -0.53115,1.53867 -1.08658,3.034387 -1.64474,4.523446 -1.80928,4.829193 -3.68178,9.606527 -5.64985,14.588731 l 0,0 c -5.36249,13.57588 -10.97668,27.374101 -17.07763,42.180363 -3.80455,9.23323 -7.71867,18.65031 -11.74093,28.25012 -1.83892,4.38891 -3.66901,8.74097 -5.48676,13.04936 -1.92022,4.55125 -3.82602,9.05193 -5.71778,13.5025 -1e-5,1e-5 -1e-5,1e-5 -1e-5,2e-5 0.0235,-0.0554 -1.63023,3.83093 -1.6067,3.77556 0,0 0,1e-5 0,1e-5 0.0112,-0.0264 -0.43546,1.02163 -0.42423,0.99528 -0.008,0.001 -3.28625,0.61014 -3.29424,0.61163 -0.001,2.5e-4 -0.83666,0.15537 -0.83799,0.15562 -0.095,0.0159 -0.18991,0.0317 -0.28485,0.0476 l -1.7e-4,3e-5 C 72.178367,94.580448 30.321674,34.857833 32.329146,33.420325 Z" + id="path03" + inkscape:path-effect="#path-effect04" + inkscape:original-d="M 32.329146,33.420325 129.5476,169.18536 c 0,0 50.07202,-118.765773 50.54938,-122.828855 0.47736,-4.063082 -98.932408,-27.10422 -98.932408,-27.10422" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 29.093324,170.62113 c 2.24716,-1.60246 33.120979,40.11717 68.914774,93.12416 0.151266,0.22401 4.535412,6.72462 4.686682,6.94863 0,0 0,-10e-6 0,-10e-6 36.2189,-47.57555 66.66242,-83.88173 68.71549,-82.22448 2.05306,1.65726 -28.23322,40.58521 -68.89534,88.25246 0,0 -1e-5,1e-5 -1e-5,1e-5 0.18257,0.24262 -5.406385,-7.19168 -5.223814,-6.94907 C 57.39877,216.64355 26.846164,172.22359 29.093324,170.62113 Z" + id="path02" + inkscape:path-effect="#path-effect03" + inkscape:original-d="m 29.093324,170.62113 73.511526,103.08678 68.80541,-85.23847" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 52.582039,184.49388 c -15.297493,-6.67799 -29.083443,-13.6332 -41.708646,-21.63599 -3.670656,0.33663 -7.4435337,0.66289 -11.26318994,0.95768 -13.03152006,1.00575 -27.77184906,1.76717 -42.03070206,0.81429 10.793638,-8.18506 20.192355,-17.4494 29.11489,-26.96572 -5.466171,-10.75017 -9.244079,-22.04281 -11.750028,-33.59245 1.782548,0.56549 3.588069,1.11659 5.407034,1.65512 10.7152239,3.15435 22.3321358,5.9907 32.987382,8.60319 3.82386,-2.74551 7.591056,-5.5195 11.234097,-8.24365 6.403783,-4.8615 12.838707,-9.911353 18.729865,-14.591562 -1.127392,12.266662 -0.563093,24.122552 1.472553,35.246942 11.030398,6.09812 22.242277,12.13063 33.30898,18.30651 -9.573381,3.16932 -16.630163,5.66107 -29.555965,10.1149 0.218678,4.75458 0.630925,9.44525 1.237042,14.0563 0.687829,5.17938 1.625499,10.27503 2.816688,15.27444 z M 161.58138,155.5141 c -7.62736,4.93449 -15.01249,11.20799 -22.04847,17.38577 -2.16149,1.89284 -4.27073,3.82592 -6.32957,5.78544 -3.02954,7.35694 -6.36724,15.42002 -9.74151,23.18848 -4.8241,-0.14067 -10.04402,-0.0575 -15.76218,0.25121 -0.1882,-7.13978 -0.48954,-14.29169 -0.88014,-21.33734 -11.387457,-8.87177 -21.417331,-17.52622 -30.359627,-27.10346 12.303028,3.19814 23.286569,6.84179 33.214007,11.20358 0.95298,-2.06211 1.72713,-4.06175 2.31972,-5.99939 -2.8e-4,-5.77501 -0.17053,-11.51252 -0.52496,-17.16438 4.40519,-0.18226 9.27441,-0.59763 15.85912,-1.09483 0.81151,-1.31923 1.63524,-2.63503 2.47216,-3.94722 6.10142,-9.58901 12.82239,-19.07664 20.98661,-27.94551 -1.64299,11.23521 -4.15339,24.10993 -6.62905,35.73427 5.72081,3.32156 11.96198,7.02994 17.42389,11.04338 z m 124.19971,5.67248 c -12.44856,-15.34652 -27.22392,-28.33482 -43.13906,-36.9607 -1.41257,-0.76318 -2.83166,-1.48265 -4.25453,-2.15904 -13.54658,3.39022 -26.9542,8.24625 -38.14411,15.59354 -0.12411,-5.24869 -0.82756,-10.61738 -2.1988,-16.01169 -0.95715,-3.76074 -2.23425,-7.51743 -3.80859,-11.24937 -11.09921,-0.78906 -21.3815,0.72863 -30.15128,3.04552 -2.81957,0.74535 -5.52679,1.58192 -8.1163,2.48071 2.46037,-3.4191 5.03536,-6.76252 7.76027,-10.04326 6.47859,-7.788062 13.73353,-15.009159 22.06731,-21.51437 -2.51446,-10.483042 -6.9725,-21.056339 -13.82744,-31.333268 13.26583,1.306786 28.71794,4.509421 45.28922,11.031081 3.4463,1.447788 6.85422,3.034503 10.21316,4.765435 19.25142,-1.114279 39.94093,1.822353 60.08963,9.567748 0.17681,0.06772 0.35356,0.135646 0.53025,0.203783 -4.49806,11.989286 -11.58901,21.622481 -19.80045,29.597611 9.45923,17.54282 14.85044,35.17266 17.49072,52.98627 z" + id="path01" + inkscape:path-effect="#path-effect01;#clipPath02" + inkscape:original-d="M 18.727816,113.83898 98.832052,228.95326 218.39678,92.70685" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PatternAlongPath_path_1_0_2.svg b/testfiles/lpe_tests/PatternAlongPath_path_1_0_2.svg new file mode 100644 index 0000000..4f8bb22 --- /dev/null +++ b/testfiles/lpe_tests/PatternAlongPath_path_1_0_2.svg @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs3"> + <inkscape:path-effect + effect="skeletal" + id="path-effect01" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="repeated" + prop_scale="2.32533" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect02" + is_visible="true" + lpeversion="1" + pattern="m -7.3319041,36.110065 -2.5242737,-1.480013 -2.6502492,1.240395 0.627532,-2.858076 -1.998658,-2.137233 2.912111,-0.286376 1.4150102,-2.561279 1.172251,2.681087 2.8731821,0.554276 -2.1876194,1.943379 z" + copytype="repeated_stretched" + prop_scale="2.3253296" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect03" + is_visible="true" + lpeversion="1" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 9.4629278,2.4516827 9.4629278,5.2116827 9.4629278,7.9716827 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="repeated_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + hide_knot="false" + fuse_tolerance="0" + pattern-nodetypes="sssss" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 197.27487,42.721901 c -0.0983,0.08181 -0.19791,0.158499 -0.30021,0.231701 0,0 0,0 0,0 -0.0999,0.07146 -0.20173,0.139031 -0.30483,0.202611 0,0 0,0 0,0 -0.20774,0.128112 -0.42378,0.24195 -0.64196,0.338561 0,0 0,0 0,0 l 0,0 c -0.44513,0.199005 -0.9139,0.339035 -1.37986,0.41145 l 0,0 0,0 c -0.9946,0.15464 -2.01043,0.03349 -2.9098,-0.37759 -0.52124,-0.238151 -1.00467,-0.570754 -1.4263,-1.000686 -1.79857,-1.834009 -1.38219,-4.748615 0.50323,-6.777681 1.86918,-2.011599 4.55984,-2.341155 6.6363,-0.22362 0.47167,0.480997 0.83286,1.02928 1.08106,1.609087 0.43161,1.008413 0.52785,2.111238 0.27995,3.12798 l 0,0 0,10e-7 c -0.11678,0.478795 -0.30316,0.934011 -0.56682,1.355159 l 0,1e-6 c 0,0 0,0 0,0 -0.12908,0.204579 -0.27341,0.398781 -0.43601,0.583809 0,0 0,0 0,0 -0.0802,0.09128 -0.16439,0.179747 -0.25263,0.265541 0,0 0,0 0,0 -0.0903,0.08779 -0.18378,0.171828 -0.28212,0.253676 z m -6.60383,-6.816554 c -1.19105,1.281793 -2.90767,1.806774 -4.47728,1.594543 -0.90509,-0.121785 -1.77547,-0.487083 -2.50938,-1.108546 -1.98306,-1.679203 -1.81378,-4.624897 -0.1133,-6.807986 1.69021,-2.169905 4.33861,-2.723 6.57934,-0.823348 0.80526,0.682687 1.34973,1.553248 1.61947,2.478361 0.47455,1.624905 0.0987,3.378143 -1.09885,4.666976 z m -7.23008,-6.154936 c -1.69661,2.178112 -4.75869,2.617506 -6.91328,1.096768 -2.1145,-1.49244 -2.21216,-4.438346 -0.71779,-6.765967 1.4849,-2.312878 4.07433,-3.104923 6.48288,-1.406827 2.37268,1.672797 2.84479,4.897914 1.14819,7.076026 z m -7.74543,-5.491085 c -1.49096,2.32232 -4.49308,3.040186 -6.77285,1.733641 -2.23443,-1.280558 -2.61584,-4.199229 -1.35304,-6.661079 1.25427,-2.445236 3.75787,-3.483094 6.32362,-2.012956 2.52515,1.446874 3.29324,4.618075 1.80227,6.940394 z m -8.22249,-4.739115 c -0.63669,1.241231 -1.72575,2.108342 -2.92402,2.525728 -1.16931,0.409458 -2.45905,0.401284 -3.6335,-0.119216 -2.33527,-1.034961 -3.02667,-3.896525 -2.0357,-6.483467 0.98337,-2.567116 3.37111,-3.876008 6.09769,-2.662847 1.32599,0.589982 2.27518,1.649235 2.72898,2.860862 0.4653,1.245639 0.40552,2.633248 -0.23345,3.87894 z m -8.66903,-3.879071 c -0.98834,2.580091 -3.76516,3.901147 -6.24695,3.1157 -2.4818,-0.785446 -3.43256,-3.53322 -2.74837,-6.206902 0.68037,-2.658748 2.90335,-4.2356623 5.76094,-3.3354748 2.80414,0.8833488 4.22273,3.8465858 3.23438,6.4266768 z m -9.04779,-2.886139 c -0.68419,2.673681 -3.27884,4.302581 -5.82061,3.821071 -2.47612,-0.469073 -3.81525,-3.076106 -3.46506,-5.817429 0.34722,-2.7180705 2.36088,-4.5555127 5.31668,-4.0002195 2.89664,0.5441816 4.65318,3.3228955 3.96899,5.9965775 z m -9.31246,-1.786674 c -0.34924,2.733933 -2.70959,4.668693 -5.27788,4.522013 -1.58066,-0.09027 -2.7609,-1.030156 -3.47531,-2.390153 -0.44574,-0.848571 -0.70422,-1.865021 -0.71029,-2.924893 -0.006,-1.0623411 0.24289,-2.0153333 0.7359,-2.7861611 0.78733,-1.2289072 2.20035,-1.9786365 4.02882,-1.870921 2.9557,0.1741208 5.04801,2.7161815 4.69876,5.4501151 z m -9.46227,-0.581368 c 0.0158,2.759766 -2.06229,4.994387 -4.63376,5.189492 -2.50563,0.190109 -4.48187,-1.976518 -4.85868,-4.719888 -0.37321,-2.7171596 1.09229,-5.0215846 4.1032,-5.2495069 2.951,-0.2233877 5.37343,2.0201363 5.38924,4.7799029 z m -9.46364,0.679308 c 0.37556,2.734208 -1.40091,5.22392 -3.93533,5.746439 -2.47199,0.509646 -4.70566,-1.395752 -5.42209,-4.070056 -0.70993,-2.650024 0.4549,-5.1180423 3.40347,-5.7254332 2.89172,-0.5956803 5.5784,1.3148429 5.95395,4.0490502 z m -9.30264,1.88087 c 0.31553,1.177817 0.1832,2.376931 -0.25189,3.400138 -0.54968,1.290793 -1.58807,2.328008 -2.95378,2.787631 -2.40991,0.811044 -4.85334,-0.817895 -5.87508,-3.390705 -1.0128,-2.550303 -0.14675,-5.126754 2.68476,-6.0811581 1.55858,-0.5253439 3.16602,-0.2828447 4.38851,0.5076581 0.97361,0.629491 1.69076,1.594179 2.00748,2.776436 z m -9.00265,2.99372 c 1.01827,2.564073 -0.12786,5.416058 -2.50399,6.519525 -2.330556,1.0823 -4.937117,-0.28849 -6.21963,-2.743542 -1.272472,-2.435832 -0.678807,-5.083464 2.012444,-6.329678 2.649913,-1.227072 5.692906,-0.01038 6.711176,2.553695 z m -8.625558,3.963698 c 1.278568,2.447501 0.419443,5.41308 -1.855151,6.747545 -0.527976,0.309755 -1.073978,0.483232 -1.622978,0.539419 -1.83222,0.21862 -3.71886,-0.89297 -4.850325,-2.692836 -1.133821,-1.803612 -1.168603,-3.778387 -0.0039,-5.261561 0.358274,-0.456404 0.828274,-0.867297 1.409478,-1.209303 2.502766,-1.472739 5.64426,-0.570765 6.922828,1.876736 z m -8.215353,4.774044 c 1.472622,2.342556 0.784759,5.43995 -1.42059,6.928786 -2.230623,1.505898 -5.00475,0.481403 -6.637714,-1.768452 -1.627883,-2.242854 -1.420381,-4.956966 1.012559,-6.589661 2.427642,-1.62914 5.576241,-0.908271 7.045745,1.429327 z m -7.933061,5.332891 c 1.632964,2.249854 1.190087,5.335303 -0.869879,6.974831 -2.059966,1.639527 -4.874469,0.884057 -6.711988,-1.175682 -1.826982,-2.047928 -1.89614,-4.776176 0.42473,-6.654517 2.277518,-1.843256 5.524173,-1.394487 7.157137,0.855368 z m -7.440936,5.957124 c 1.837519,2.05974 1.730629,5.114802 -0.06418,6.934375 -1.794813,1.819574 -4.632475,1.445415 -6.720803,-0.330045 -2.074475,-1.763681 -2.508308,-4.455811 -0.396146,-6.631061 2.061244,-2.122812 5.343614,-2.033009 7.181133,0.02673 z m -6.624819,6.740502 c 2.088328,1.77546 2.431657,4.761384 0.996494,6.80742 -0.875427,1.248051 -2.266662,1.75569 -3.795662,1.66016 -0.94625,-0.06364 -1.954162,-0.35914 -2.867628,-0.89094 -0.91784,-0.534347 -1.609692,-1.232258 -2.010697,-2.061202 -0.643014,-1.317392 -0.518832,-2.949985 0.559758,-4.458854 1.806958,-2.527802 5.036781,-2.825774 7.117735,-1.056584 z m -5.483751,7.683205 c 2.386616,1.389437 3.29375,4.2294 2.36734,6.421619 -0.92641,2.19222 -3.605072,2.952905 -6.268196,2.242064 -2.62088,-0.699566 -4.230718,-3.050536 -2.957073,-6.108496 1.273041,-3.056512 4.49372,-3.93158 6.857929,-2.555187 z m -3.696603,8.718202 c 1.680061,0.448442 2.972386,1.712348 3.623628,3.001762 0.375795,0.746627 0.55723,1.543652 0.486548,2.361027 -0.196017,2.266789 -2.46706,3.852715 -5.218709,4.05921 -2.688808,0.201779 -5.039477,-1.495652 -4.744444,-4.919045 0.102013,-1.1837 0.553582,-2.235801 1.21745,-3.032573 1.191877,-1.417638 2.932508,-1.924951 4.635527,-1.470381 z m -0.897491,9.406161 c 1.97996,-0.148584 3.855516,0.865011 4.85069,2.082345 0,0 0,0 0,0 0.375404,0.467976 0.652034,0.996201 0.805619,1.587295 0.57408,2.209419 -1.029035,4.487012 -3.563125,5.573281 -2.482591,1.064193 -5.220231,0.240335 -6.088539,-3.036113 -0.22337,-0.842857 -0.247972,-1.689915 -0.102588,-2.470034 0,0 0,-10e-7 0,-10e-7 0.409087,-2.134885 2.083999,-3.585638 4.097943,-3.736773 z m 2.28754,9.159608 c 2.505186,-1.073879 5.413446,-0.06806 6.581173,1.817274 1.257721,2.030634 0.312367,4.709064 -1.847696,6.428644 -2.121062,1.688533 -4.958817,1.627166 -6.678408,-1.166866 -1.754329,-2.850476 -0.56981,-6.001077 1.944931,-7.079052 z m 4.899147,8.114032 c 0.46298,-0.368568 0.972955,-0.642533 1.496237,-0.832181 0,0 0,0 0,0 1.912683,-0.692535 4.037299,-0.311574 5.347424,0.956367 0.149931,0.145103 0.283181,0.297079 0.400931,0.455616 0.302866,0.407158 0.488172,0.846805 0.587003,1.313722 l 0,0 10e-7,10e-7 0,0 c 0.03148,0.148429 0.04725,0.294857 0.0516,0.440228 l 0,0 c -0.08923,-0.0107 -1.708689,-0.206173 -1.797916,-0.216872 l 0,0 c -0.02698,0.006 -0.05367,0.01209 -0.08007,0.01824 -0.03053,0.0037 -0.06829,0.0017 -0.105566,-9.7e-5 -0.07447,-0.006 -0.146333,-0.01062 -0.215475,-0.01394 -0.287769,-0.01385 -0.528944,-0.0055 -0.721603,0.023 0,0 1e-6,0 1e-6,0 1.122764,0.673914 1.846567,1.880516 2.163893,3.21957 0.323071,1.363296 0.171961,2.607097 -0.230098,3.616217 0,0 0,0 0,0 -0.415138,0.06721 -0.885725,0.119253 -1.411024,0.156584 -0.126177,0.009 -0.25531,0.01707 -0.387529,0.02441 -0.05744,0.0024 -0.115552,0.0046 -0.174196,0.0066 -0.05013,-0.0124 -0.09265,-0.01892 -0.135468,-0.02559 l 0,0 c -0.658223,-0.122132 -1.336092,-0.247192 -2.030378,-0.37419 l 0,0 c -0.195547,-0.03178 -0.386773,-0.07331 -0.571187,-0.121975 l 0,0 0,-1e-6 0,0 c -0.581154,-0.153501 -1.156923,-0.429858 -1.690543,-0.822277 -0.20737,-0.152388 -0.410496,-0.323913 -0.607485,-0.514649 -1.774879,-1.718534 -2.063581,-4.2421 -1.017487,-6.01875 0,0 10e-7,0 10e-7,0 0.285643,-0.486035 0.664996,-0.920701 1.128935,-1.290033 z m 7.077647,5.157674 c -0.05234,-0.220849 -0.08903,-0.441603 -0.110135,-0.661609 -0.228171,-2.378718 1.455821,-4.648394 4.130006,-5.130549 0.0951,-0.01715 0.191189,-0.03187 0.288186,-0.04411 3.066116,-0.386702 4.95838,2.042718 5.099857,4.774794 0.14331,2.767461 -1.395877,4.831848 -3.83974,5.144937 -0.08164,0.01046 -0.163044,0.0187 -0.244179,0.02477 -2.124901,0.159203 -4.291804,-1.26734 -5.127017,-3.46715 -0.07836,-0.206368 -0.144672,-0.42036 -0.196978,-0.641083 z m 9.39697,-1.272814 c -0.142693,-2.755558 2.170563,-5.138085 5.149004,-5.060001 3.052047,0.08001 4.571155,2.749455 4.318574,5.477885 -0.255463,2.759558 -2.084396,4.588692 -4.585084,4.520762 -2.56024,-0.06955 -4.739801,-2.183087 -4.882494,-4.938646 z m 9.487097,0.207032 c 0.165708,-1.790012 1.267991,-3.263548 2.888574,-3.95616 0.869238,-0.37072 1.871369,-0.506401 2.898405,-0.33705 2.991824,0.493331 4.144293,3.32956 3.533486,6.001398 -0.617084,2.699294 -2.671985,4.269963 -5.156136,3.862415 -0.889604,-0.145947 -1.683562,-0.536043 -2.339662,-1.09856 -1.204833,-1.030764 -1.989151,-2.695253 -1.824667,-4.472043 z m 9.367621,1.501913 c 0.614842,-2.689487 3.45945,-4.354427 6.28587,-3.507716 2.889,0.865458 3.68018,3.819925 2.74148,6.398633 -0.94765,2.603316 -3.1872,3.908944 -5.61509,3.179251 -2.479186,-0.745108 -4.027102,-3.38068 -3.41226,-6.070168 z m 9.09979,2.691942 c 0.94437,-2.594319 3.96634,-3.897186 6.66136,-2.719255 1.24158,0.542664 2.03159,1.488256 2.38835,2.57937 0.4206,1.288771 0.23907,2.763442 -0.4318,4.097096 -0.66889,1.329723 -1.68597,2.251658 -2.8247,2.653818 -0.97234,0.34326 -2.04255,0.3138 -3.13559,-0.16319 -2.38302,-1.039907 -3.602,-3.853521 -2.65762,-6.447839 z m 8.71299,3.768187 c 1.23975,-2.464564 4.37899,-3.404392 6.90876,-1.942597 2.57683,1.488985 2.69153,4.529139 1.20414,6.835209 -1.49969,2.32514 -3.97863,3.09769 -6.20094,1.81418 -2.26149,-1.30615 -3.15171,-4.24223 -1.91196,-6.706792 z m 8.22754,4.714872 c 1.49468,-2.31738 4.70506,-2.926744 7.06547,-1.22713 2.40014,1.72821 2.22318,4.76339 0.5183,6.92087 -1.71754,2.17351 -4.26804,2.70515 -6.36705,1.18852 -2.13173,-1.54026 -2.7114,-4.56488 -1.21672,-6.88226 z m 7.71509,5.52756 c 1.71215,-2.16668 4.9604,-2.47326 7.14795,-0.57342 2.22058,1.92853 1.78176,4.93506 -0.10248,6.93913 -1.89685,2.01748 -4.49137,2.33061 -6.46249,0.61757 -1.99845,-1.73678 -2.29513,-4.81659 -0.58298,-6.98328 z m 7.19059,6.21136 c 1.66648,-1.77246 4.34424,-2.03809 6.37707,-0.63894 0,0 0,0 0,0 0.28432,0.19834 0.55438,0.42799 0.80462,0.68818 2.1306,2.21533 1.32575,5.18279 -0.77579,6.93662 -2.12675,1.77486 -4.70497,1.78338 -6.42613,-0.001 -0.21299,-0.22084 -0.39954,-0.45752 -0.56046,-0.70705 0,0 0,0 0,0 -1.22323,-1.85983 -1.07958,-4.51174 0.58069,-6.2776 z m 6.56837,6.85027 c 2.11831,-1.76782 5.40742,-1.35317 7.13539,1.07016 1.7712,2.48397 0.55629,5.30339 -1.77546,6.74398 -2.35741,1.45645 -4.91789,1.09768 -6.36916,-0.94128 -1.4864,-2.08832 -1.10908,-5.10504 1.00923,-6.87286 z m 5.54007,7.70285 c 2.20247,-1.36072 5.1388,-0.69964 6.63472,1.56954 0,0 0,0 0,0 0.0992,0.15046 0.19174,0.30743 0.27704,0.47062 1.4004,2.67875 -0.16435,5.30579 -2.66356,6.43246 -2.52473,1.13818 -5.01917,0.44477 -6.1939,-1.79286 -0.0747,-0.14227 -0.14133,-0.28662 -0.20012,-0.43265 0,0 0,0 0,0 -0.85945,-2.13776 -0.0485,-4.89141 2.14582,-6.24711 z m 4.44112,8.38565 c 2.51525,-1.1339 5.55424,0.12139 6.59413,2.86454 1.05997,2.79614 -0.78678,5.22428 -3.40116,6.06374 -2.63773,0.84696 -5.04662,-0.12884 -5.9516,-2.52315 -0.9214,-2.43774 0.24337,-5.27122 2.75863,-6.40513 z m 3.39458,8.86354 c 2.52126,-0.80956 5.26528,0.59545 6.13839,3.20519 0,0 0,0 0,0 0.0371,0.11112 0.0708,0.22424 0.10092,0.33923 0.74824,2.85749 -1.3139,5.08626 -3.99608,5.67002 -2.70183,0.58804 -5.00929,-0.61802 -5.67325,-3.12368 -0.0276,-0.10407 -0.0515,-0.20825 -0.0719,-0.31241 0,0 0,0 0,0 -0.46439,-2.38706 0.98659,-4.9707 3.50187,-5.77835 z m 2.44987,9.16947 c 2.69436,-0.58641 5.39125,1.23452 5.87691,4.0825 0.49278,2.88966 -1.74342,4.93397 -4.4688,5.29093 -2.74316,0.35929 -4.94278,-1.04164 -5.37988,-3.61445 -0.44301,-2.60762 1.27742,-5.17257 3.97177,-5.75898 z m 1.6179,9.34595 c 2.73524,-0.35825 5.27038,1.67124 5.53083,4.53721 0.2638,2.90293 -2.11687,4.77503 -4.86602,4.9299 -2.76499,0.15576 -4.86146,-1.41006 -5.09582,-4.03172 -0.23709,-2.65232 1.69577,-5.07713 4.43101,-5.43539 z m 0.87633,9.45519 c 2.75785,-0.15535 5.137,2.04729 5.19758,4.91292 0.0613,2.89763 -2.43414,4.60914 -5.18773,4.58693 -2.76755,-0.0223 -4.76507,-1.72351 -4.82105,-4.37551 -0.0565,-2.67867 2.05335,-4.96898 4.8112,-5.12434 z m 0.2217,9.50156 c 2.42,0.0195 4.42348,1.77905 4.81392,4.16632 0,0 0,0 0,0 0.0558,0.33783 0.0786,0.68681 0.0651,1.04289 -0.1097,2.87663 -2.68827,4.44458 -5.43678,4.26818 -2.75937,-0.17709 -4.65863,-1.98724 -4.55623,-4.65077 0.0129,-0.3362 0.0596,-0.66325 0.13659,-0.97845 0,0 0,0 0,0 0.53019,-2.18217 2.56449,-3.86762 4.97744,-3.84817 z m -0.34652,9.49095 c 2.75467,0.1768 4.85033,2.62985 4.58418,5.46911 -0.269,2.86956 -2.93208,4.29133 -5.66601,3.9616 -2.74506,-0.33107 -4.54,-2.24369 -4.29165,-4.89474 0.25075,-2.67671 2.61881,-4.71276 5.37348,-4.53597 z m -0.87166,9.45606 c 2.74037,0.33051 4.69529,2.89875 4.26781,5.72053 -0.43218,2.85284 -3.17322,4.11911 -5.88311,3.63233 -2.72124,-0.48882 -4.4022,-2.50062 -4.00429,-5.12956 0.4019,-2.65528 2.87922,-4.55381 5.61959,-4.2233 z m -1.40696,9.39028 c 2.71644,0.48796 4.51976,3.16659 3.9272,5.96122 -0.0567,0.26742 -0.13396,0.52025 -0.22959,0.75804 0,0 0,0 0,0 -0.89822,2.23588 -3.43699,3.11851 -5.86098,2.52154 -2.41857,-0.59563 -3.94119,-2.37399 -3.79396,-4.61807 0,0 0,0 0,0 0.0152,-0.23964 0.049,-0.48526 0.10227,-0.73637 0.5568,-2.62419 3.13863,-4.37431 5.85506,-3.88636 z m -1.95779,9.29143 c 2.66847,0.65718 4.34026,3.42684 3.42696,6.335 -0.0758,0.24129 -0.16727,0.46953 -0.27275,0.6842 -0.52703,1.07949 -1.49246,1.9619 -2.60922,2.35289 -0.56217,0.18242 -1.13763,0.37495 -1.77915,0.36078 -0.32929,-0.008 -0.63204,0.0102 -0.96539,-0.0824 0,0 0,0 0,0 -0.38729,-0.1019 -0.86413,-0.50437 -0.93836,-0.96027 -0.0742,-0.4559 -0.65706,-0.80429 -0.90367,-0.96879 0,0 -10e-6,0 -10e-6,0 -0.23454,-0.13095 -0.51677,-0.20624 -0.69441,-0.34893 -0.34713,-0.25929 -0.78858,-0.51936 -0.98291,-0.87156 -0.47625,-0.73171 -0.7411,-1.52418 -0.54223,-2.55968 0.0359,-0.19979 0.086,-0.40276 0.15112,-0.60886 0.75063,-2.37709 3.42257,-3.99418 6.11002,-3.33233 z" + id="path03" + inkscape:path-effect="#path-effect03" + inkscape:original-d="m 197.27488,42.72191 c 0,0 -46.83127,-57.163894 -108.578023,-19.482891 -61.746748,37.681002 -21.73639,68.13822 -21.73639,68.13822 0,0 36.292513,-11.884988 73.694733,25.740141 37.40222,37.62513 16.76937,112.6136 14.52516,112.98297" + sodipodi:nodetypes="cscsc" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 13.671248,90.771133 c 1.369735,-0.472027 2.737692,-0.938466 4.103872,-1.399315 -0.620987,-1.161565 -1.24041,-2.328048 -1.85827,-3.499449 2.02931,0.909492 4.059474,1.816301 6.090491,2.720427 1.788218,-0.11944 3.574403,-0.232491 5.358557,-0.33915 -0.104887,1.000588 -0.209378,1.99993 -0.313472,2.998023 1.729758,1.076457 3.46124,2.147492 5.194446,3.213105 -2.097693,-0.279906 -4.196881,-0.55511 -6.297564,-0.825613 -0.718639,0.783062 -1.438036,1.568505 -2.15819,2.356331 -1.196466,-1.158148 -2.390909,-2.322655 -3.58333,-3.493523 -2.178348,-0.578512 -4.357195,-1.155458 -6.53654,-1.730836 z m -2.770011,8.230914 c 0.134181,-0.05514 0.268361,-0.109992 0.402536,-0.164574 1.237992,-0.440591 2.474543,-0.876653 3.709655,-1.308186 -0.625928,-1.146029 -1.250292,-2.296976 -1.873092,-3.45284 2.040694,0.873694 4.082241,1.744705 6.124641,2.613033 1.79673,-0.146209 3.591428,-0.286028 5.384094,-0.419457 -0.103746,0.997002 -0.207096,1.992757 -0.310049,2.987263 1.739959,1.044374 3.481642,2.083334 5.225049,3.116864 -2.108371,-0.24632 -4.218238,-0.48795 -6.329599,-0.72487 -0.19928,0.2184 -0.398618,0.43698 -0.598013,0.65574 -0.477541,0.57454 -0.952402,1.15511 -1.42387,1.74221 -1.203407,-1.0683 -2.393714,-2.15951 -3.570504,-3.27038 -0.05966,-0.057 -0.119323,-0.11392 -0.178977,-0.17091 -0.660139,-0.16343 -1.320323,-0.32671 -1.980553,-0.48985 -1.526042,-0.374357 -3.053153,-0.74572 -4.581318,-1.114043 z m -2.1598021,9.003263 c 1.3039531,-0.67551 2.6131631,-1.31593 3.9256201,-1.92466 -0.725666,-1.1606 -1.43468,-2.34067 -2.127085,-3.53649 2.081801,0.80933 4.167704,1.60705 6.257593,2.39274 1.763793,-0.24359 3.524834,-0.45609 5.281679,-0.64067 -0.02612,0.99687 -0.04058,1.99059 -0.04226,2.9798 1.817784,0.95205 3.644931,1.87885 5.481003,2.77834 -2.097326,-0.14035 -4.198331,-0.25764 -6.302494,-0.35044 -0.612262,0.82846 -1.214967,1.67032 -1.806235,2.52698 -1.346997,-1.01229 -2.679978,-2.05986 -3.998453,-3.13891 -2.221675,-0.37062 -4.444814,-0.7329 -6.6693691,-1.08669 z m -1.4257778,9.34656 c 1.2355609,-0.81962 2.4818349,-1.59693 3.7368109,-2.33534 -0.81971,-1.09947 -1.6215675,-2.22655 -2.4056143,-3.37753 2.1388393,0.63243 4.2808033,1.2493 6.4257753,1.85018 1.738675,-0.39916 3.479273,-0.75851 5.220347,-1.08123 0.04675,0.98779 0.108646,1.96941 0.186809,2.94349 1.887536,0.77954 3.78303,1.52566 5.686047,2.23633 -2.098831,0.0455 -4.198646,0.12069 -6.298925,0.227 -0.535959,0.87236 -1.057402,1.76041 -1.56245,2.66553 -1.434481,-0.85983 -2.855434,-1.76486 -4.262369,-2.71129 -2.241438,-0.14969 -4.4835973,-0.28879 -6.7264309,-0.41714 z m -0.4918699,9.63008 c 1.1390297,-0.98464 2.2942283,-1.91976 3.4635848,-2.80877 -0.9280982,-1.00948 -1.8371415,-2.0547 -2.7271722,-3.13196 2.1853241,0.40204 4.3727942,0.78458 6.5622942,1.14717 1.686025,-0.58885 3.378647,-1.12918 5.076419,-1.62416 0.141234,0.96656 0.301103,1.92394 0.480727,2.87077 1.954614,0.55706 3.915783,1.07255 5.883071,1.54442 -2.076423,0.27733 -4.151134,0.59099 -6.223613,0.9424 -0.433776,0.9195 -0.848077,1.85698 -1.241026,2.81382 -1.528802,-0.66682 -3.044563,-1.38875 -4.546795,-2.162 -2.242534,0.1232 -4.4850457,0.25925 -6.7274898,0.40831 z m 0.7167953,9.89431 c 0.9767228,-1.18742 1.993279,-2.31177 3.0393455,-3.37847 -0.6145352,-0.51929 -1.2208929,-1.05381 -1.8179691,-1.60173 -0.4309143,-0.39442 -0.8582689,-0.79618 -1.2820669,-1.20502 2.2212541,0.11818 4.443676,0.21289 6.667149,0.28371 1.605844,-0.81266 3.222958,-1.56809 4.849897,-2.26946 0.219396,0.79562 0.454873,1.58237 0.707125,2.3594 0.04354,0.13412 0.08755,0.26791 0.132046,0.40136 2.018325,0.28304 4.040293,0.51401 6.06164,0.68845 -2.030928,0.55373 -4.054971,1.15225 -6.068638,1.7983 -0.304945,0.96388 -0.582126,1.9458 -0.824683,2.94632 -1.616241,-0.40789 -3.231637,-0.89296 -4.839071,-1.44642 -2.211391,0.45786 -4.4197634,0.93228 -6.6247745,1.42356 z m 2.6382445,10.08496 c 0.693416,-1.41168 1.451562,-2.75062 2.264114,-4.02224 -1.219094,-0.71397 -2.423523,-1.49548 -3.6076456,-2.33513 2.2182866,-0.24591 4.4304136,-0.52361 6.6354016,-0.83402 1.438076,-1.08686 2.914032,-2.09985 4.419287,-3.04473 0.395719,0.86798 0.816847,1.7122 1.264082,2.52749 2.029082,-0.0916 4.04563,-0.2536 6.04538,-0.49047 -1.896021,0.89958 -3.768097,1.85645 -5.612739,2.87335 -0.117368,0.98125 -0.190963,1.9786 -0.213924,2.9926 -1.660324,-0.0374 -3.336404,-0.17613 -5.021125,-0.40745 -2.066109,0.89236 -4.123834,1.80579 -6.172831,2.7406 z m 5.177608,9.71056 c 0.268332,-1.57988 0.632668,-3.10917 1.084088,-4.57845 -1.37896,-0.42107 -2.761317,-0.93977 -4.13532,-1.55932 2.110262,-0.72793 4.202593,-1.49916 6.275701,-2.31291 0.586603,-0.72431 1.192435,-1.42544 1.816297,-2.10237 0.586726,-0.63719 1.187251,-1.25428 1.800599,-1.85191 0.189149,0.24624 0.381564,0.48841 0.577271,0.72632 0.387899,0.47312 0.789316,0.92945 1.202669,1.36831 1.942078,-0.59247 3.847338,-1.27182 5.709714,-2.03484 -1.622145,1.32803 -3.196867,2.72234 -4.72019,4.18001 0.13203,0.96413 0.321646,1.93881 0.571507,2.91686 -1.603841,0.42163 -3.259088,0.74155 -4.954184,0.9548 -1.75927,1.40965 -3.502127,2.8409 -5.228152,4.2935 z m 7.780155,8.00557 c -0.199111,-1.60254 -0.284357,-3.17823 -0.264658,-4.71766 -1.444804,-0.0242 -2.919808,-0.14253 -4.413261,-0.35814 1.825662,-1.28264 3.621788,-2.60191 5.387086,-3.95704 0.703214,-1.66534 1.502174,-3.266 2.388114,-4.79453 0.741284,0.55049 1.502015,1.05574 2.276873,1.51347 1.698629,-1.10823 3.33593,-2.29155 4.905836,-3.54675 -1.189293,1.7231 -2.312638,3.49797 -3.366061,5.32171 0.350679,0.7874 0.749237,1.56912 1.197554,2.34006 0.05509,0.0953 0.11091,0.19042 0.167445,0.28533 -0.203036,0.12322 -0.407704,0.24487 -0.614018,0.36489 -1.231799,0.71988 -2.522766,1.3723 -3.865637,1.95415 -1.289439,1.8477 -2.556003,3.71262 -3.799273,5.59451 z m 9.475754,5.41191 c -0.541526,-1.47252 -1.006156,-2.94796 -1.384894,-4.41854 -1.367055,0.38358 -2.788858,0.69632 -4.268826,0.92758 1.381451,-1.74776 2.725168,-3.5195 4.031906,-5.31406 0.207173,-1.78872 0.513881,-3.54742 0.927307,-5.26838 0.866155,0.32092 1.740355,0.59346 2.620703,0.8226 1.322989,-1.53085 2.576487,-3.10976 3.763695,-4.73129 -0.653235,1.9848 -1.239168,3.99712 -1.760632,6.03346 0.633038,0.75323 1.316539,1.48985 2.043813,2.20771 -1.177214,1.17608 -2.422886,2.30308 -3.742041,3.3706 -0.763874,2.1149 -1.50746,4.23846 -2.231031,6.37032 z m 9.879952,3.045 c -0.76607,-1.33 -1.477733,-2.67836 -2.125991,-4.03725 -1.22397,0.67614 -2.498352,1.30588 -3.826564,1.87857 0.927787,-2.02751 1.82441,-4.06863 2.690627,-6.1222 -0.193036,-1.79617 -0.308222,-3.58278 -0.338376,-5.35211 0.940212,0.10156 1.881375,0.1667 2.82159,0.20041 0.972196,-1.79281 1.886707,-3.61168 2.74673,-5.45118 -0.197731,2.09735 -0.342201,4.20583 -0.436244,6.32192 0.798167,0.62095 1.630434,1.22348 2.490111,1.80544 -0.957836,1.37039 -1.973267,2.71959 -3.051315,4.03722 -0.339441,2.23693 -0.662872,4.47678 -0.970568,6.71918 z m 9.735335,1.20054 c -0.890628,-1.20231 -1.743695,-2.41849 -2.555093,-3.6484 -0.697735,0.56385 -1.412149,1.11879 -2.144147,1.66423 -0.390212,0.28997 -0.786193,0.57648 -1.188085,0.8591 0.555375,-2.16437 1.086158,-4.33198 1.593107,-6.50167 -0.481924,-1.73232 -0.907686,-3.47554 -1.270102,-5.22194 0.757086,-0.049 1.510381,-0.11315 2.258967,-0.18994 0.205692,-0.0216 0.411077,-0.0441 0.616161,-0.0677 0.68113,-1.91741 1.320406,-3.84294 1.919869,-5.77583 0.145087,2.10031 0.326908,4.19975 0.543938,6.29798 0.893204,0.50054 1.806721,0.98258 2.738293,1.44701 -0.778795,1.475 -1.60032,2.93755 -2.468183,4.38596 -0.02624,2.25012 -0.0411,4.50055 -0.04472,6.75125 z m 9.479365,0.099 c -0.989248,-1.10979 -1.950311,-2.23267 -2.879081,-3.36851 -0.947839,0.97077 -1.928132,1.92632 -2.944117,2.86455 0.280425,-2.20592 0.542904,-4.41335 0.787891,-6.62212 -0.674857,-1.66248 -1.308384,-3.3324 -1.896974,-5.00928 0.957509,-0.18546 1.90862,-0.38997 2.853909,-0.61177 0.460766,-1.98251 0.887631,-3.96982 1.282634,-5.96118 0.387566,2.06883 0.804536,4.13546 1.249384,6.19957 0.951633,0.40015 1.918807,0.78488 2.899266,1.15507 -0.634914,1.54899 -1.30357,3.09062 -2.009578,4.6232 0.209951,2.2438 0.428891,4.4873 0.656666,6.73047 z m 9.242646,-0.74826 c -1.053816,-1.03036 -2.088822,-2.07302 -3.100912,-3.12787 -0.8469,1.05127 -1.71977,2.09291 -2.621846,3.12282 0.0651,-2.22781 0.116278,-4.45578 0.15398,-6.68377 -0.824216,-1.59759 -1.617363,-3.20338 -2.375832,-4.81686 0.944684,-0.28105 1.883679,-0.57639 2.817561,-0.88429 0.285798,-2.02212 0.545647,-4.04575 0.781587,-6.07011 0.576316,2.03277 1.174705,4.062 1.793643,6.08738 0.992796,0.3207 1.996363,0.62905 3.008444,0.92595 -0.522871,1.59438 -1.070495,3.18649 -1.646484,4.77465 0.390079,2.22494 0.78675,4.44899 1.189859,6.6721 z m 8.951267,-1.38005 c -0.411531,-0.36643 -0.820857,-0.73418 -1.227972,-1.10325 -0.670165,-0.60547 -1.336074,-1.21539 -1.996737,-1.82973 -0.763347,1.10309 -1.54618,2.20213 -2.351733,3.29504 -0.09734,-2.22919 -0.204583,-4.4572 -0.321282,-6.68388 -0.928255,-1.5379 -1.8357,-3.08474 -2.718728,-4.64003 0.93049,-0.35087 1.856,-0.71129 2.777106,-1.07953 0.156226,-2.03627 0.294455,-4.07073 0.416727,-6.10261 0.711336,1.9921 1.437416,3.97935 2.176713,5.96142 0.03301,0.009 0.06603,0.017 0.09905,0.0255 0.983319,0.251 1.972015,0.49362 2.965942,0.72768 -0.439521,1.61725 -0.89867,3.23334 -1.377373,4.84785 0.514821,2.19474 1.03425,4.38859 1.558286,6.58153 z m 8.794097,-1.79511 c -1.136768,-0.91622 -2.258415,-1.84277 -3.364836,-2.77919 -0.707202,1.13519 -1.430358,2.26635 -2.169337,3.39309 -0.212029,-2.21687 -0.432058,-4.43263 -0.660088,-6.64722 -1.001222,-1.48811 -1.984317,-2.98383 -2.949235,-4.48676 0.913348,-0.39984 1.821522,-0.80706 2.724352,-1.22154 0.05665,-2.04006 0.0969,-4.07878 0.120705,-6.11591 0.807326,1.95211 1.628263,3.90005 2.462803,5.84362 1.027577,0.2106 2.060437,0.41184 3.098421,0.60351 -0.360121,1.63705 -0.740152,3.27404 -1.14002,4.91055 0.621142,2.16779 1.246887,4.33442 1.877235,6.49985 z m 8.701875,-2.22821 c -1.181101,-0.85863 -2.347434,-1.72855 -3.498894,-2.60931 -0.65104,1.1689 -1.318441,2.33462 -2.002072,3.49677 -0.320055,-2.20433 -0.648137,-4.40709 -0.984248,-6.60821 -1.073063,-1.43747 -2.128218,-2.88366 -3.165412,-4.33817 0.892801,-0.44386 1.779943,-0.89488 2.661259,-1.35295 -0.04347,-2.04051 -0.103466,-4.07874 -0.180021,-6.11444 0.901997,1.91043 1.817536,3.81586 2.746606,5.71611 1.036488,0.15996 2.077793,0.31015 3.123757,0.45034 -0.2786,1.65264 -0.577394,3.30633 -0.896306,4.96063 0.727179,2.13452 1.458956,4.2676 2.195331,6.39923 z m 8.585759,-2.66156 c -1.22306,-0.79778 -2.43171,-1.60783 -3.62584,-2.4297 -0.59233,1.19994 -1.20143,2.39755 -1.82716,3.59243 -0.42874,-2.18558 -0.865532,-4.36912 -1.310378,-6.55057 -1.143048,-1.38216 -2.268403,-2.77416 -3.376015,-4.17559 0.869478,-0.48727 1.732812,-0.9815 2.589836,-1.48256 -0.144983,-2.0354 -0.306623,-4.06758 -0.48494,-6.09629 0.995608,1.8629 2.004687,3.71998 3.027227,5.57107 1.04268,0.10809 2.08971,0.20599 3.14093,0.29348 -0.19496,1.66403 -0.4104,3.3302 -0.64623,4.99809 0.83293,2.09493 1.67045,4.18815 2.51257,6.27964 z m 8.44575,-3.09511 c -1.26265,-0.7337 -2.51124,-1.48063 -3.74567,-2.24037 -0.53107,1.2283 -1.07933,2.45513 -1.64462,3.68007 -0.53807,-2.16062 -1.08423,-4.31874 -1.63846,-6.4743 -1.21118,-1.32219 -2.40488,-2.65533 -3.58105,-3.99902 0.84338,-0.53009 1.68013,-1.06692 2.51009,-1.61038 -0.2479,-2.02474 -0.51258,-4.04531 -0.79406,-6.06148 1.08816,1.80954 2.18972,3.61243 3.30467,5.40852 1.04614,0.055 2.09617,0.0994 3.14993,0.13292 -0.1092,1.67121 -0.23915,3.34566 -0.38979,5.02294 0.9384,2.04902 1.88138,4.09606 2.82896,6.1411 z m 8.28185,-3.52889 c -1.29988,-0.66637 -2.58604,-1.34696 -3.85839,-2.04132 -0.46727,1.25399 -0.95213,2.50736 -1.45444,3.7597 -0.64806,-2.12947 -1.30424,-4.25595 -1.96852,-6.37942 -1.27744,-1.25755 -2.53762,-2.52717 -3.78049,-3.80844 0.8145,-0.57232 1.62189,-1.15116 2.422,-1.73641 -0.35221,-2.00852 -0.72132,-4.01193 -1.10736,-6.00999 1.17965,1.75032 2.37262,3.49319 3.57892,5.22844 1.04689,6.6e-4 2.0972,-0.01 3.15077,-0.0313 -0.0213,1.67418 -0.0637,3.35271 -0.12699,5.03516 1.04358,1.9968 2.09175,3.99134 3.1445,5.98361 z m 8.09405,-3.96289 c -1.33472,-0.59581 -2.65609,-1.20681 -3.96399,-1.83255 -0.40093,1.27701 -0.81985,2.55424 -1.25662,3.83129 -0.75871,-2.09208 -1.52556,-4.18073 -2.30054,-6.26589 -1.34185,-1.18825 -2.66666,-2.38967 -3.97438,-3.60387 0.78285,-0.61394 1.55811,-1.2342 2.3256,-1.86065 -0.45792,-1.98674 -0.93287,-3.96743 -1.42486,-5.94184 1.27008,1.68528 2.55341,3.36228 3.85,5.03084 1.04491,-0.0549 2.09277,-0.12125 3.14344,-0.19926 0.0687,1.67294 0.11604,3.35134 0.14216,5.03476 1.14848,1.93826 2.30155,3.87399 3.45919,5.80717 z m 7.88235,-4.39712 c -1.36719,-0.52201 -2.72139,-1.06017 -4.06247,-1.61405 -0.33204,1.29735 -0.68247,2.59577 -1.05116,3.89487 -0.87002,-2.0485 -1.74819,-4.0931 -2.63452,-6.13374 -1.40441,-1.11429 -2.79199,-2.24286 -4.16269,-3.38531 0.74842,-0.65497 1.48877,-1.31604 2.22086,-1.9831 -0.56503,-1.9594 -1.14721,-3.91182 -1.74655,-5.85701 1.35944,1.61439 2.73207,3.21968 4.11788,4.81572 0.95811,-0.10288 1.91834,-0.21582 2.88055,-0.339 0.0825,-0.0106 0.16497,-0.0212 0.24748,-0.0319 0.0166,0.17285 0.0331,0.34577 0.0492,0.51876 0.14013,1.49586 0.2629,2.99695 0.36838,4.50296 1.25309,1.87339 2.51077,3.74399 3.77301,5.61177 z m 7.62842,-4.82601 c -1.39203,-0.44695 -2.77279,-0.91032 -4.14189,-1.38993 -0.25987,1.31395 -0.53797,2.63028 -0.83454,3.94862 -0.98169,-1.99854 -1.97128,-3.99265 -2.96872,-5.9823 -1.46392,-1.0358 -2.9121,-2.08688 -4.34419,-3.15302 0.71171,-0.69523 1.41502,-1.39611 2.10992,-2.10244 -0.67175,-1.92598 -1.35996,-3.84393 -2.06447,-5.7537 1.44656,1.53786 2.90553,3.06589 4.37677,4.584 1.03316,-0.16837 2.06809,-0.34854 3.10452,-0.54054 0.25035,1.65613 0.48039,3.32 0.68984,4.99129 1.35333,1.80237 2.71092,3.60172 4.07276,5.39802 z m 7.34929,-5.22418 c -1.41344,-0.37248 -2.8166,-0.7617 -4.20909,-1.16748 -0.1886,1.32555 -0.395,2.65432 -0.61944,3.98596 -1.0881,-1.9423 -2.18375,-3.87986 -3.2869,-5.81263 -1.51737,-0.95544 -3.02002,-1.92666 -4.50759,-2.91345 0.67313,-0.73283 1.33774,-1.4708 1.99381,-2.21371 -0.77423,-1.88705 -1.56427,-3.76539 -2.36992,-5.63488 1.52718,1.45769 3.06609,2.9051 4.61658,4.34215 1.02285,-0.22367 2.04685,-0.45904 3.07174,-0.70612 0.33816,1.6406 0.65672,3.28985 0.95537,4.94741 1.44778,1.72745 2.89959,3.4517 4.35544,5.17275 z m 7.05744,-5.60238 c -1.43083,-0.29789 -2.85237,-0.61285 -4.26422,-0.94468 -0.11787,1.33349 -0.25312,2.67104 -0.40599,4.0123 -1.19001,-1.88171 -2.3872,-3.75837 -3.59155,-5.62994 -1.56599,-0.87366 -3.11827,-1.76362 -4.65648,-2.66967 0.63332,-0.76787 1.25799,-1.54037 1.874,-2.31729 -0.87318,-1.84359 -1.76149,-3.6778 -2.66475,-5.50248 1.60253,1.37476 3.2161,2.73881 4.84056,4.09204 1.00989,-0.27758 2.02031,-0.56674 3.03101,-0.8675 0.42394,1.6208 0.82898,3.25116 1.21482,4.89073 1.53705,1.64886 3.07792,3.29436 4.6226,4.93649 z m 6.7507,-5.96181 c -1.44419,-0.22319 -2.88009,-0.46376 -4.30727,-0.72152 -0.0477,1.33776 -0.11235,2.68043 -0.1942,4.02766 -1.28739,-1.81678 -2.58162,-3.6282 -3.88264,-5.43423 -1.60978,-0.7905 -3.20685,-1.5978 -4.79088,-2.4217 0.59229,-0.80035 1.17579,-1.60481 1.75049,-2.41318 -0.96859,-1.7956 -1.95163,-3.58115 -2.94896,-5.3565 1.67261,1.28909 3.35556,2.56701 5.04871,3.83367 0.99428,-0.33008 1.98847,-0.67164 2.98233,-1.02469 0.5077,1.59674 0.9972,3.20393 1.4682,4.82125 1.62114,1.56661 3.24588,3.12969 4.87422,4.68924 z m 6.42908,-6.30245 c -1.45352,-0.14837 -2.89974,-0.31443 -4.33824,-0.49801 0.0219,1.33837 0.0273,2.6825 0.0159,4.03203 -1.38026,-1.74751 -2.767,-3.48936 -4.1602,-5.22551 -1.64872,-0.70592 -3.28575,-1.42917 -4.91075,-2.16953 0.55001,-0.83025 1.0911,-1.6641 1.62327,-2.50135 -1.06046,-1.74309 -2.1347,-3.47546 -3.22256,-5.19695 1.73741,1.20066 3.48446,2.3897 5.24103,3.56703 0.97602,-0.38119 1.95134,-0.77375 2.9257,-1.17768 0.58944,1.56841 1.16138,3.14818 1.71551,4.73896 1.70005,1.4807 3.40349,2.9577 5.1103,4.43101 z m 6.09243,-6.62396 c -0.10329,-0.005 -0.20654,-0.0107 -0.30976,-0.0162 -1.35467,-0.0706 -2.70385,-0.15675 -4.04722,-0.25829 0.091,1.33533 0.1659,2.67726 0.22444,4.02543 -1.46862,-1.67391 -2.94337,-3.34184 -4.42422,-5.00377 -1.68283,-0.61995 -3.35499,-1.25774 -5.01612,-1.91316 0.50649,-0.8576 1.00394,-1.71828 1.49234,-2.58185 -1.14878,-1.68605 -2.31068,-3.36071 -3.48553,-5.02381 1.79692,1.10947 3.60281,2.20688 5.41752,3.29214 0.28836,-0.1301 0.57661,-0.26123 0.86472,-0.39337 0.66637,-0.30593 1.33211,-0.61714 1.99715,-0.93365 0.61289,1.40875 1.21199,2.82737 1.79717,4.25552 0.0531,0.12955 0.106,0.25918 0.15881,0.38889 0.89448,0.7015 1.78976,1.40203 2.68584,2.10157 0.88087,0.68776 1.76248,1.37462 2.64486,2.06057 z m 5.74299,-6.91264 c -1.46054,-0.001 -2.91559,-0.0204 -4.36481,-0.0575 0.15842,1.32851 0.30148,2.66409 0.42909,4.00631 -1.55182,-1.59698 -3.10931,-3.18791 -4.67245,-4.77273 -1.71196,-0.53424 -3.41434,-1.08627 -5.10688,-1.65578 0.46238,-0.88276 0.91587,-1.76806 1.36037,-2.65568 -1.23232,-1.62626 -2.4769,-3.24083 -3.73364,-4.843476 1.85081,1.017426 3.7098,2.022696 5.57689,3.015666 0.93259,-0.47859 1.86334,-0.96808 2.79199,-1.4686 0.74496,1.50092 1.47385,3.01475 2.1865,4.54103 1.84138,1.30085 3.6857,2.59778 5.53294,3.89076 z m 5.39073,-7.20342 c -1.45911,0.0744 -2.91357,0.13006 -4.36305,0.16719 0.22532,1.31933 0.43537,2.64673 0.63007,3.98176 -1.63031,-1.51697 -3.26605,-3.02745 -4.90721,-4.5314 -1.73685,-0.44694 -3.46493,-0.91258 -5.18397,-1.39657 0.41734,-0.904631 0.82546,-1.811332 1.22426,-2.719908 -1.31312,-1.561595 -2.6381,-3.110576 -3.97484,-4.646716 1.89979,0.922499 3.80725,1.832137 5.7223,2.728765 0.90674,-0.525083 1.81099,-1.061204 2.71248,-1.608471 0.82106,1.460363 1.6264,2.934776 2.41585,4.422807 1.90525,1.20502 3.81329,2.405873 5.72411,3.602543 z m 5.01663,-7.481375 c -1.45374,0.15168 -2.90369,0.283841 -4.34951,0.396825 0.29307,1.306343 0.57097,2.621748 0.83361,3.945776 -1.706,-1.430968 -3.4172,-2.855012 -5.13359,-4.272082 -1.75751,-0.356425 -3.50705,-0.732435 -5.24835,-1.127695 0.3701,-0.924438 0.73065,-1.850488 1.08157,-2.777958 -1.39217,-1.491117 -2.79579,-2.9687 -4.21077,-4.432521 1.94462,0.822842 3.89641,1.63212 5.85526,2.427682 0.87774,-0.571212 1.75234,-1.153588 2.62353,-1.747237 0.8968,1.41482 1.77822,2.844846 2.64409,4.289644 1.96543,1.103607 3.93348,2.202801 5.90416,3.297566 z m 4.62071,-7.746481 c -1.44445,0.230568 -2.88597,0.440925 -4.32421,0.631413 0.36168,1.289531 0.70828,2.589119 1.03971,3.898325 -1.77889,-1.338967 -3.56275,-2.67057 -5.35157,-3.994762 -1.77393,-0.262685 -3.5407,-0.545845 -5.30003,-0.849147 0.32066,-0.942187 0.63145,-1.885529 0.93228,-2.829835 -1.46944,-1.414827 -2.94995,-2.8152 -4.4414,-4.200888 1.9853,0.718457 3.97726,1.422646 5.97577,2.112416 0.56597,-0.412951 1.13024,-0.830959 1.69274,-1.254057 0.2779,-0.209093 0.55536,-0.419326 0.83232,-0.630768 0.42232,0.592413 0.8417,1.188083 1.25824,1.786753 0.54253,0.779755 1.08023,1.564686 1.61307,2.354714 2.02188,0.996608 4.04625,1.988558 6.07308,2.975836 z m 4.21267,-8.070463 c -1.43456,0.336502 -2.8659,0.643111 -4.29407,0.923351 0.43229,1.273753 0.84756,2.559277 1.24757,3.853772 -1.84925,-1.240827 -3.70356,-2.473272 -5.56303,-3.696945 -1.78663,-0.16286 -3.56625,-0.350009 -5.33925,-0.558346 0.26872,-0.957436 0.52654,-1.91455 0.77197,-2.870826 -1.54786,-1.328202 -3.10791,-2.638194 -4.68076,-3.928216 2.02146,0.606813 4.04983,1.19588 6.08537,1.765888 0.80435,-0.661607 1.60232,-1.336401 2.39314,-2.026306 1.06302,1.292486 2.10618,2.610009 3.13085,3.949451 2.07985,0.869176 4.16257,1.731946 6.24821,2.588177 z m -6.35211,-5.684871 c 0.0901,-0.938077 0.15798,-1.879753 0.20346,-2.82503 -0.001,0.0036 -0.003,0.0072 -0.004,0.01082 -0.004,0.01039 -0.008,0.02077 -0.0116,0.03114 0,0 0,0 0,0 2.0016,0.387175 3.92645,0.755975 5.77446,1.107012 0,0 0,10e-7 0,10e-7 -0.041,0.01482 -0.082,0.02946 -0.12291,0.04394 0.12051,0.314999 0.24041,0.625871 0.36141,0.930415 0.38938,0.980368 0.76294,1.967916 1.12781,2.953147 -1.92961,-1.113086 -3.8657,-2.213676 -5.80948,-3.298699 -1.17099,-0.01503 -2.3377,-0.04941 -3.50156,-0.09633 -0.62201,-0.02508 -1.24314,-0.05393 -1.8634,-0.08642 0.0481,-0.231149 0.0953,-0.462241 0.14157,-0.693269 0.14751,-0.73553 0.28435,-1.465436 0.40509,-2.188322 -0.56212,-0.404328 -1.1268,-0.80407 -1.69426,-1.198688 0,0 0,0 0,0 -0.82604,-0.574489 -1.66066,-1.130959 -2.50988,-1.656484 l 0,10e-7 c 2.49285,0.302428 5.22521,0.651583 8.19631,1.049142 l 0,0 c 0.009,-0.02712 0.018,-0.05425 0.0271,-0.08138 0.002,-0.0055 0.004,-0.01105 0.005,-0.01658 6e-4,3.01e-4 0.001,6.01e-4 0.002,9.02e-4 -0.0137,0.819422 -0.0515,1.634954 -0.1136,2.446586 0.0569,1.064286 0.10132,2.126575 0.13338,3.186866 -0.15981,-0.447846 -0.28652,-0.890358 -0.38013,-1.327536 -0.11421,0.570905 -0.23657,1.140495 -0.36709,1.708771 z m -0.39023,8.380076 c 0.19936,-1.054932 0.36963,-2.11455 0.51081,-3.178857 -0.0992,-0.706897 -0.1728,-1.409669 -0.22081,-2.108316 0.18552,-0.219849 0.38502,-0.437447 0.59847,-0.652796 0.13844,-0.994005 0.24363,-1.993369 0.31556,-2.998093 0.0898,0.947185 0.18616,1.895416 0.28899,2.844693 0.24352,0.102037 0.51525,0.208621 0.8152,0.319753 -0.18823,0.795857 -0.40094,1.587771 -0.63811,2.375741 0.0207,1.058464 0.0291,2.11493 0.025,3.169398 -0.28648,-0.46826 -0.53987,-0.931187 -0.76015,-1.38878 -0.3035,0.5404 -0.61514,1.079486 -0.93495,1.617257 z m -0.39022,8.380076 c 0.29583,-1.039384 0.56257,-2.083456 0.80023,-3.132215 -0.18005,-0.719927 -0.33451,-1.435729 -0.46338,-2.147407 0.37183,-0.189825 0.75762,-0.3774 1.15737,-0.562724 0.27776,-0.971553 0.52226,-1.948466 0.7335,-2.930739 0.1085,0.950193 0.2235,1.901433 0.34498,2.853718 0.41048,0.128943 0.84916,0.262434 1.31607,0.400471 -0.363,0.767693 -0.75047,1.531442 -1.1624,2.291247 -0.0154,1.052642 -0.0432,2.103286 -0.0834,3.151931 -0.41316,-0.488676 -0.79322,-0.972018 -1.14018,-1.450025 -0.49277,0.509895 -0.9937,1.018476 -1.50279,1.525743 z m -0.39022,8.380076 c 0.3923,-1.023837 0.75552,-2.052361 1.08964,-3.085573 -0.2609,-0.732957 -0.49621,-1.46179 -0.70593,-2.186498 0.55812,-0.159801 1.13021,-0.317352 1.71627,-0.472652 0.41706,-0.949102 0.80087,-1.903564 1.15142,-2.863385 0.12717,0.953202 0.26084,1.907449 0.40099,2.862743 0.57743,0.15585 1.18307,0.316246 1.81692,0.48119 -0.53776,0.739527 -1.09998,1.475112 -1.68668,2.206753 -0.0515,1.046819 -0.11546,2.09164 -0.19178,3.134463 -0.53984,-0.509091 -1.04658,-1.012848 -1.52022,-1.511271 -0.68205,0.479391 -1.37226,0.957467 -2.07063,1.43423 z m -0.39022,8.380072 c 0.48877,-1.00829 0.94846,-2.02126 1.37906,-3.03893 -0.34176,-0.74598 -0.65792,-1.48785 -0.94849,-2.22559 0.74442,-0.12977 1.50281,-0.2573 2.27516,-0.38258 0.55638,-0.926647 1.0795,-1.858657 1.56936,-2.796027 0.14584,0.95621 0.29817,1.913466 0.45699,2.871767 0.74438,0.18276 1.51697,0.37006 2.31778,0.56191 -0.71252,0.71136 -1.44951,1.41878 -2.21097,2.12226 -0.0877,1.04099 -0.18772,2.07999 -0.30017,3.11699 -0.66652,-0.5295 -1.29993,-1.05367 -1.90024,-1.57251 -0.87134,0.44888 -1.75083,0.89646 -2.63848,1.34271 z m -0.39022,8.38008 c 0.58525,-0.99274 1.1414,-1.99017 1.66847,-2.99229 -0.42261,-0.75902 -0.81962,-1.51391 -1.19105,-2.26468 0.93072,-0.0998 1.87541,-0.19725 2.83406,-0.29251 0.69569,-0.9042 1.35812,-1.81376 1.9873,-2.72867 0.1645,0.95921 0.3355,1.91948 0.51299,2.88079 0.91133,0.20966 1.85087,0.42387 2.81863,0.64263 -0.88728,0.68319 -1.79903,1.36245 -2.73525,2.03776 -0.12379,1.03517 -0.25998,2.06835 -0.40856,3.09953 -0.79319,-0.54992 -1.55328,-1.09451 -2.28027,-1.63376 -1.06062,0.41838 -2.12939,0.83545 -3.20632,1.2512 z m -0.39022,8.38007 c 0.68172,-0.97719 1.33435,-1.95907 1.95789,-2.94564 -0.50346,-0.77205 -0.98133,-1.53997 -1.43361,-2.30377 1.11702,-0.0697 2.248,-0.13721 3.39295,-0.20244 0.835,-0.88175 1.63675,-1.76885 2.40524,-2.66132 0.18317,0.96223 0.37283,1.9255 0.56898,2.88982 1.07829,0.23657 2.18478,0.47768 3.3195,0.72334 -1.06205,0.65504 -2.14856,1.30613 -3.25954,1.95327 -0.15992,1.02935 -0.33224,2.05671 -0.51695,3.08206 -0.91986,-0.57033 -1.80663,-1.13534 -2.66029,-1.695 -1.2499,0.38787 -2.50796,0.77444 -3.77417,1.15968 z m -0.39022,8.38008 c 0.77819,-0.96165 1.52729,-1.92798 2.2473,-2.899 -0.58431,-0.78508 -1.14304,-1.56603 -1.67616,-2.34286 1.30331,-0.0397 2.6206,-0.0772 3.95184,-0.11237 0.97432,-0.8593 1.91537,-1.72395 2.82317,-2.59397 0.20184,0.96524 0.41017,1.93152 0.62499,2.89885 1.24524,0.26347 2.51868,0.53149 3.82035,0.80406 -1.23681,0.62687 -2.49808,1.24979 -3.78382,1.86878 -0.19605,1.02352 -0.4045,2.04505 -0.62534,3.06459 -1.04654,-0.59075 -2.05998,-1.17617 -3.04032,-1.75625 -1.43918,0.35737 -2.88652,0.71343 -4.34201,1.06817 z m -0.39022,8.38008 c 0.87466,-0.9461 1.72023,-1.89689 2.53672,-2.85237 -0.66517,-0.7981 -1.30475,-1.59209 -1.91873,-2.38195 1.48962,-0.01 2.9932,-0.0171 4.51075,-0.0223 1.11362,-0.83685 2.19399,-1.67905 3.2411,-2.52661 0.2205,0.96824 0.4475,1.93753 0.68099,2.90786 1.41219,0.29038 2.85259,0.58531 4.3212,0.88478 -1.41156,0.59871 -2.8476,1.19347 -4.3081,1.78429 -0.23218,1.0177 -0.47676,2.03341 -0.73373,3.04712 -1.17321,-0.61116 -2.31333,-1.217 -3.42035,-1.81749 -1.62846,0.32686 -3.26508,0.65242 -4.90985,0.97666 z m -0.39022,8.38007 c 0.97113,-0.93055 1.91318,-1.86579 2.82613,-2.80572 -0.74602,-0.81114 -1.46645,-1.61815 -2.16128,-2.42104 1.67591,0.0203 3.36579,0.0429 5.06964,0.0678 1.25293,-0.8144 2.47261,-1.63415 3.65904,-2.45926 0.23917,0.97125 0.48483,1.94355 0.73699,2.91689 1.57914,0.31729 3.18649,0.63912 4.82206,0.9655 -1.58633,0.57054 -3.19713,1.13714 -4.83239,1.69979 -0.26831,1.01188 -0.54902,2.02177 -0.84212,3.02966 -1.29989,-0.63158 -2.56668,-1.25783 -3.80037,-1.87874 -1.81775,0.29636 -3.64365,0.59141 -5.4777,0.88514 z m -0.39022,8.38008 c 1.0676,-0.91501 2.10612,-1.8347 3.11555,-2.75908 -0.82688,-0.82417 -1.62816,-1.64421 -2.40385,-2.46013 1.86222,0.0504 3.7384,0.10298 5.62854,0.15785 1.39225,-0.79195 2.75124,-1.58925 4.07697,-2.39191 0.25784,0.97426 0.52217,1.94957 0.793,2.92592 1.74609,0.34419 3.52039,0.69293 5.32291,1.04622 -1.76109,0.54237 -3.54665,1.0808 -5.35668,1.61529 -0.30443,1.00606 -0.62127,2.01013 -0.9505,3.01219 -1.42656,-0.652 -2.82003,-1.29866 -4.1804,-1.93999 -2.00702,0.26586 -4.02221,0.53041 -6.04554,0.79364 z m -0.39022,8.38007 c 1.16407,-0.89945 2.29906,-1.8036 3.40497,-2.71243 -0.90773,-0.8372 -1.78987,-1.67027 -2.64641,-2.49922 2.04851,0.0804 4.11099,0.16302 6.18743,0.24792 1.53156,-0.7695 3.02986,-1.54435 4.49491,-2.32455 0.27651,0.97726 0.5595,1.95558 0.84899,2.93494 1.91305,0.3711 3.8543,0.74674 5.82378,1.12693 -1.93585,0.51421 -3.89618,1.02448 -5.88097,1.53081 -0.34056,1.00023 -0.69353,1.99847 -1.05889,2.99472 -1.55324,-0.67242 -3.07338,-1.33949 -4.56042,-2.00124 -2.19631,0.23536 -4.40077,0.4694 -6.61339,0.70212 z" + id="path02" + inkscape:path-effect="#path-effect02" + inkscape:original-d="m 24.738785,87.363589 c 0,0 -39.834358,91.897171 52.549087,75.859901 C 169.67131,147.18622 199.04146,68.878684 199.04146,68.878684 l 4.59355,97.685626" + sodipodi:nodetypes="cscc" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 29.236601,204.88975 c 0.281246,-0.15059 0.562715,-0.29502 0.843221,-0.43322 0,0 2e-6,0 2e-6,0 0.275991,-0.136 0.551839,-0.26638 0.8259,-0.39075 0,0 1e-6,0 1e-6,0 0.552122,-0.25055 1.105666,-0.48062 1.64368,-0.68347 0,0 10e-7,0 10e-7,0 l 0,0 c 1.100273,-0.41726 2.178236,-0.74489 3.165658,-0.96013 l 1e-6,0 0,0 c 2.116249,-0.46144 3.903575,-0.46418 5.024312,0.0757 0,0 0,0 0,0 0.434945,0.20944 0.770906,0.49843 0.989566,0.87199 1.308111,2.23482 -1.99841,6.77245 -7.452442,10.15533 -5.454031,3.38287 -11.135013,4.12058 -12.615446,1.59157 -0.247522,-0.42284 -0.360105,-0.90688 -0.348598,-1.43287 0,0 0,0 0,0 0.02993,-1.36509 0.881453,-3.01385 2.369597,-4.62818 l 0,0 0,0 c 0.700386,-0.75968 1.524702,-1.50513 2.477477,-2.21965 l 0,0 c 0,0 10e-7,0 10e-7,0 0.464959,-0.34731 0.951703,-0.68303 1.468022,-1.00983 0,0 1e-6,0 1e-6,0 0.254735,-0.16124 0.515003,-0.31925 0.781259,-0.47429 0,0 2e-6,0 2e-6,0 0.270446,-0.15751 0.546374,-0.31155 0.827785,-0.46223 z m 5.0399,8.63548 c 4.149102,-2.57349 8.430319,-3.71501 10.783388,-3.16683 0,0 0,0 0,0 0.73838,0.17291 1.302684,0.50991 1.64067,1.02561 1.433236,2.18686 -1.664429,6.87076 -6.952703,10.51407 -5.288274,3.64332 -10.937748,4.63999 -12.523475,2.20348 -0.374071,-0.57477 -0.484926,-1.28244 -0.362559,-2.06991 0,0 0,0 0,0 0.392813,-2.58633 3.231187,-5.9116 7.414679,-8.50642 z m 5.471355,8.37285 c 5.288274,-3.64331 10.7671,-4.86208 12.278608,-2.79335 1.511509,2.06872 -1.314899,6.89722 -6.363438,10.85778 -5.048538,3.96055 -10.65094,5.2727 -12.402184,2.88674 -1.751243,-2.38596 1.19874,-7.30785 6.487014,-10.95117 z m 5.91517,8.06443 c 5.048539,-3.96056 10.406748,-5.54612 12.025593,-3.63305 1.618846,1.91308 -0.841908,6.91058 -5.563466,11.25596 -4.721557,4.34538 -10.229669,6.05832 -12.175495,3.76042 -1.945827,-2.2979 0.66483,-7.42278 5.713368,-11.38333 z m 6.462127,7.62291 c 1.818483,-1.6736 3.745909,-2.99597 5.484018,-3.89074 2.772973,-1.42887 5.099762,-1.83702 6.143439,-0.80918 1.700776,1.67496 -0.295816,6.82132 -4.477367,11.68703 -4.181551,4.8657 -9.591401,7.10597 -11.830449,4.90969 -1.373987,-1.34775 -1.111598,-3.93054 0.42569,-6.68085 0.971049,-1.73679 2.425873,-3.53285 4.254669,-5.21595 z m 7.15009,6.98711 c 4.181551,-4.86571 8.966282,-7.57817 10.732054,-6.31856 0.03357,0.0239 0.06592,0.0493 0.09709,0.0759 1.644145,1.33791 0.396261,6.57045 -2.706234,12.06233 -3.102495,5.49188 -8.14276,8.60783 -10.8626,6.80775 -0.05339,-0.0341 -0.105824,-0.07 -0.157266,-0.10755 -2.706202,-1.97572 -1.284599,-7.65418 2.896952,-12.51988 z m 8.122914,5.81968 c 3.162612,-5.5983 7.074661,-9.30359 8.543569,-8.75411 0.536163,0.20056 0.787079,0.98519 0.94824,2.23666 0.135786,1.65362 0.326633,6.33034 -0.141994,9.87242 -0.544283,4.11392 -2.00363,7.44311 -4.601996,9.01955 -1.364246,0.87043 -2.89845,1.11868 -4.254193,0.61896 -3.693659,-1.36146 -3.656238,-7.39518 -0.493626,-12.99348 z m 9.349815,3.35497 c 0.39153,-2.95935 1.354132,-6.22888 1.920486,-8.07793 0.633723,-2.06901 1.025411,-3.36091 1.489797,-3.40988 0.576529,-0.0608 1.4503,1.73935 3.076895,4.35922 0.978546,1.54309 2.28184,3.61515 3.265396,5.73365 1.030076,2.2187 1.661041,4.36637 1.668053,6.42817 -0.04346,3.29733 -2.052445,6.05369 -4.86183,6.45685 -5.258302,0.75459 -7.379061,-5.29018 -6.558797,-11.49008 z m 9.752574,-1.39494 c -1.222486,-2.63314 -2.22066,-6.00087 -2.714217,-7.7792 -0.574616,-2.07039 -0.90255,-3.42102 -0.383553,-3.88863 1.037994,-0.93523 5.969536,1.30728 10.868849,5.51431 4.832918,4.15001 7.321895,9.72035 3.71801,12.52748 -1.649801,1.28506 -4.036236,1.26529 -6.183393,0.0745 -2.216314,-1.22918 -3.932005,-3.48962 -5.305696,-6.44843 z m 7.771079,-6.15352 c -3.58948,-3.08228 -6.385211,-7.03153 -6.833773,-8.82601 0,0 0,0 0,0 -0.155899,-0.68289 -0.116318,-1.24982 0.159043,-1.67042 1.185573,-1.81089 6.549286,-0.77871 12.247208,2.18428 5.697927,2.963 9.009647,8.00134 7.116027,10.787 -0.44118,0.64899 -1.10479,1.08993 -1.9185,1.32408 0,0 0,0 0,0 -2.8545,1.04004 -6.953194,-0.52145 -10.770005,-3.79893 z m 5.572478,-8.31215 c -5.697922,-2.96299 -9.522639,-6.76056 -8.977941,-8.35657 0.182994,-0.53619 0.86957,-0.84421 1.960728,-1.05656 1.780831,-0.29332 6.325385,-0.54984 10.18868,-0.0101 4.29744,0.60043 7.73221,2.18925 9.25401,4.82194 0.73428,1.23484 0.94172,2.58742 0.52008,3.80461 -1.24991,3.60831 -7.24763,3.75965 -12.945557,0.79665 z m 3.171467,-9.4232 c -6.364499,-0.88924 -11.332995,-2.75712 -11.425383,-3.93448 -0.04191,-0.53413 0.925207,-1.11697 2.503344,-2.0132 1.678058,-0.95721 4.95211,-2.80453 7.973589,-3.8994 3.33467,-1.20836 6.45729,-1.58024 9.00537,-0.61183 2.03528,0.80243 3.44618,2.43585 3.63363,4.41963 0.46552,4.92659 -5.45085,6.91108 -11.69055,6.03928 z m -0.94845,-9.84708 c -2.800764,1.01489 -6.124058,1.66642 -8.0482,1.97628 -2.150339,0.34629 -3.567354,0.47602 -3.966047,-0.12873 -0.334387,-0.50721 0.06664,-1.51163 0.901753,-2.93078 1.067576,-1.85934 3.172991,-4.83176 5.785844,-7.29668 2.738411,-2.58337 5.64094,-4.23275 8.34088,-4.41044 1.92115,-0.11402 3.60633,0.56502 4.53865,2.02271 1.11768,1.7475 0.8229,4.07464 -0.59807,6.07895 -1.46107,2.06087 -3.8913,3.57859 -6.95481,4.68869 z m -5.32665,-8.37991 c -4.663834,4.39978 -9.397059,6.94785 -10.94743,5.71998 -0.66937,-0.53012 -0.743289,-1.79062 -0.397687,-3.52942 0.433477,-2.23172 1.653443,-5.43997 3.588156,-8.46279 1.980437,-3.09427 4.331089,-5.38799 6.675323,-6.41126 1.761881,-0.76344 3.454456,-0.74797 4.659308,0.219 2.76637,2.22019 1.08616,8.06471 -3.57767,12.46449 z m -7.756961,-6.27223 c -3.456711,5.40081 -7.73157,8.81787 -9.733031,7.77392 -2.001461,-1.04394 -1.670967,-6.56227 0.907595,-12.44577 2.578562,-5.8835 7.041444,-9.64262 9.921053,-8.116 2.879609,1.52663 2.361093,7.38703 -1.095617,12.78785 z m -8.825436,-4.67185 c -2.578562,5.8835 -6.408435,9.8967 -8.676613,9.04908 -0.641023,-0.23955 -1.112352,-0.85284 -1.428875,-1.75114 0,0 0,0 0,0 -0.773632,-2.20263 -0.625165,-6.43141 0.728187,-10.77773 1.379363,-4.42986 3.680564,-7.81617 6.093433,-9.01752 0,0 10e-7,0 10e-7,0 0.928117,-0.46957 1.848587,-0.58957 2.673474,-0.28756 2.91489,1.06718 3.188955,6.90137 0.610393,12.78487 z" + id="path01" + inkscape:path-effect="#path-effect01" + inkscape:original-d="m 29.236596,204.88974 c 0,0 40.320105,76.00137 67.003146,38.79544 26.683038,-37.20592 -31.456429,-49.4991 -31.456429,-49.4991" /> +</g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PatternAlongPath_shape_1_0_2.svg b/testfiles/lpe_tests/PatternAlongPath_shape_1_0_2.svg new file mode 100644 index 0000000..cf3e6f6 --- /dev/null +++ b/testfiles/lpe_tests/PatternAlongPath_shape_1_0_2.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs3"> + <inkscape:path-effect + effect="skeletal" + id="path-effect01" + is_visible="true" + lpeversion="1" + pattern="M -27.28822,-5.6879492 C -16.051888,17.776724 -15.791114,5.8516913 -4.0456567,-7.6461217 L 7.3903919,3.7911556 c -10.6838013,10.6445114 -21.8208829,15.7794354 -34.6786119,0 z" + copytype="single_stretched" + prop_scale="0.8" + scale_y_rel="false" + spacing="6" + normal_offset="9" + tang_offset="3" + prop_units="false" + vertical_pattern="true" + hide_knot="false" + fuse_tolerance="3" + pattern-nodetypes="ccccc" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#aa0000;stroke-width:0.264583" + id="path01" + inkscape:path-effect="#path-effect01" + sodipodi:type="arc" + sodipodi:cx="118.33981" + sodipodi:cy="123.27053" + sodipodi:rx="95.406715" + sodipodi:ry="91.149582" + d="m 201.67412,179.67733 c -3.46726,4.61945 -7.2973,8.87009 -11.41877,12.70646 -20.84364,19.32765 -47.74398,27.74079 -71.91554,27.39849 C 89.694692,219.37369 64.671874,207.1841 47.974012,190.76167 27.619965,170.69383 19.618834,144.76075 19.986961,123.27052 20.575286,92.575611 35.860918,70.574403 49.917525,57.813675 64.241152,44.822021 79.289382,39.452699 86.898109,37.334608 95.78888,34.859625 98.683469,35.292885 98.324477,35.580937 97.594381,36.166759 92.446396,37.453716 84.216231,41.006355 76.253593,44.443513 64.39417,50.649634 53.556007,61.622092 40.580115,74.726498 27.822238,96.7937 28.478979,123.27049 c 1.5e-5,1e-5 1e-6,4e-5 1e-6,4e-5 0.420713,20.47547 9.445049,43.09918 27.259127,59.36443 15.995171,14.67632 39.029272,23.75378 62.601723,23.19796 21.89096,-0.51201 44.49401,-9.41037 60.38983,-25.51313 14.17587,-14.25991 23.00196,-34.44043 23.05858,-54.48211 -1.32258,19.71998 -11.12148,38.8907 -25.62755,51.79316 -15.58922,14.01611 -37.20416,21.37834 -57.82087,20.64567 0,0 0,0 -1e-5,0 -20.616706,-0.72459 -41.104727,-9.54301 -54.800873,-23.80672 -2e-6,-1e-5 -3e-6,-1e-5 -5e-6,-1e-5 -13.293516,-13.65437 -21.037038,-33.10231 -20.153015,-51.19925 0.154858,-5.27252 1.038951,-10.55448 2.546411,-15.68523 2.794085,-13.199005 9.535451,-25.472099 18.418415,-34.664305 14.514226,-15.244814 35.356849,-23.00672 53.989067,-23.853567 23.65824,-1.085115 44.54313,8.214302 57.97822,19.678105 0,0 1e-5,1.8e-5 1e-5,1.8e-5 14.04511,11.854365 21.17737,26.253263 24.88758,36.506509 3.71022,10.25325 4.49711,16.83311 5.66491,17.87152 0.76504,0.68029 3.08505,-3.03945 2.17172,-14.75134 C 208.25676,98.299807 203.9584,77.393777 186.02779,58.582282 172.49431,44.386671 149.00325,29.897451 118.33981,28.923905 95.600958,28.203381 68.84059,35.28635 47.160026,54.927386 34.580911,66.360553 24.181411,82.155128 19.065685,100.86536 c -1.822274,7.30069 -2.787282,14.8253 -2.804032,22.40517 0.05749,26.01649 11.286175,51.38192 30.00684,69.2763 l 1e-5,1e-5 c 19.268568,18.34655 45.57353,28.54305 72.071307,28.54472 l 1e-5,-10e-6 c 26.49778,-0.002 52.80274,-10.19816 72.0713,-28.54471 4.13262,-3.95022 7.90015,-8.26451 11.263,-12.86951 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PerspectiveEnvelope_mixed_0_92_5.svg b/testfiles/lpe_tests/PerspectiveEnvelope_mixed_0_92_5.svg new file mode 100644 index 0000000..dfa0fe0 --- /dev/null +++ b/testfiles/lpe_tests/PerspectiveEnvelope_mixed_0_92_5.svg @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="19.294789,32.326008" + up_right_point="76.515527,30.38769" + down_left_point="-8.8108261,69.390131" + down_right_point="88.145437,104.27986" + id="path-effect303" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="85.686691,-11.43829" + up_right_point="136.33092,53.312894" + down_left_point="85.686691,79.489613" + down_right_point="238.38908,79.489613" + id="path-effect3805" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="true" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-53.672617,234.35352" + up_right_point="47.523319,252.49638" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect837" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-42.333332,246.44876" + up_right_point="25.600699,238.88924" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect4625" + is_visible="true" + deform_type="envelope_deformation" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="4.9416287,26.026668" + up_right_point="77.80573,25.270718" + down_left_point="4.9416287,85.381068" + down_right_point="77.80573,86.137018" + id="path-effect4611" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="123.58118,41.749945" + up_right_point="197.95064,140.73721" + down_left_point="85.68669,97.903634" + down_right_point="264.09146,29.111974" + id="path-effect4606" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="true" + /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path10" + transform="translate(12.599068,9.6915908)" + inkscape:path-effect="#path-effect3805" + sodipodi:type="arc" + sodipodi:cx="162.03789" + sodipodi:cy="34.025661" + sodipodi:rx="76.351196" + sodipodi:ry="45.463951" + d="m 161.74888,59.832303 c 29.1687,7.481429 152.14838,19.65731 -1113.65486,19.65731 986.305191,0 1037.592671,25.384057 1037.592671,282.752597 0,-429.688957 25.345799,-341.274624 39.323589,-323.403327 7.43791,9.509749 20.23085,16.759375 36.7386,20.99342 z" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 84.581373,81.635108 c 0,0 -43.455475,-16.354067 -43.455475,-16.354067 0,0 -28.766246,11.727291 -28.766246,11.727291 0,0 8.659219,-22.024213 8.659219,-22.024213 0,0 -12.173634,-8.877822 -12.173634,-8.877822 0,0 19.788039,-3.86814 19.788039,-3.86814 0,0 8.940451,-10.531337 8.940451,-10.531337 0,0 11.504129,7.025541 11.504129,7.025541 0,0 28.847537,3.405973 28.847537,3.405973 0,0 -14.986551,10.642295 -14.986551,10.642295 0,0 21.642531,28.854479 21.642531,28.854479 z" + id="path09" + inkscape:test-threshold="5.0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" + inkscape:path-effect="#path-effect303" + inkscape:original-d="M 88.145437,88.114051 54.95569,80.982141 30.26483,104.27986 26.79148,70.510681 -2.9958713,54.22766 28.04722,40.48905 34.32849,7.1278705 56.018371,29.498664 87.74944,35.824084 73.61788,57.43225 Z" /> + <g + transform="translate(139.57099,-82.861554)" + id="g08" + inkscape:path-effect="#path-effect837"> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 12.089306,279.60018 c 3.8778,16.02133 -8.1662906,29.6312 -28.794541,28.74725 -22.508978,-0.96453 -34.556281,1.87795 -35.197608,-18.30311 -0.568766,-17.89769 8.535213,-43.60597 27.230274,-40.62198 17.3984954,2.77703 33.2517303,15.67549 36.761875,30.17784 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 18.142857,261.84821 c -1e-6,24.00631 -15.3995392,43.46726 -34.395832,43.46726 -18.996293,0 -28.580878,3.79886 -28.580879,-20.20744 -3e-6,-24.00631 9.584583,-66.72709 28.580879,-66.72709 18.9962959,0 34.395835,19.46096 34.395832,43.46727 z" + sodipodi:nodetypes="sssss" /> + <path + inkscape:connector-curvature="0" + id="path06" + d="m 47.352847,290.03937 c 7.132806,20.64378 -2.237514,39.46658 -23.570059,39.46658 -23.54911526,0 -45.244046,-6.29949 -48.277375,-32.48131 -2.610569,-22.53282 10.899934,-46.63935 29.9530979,-43.56694 17.6287331,2.84272 35.5849471,18.32103 41.8943361,36.58167 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 57.452381,273.1875 c 0,31.10382 -17.768699,56.31845 -39.6875,56.31845 -21.9188007,0 -39.6875,-6.80061 -39.6875,-37.90443 0,-31.10382 17.7686993,-74.73247 39.6875,-74.73247 21.918801,0 39.6875,25.21463 39.6875,56.31845 z" + sodipodi:nodetypes="sssss" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="2.1026741" + inkscape:transform-center-y="-2.7552688" + d="m 57.871571,298.57945 c 0,0 -28.040186,-9.46617 -28.040186,-9.46617 0,0 -21.6484029,11.52265 -21.6484029,11.52265 0,0 1.0443189,-9.81853 1.0443189,-9.81853 0,0 -32.850363,-28.58162 -32.850363,-28.58162 0,0 28.6959052,-1.26985 28.6959052,-1.26985 0,0 4.6073787,-15.25423 4.6073787,-15.25423 0,0 18.7168551,16.59132 18.7168551,16.59132 0,0 24.469473,3.80136 24.469473,3.80136 0,0 -9.693266,12.29946 -9.693266,12.29946 0,0 14.698287,20.17561 14.698287,20.17561 z" + id="path05" + inkscape:test-threshold="5.0" + inkscape:connector-curvature="0" + inkscape:original-d="m 67.279759,285.66071 -31.371611,-11.38806 -27.1662632,19.38711 3.3474212,-14.05958 -29.044164,-39.14141 32.073905,-9.22663 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" + sodipodi:nodetypes="ccccccccccc" /> + </g> + <g + id="g04" + inkscape:path-effect="#path-effect4625" + transform="translate(24.395035,-58.26932)"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 13.038299,289.60296 c 5.791599,18.3682 -2.500178,33.31874 -18.5202007,33.39297 -16.0200233,0.0742 -43.4736393,-10.40278 -41.7289763,-27.82894 1.744662,-17.42616 21.444904,-36.52531 31.519995,-37.34266 10.0750899,-0.81734 22.9375835,13.41043 28.729182,31.77863 z" + id="path03" + inkscape:original-d="m 18.142857,261.84821 c -1e-6,24.00631 -15.3995392,43.46726 -34.395832,43.46726 -18.996293,0 -52.809855,-14.61516 -52.809856,-38.62146 -3e-6,-24.00631 33.81356,-48.31307 52.809856,-48.31307 18.9962959,0 34.395835,19.46096 34.395832,43.46727 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 44.378197,297.55721 c 11.905364,24.34897 0.08102,31.94874 -19.088826,31.94874 -19.1698455,0 -35.651984,-7.25302 -38.669771,-30.49105 -3.017788,-23.23803 3.8631124,-42.85279 15.3689201,-43.81079 11.5058079,-0.95801 30.4843129,18.00412 42.3896769,42.3531 z" + id="path02" + inkscape:original-d="m 57.452381,273.1875 c 0,31.10382 -17.768699,40.8119 -39.6875,40.8119 -21.9188007,0 -39.6875,-9.70808 -39.6875,-40.8119 0,-31.10382 17.7686993,-56.31845 39.6875,-56.31845 21.918801,0 39.6875,25.21463 39.6875,56.31845 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <path + inkscape:connector-curvature="0" + id="path01" + inkscape:test-threshold="5.0" + d="m 56.744799,307.19628 c 0,0 -27.712443,-8.40445 -27.712443,-8.40445 0,0 -15.853025,15.23748 -15.853025,15.23748 0,0 -6.1440788,-25.40783 -6.1440788,-25.40783 0,0 -17.3713082,-1.92674 -17.3713082,-1.92674 0,0 14.2444974,-20.40475 14.2444974,-20.40475 0,0 -2.3952898,-24.72035 -2.3952898,-24.72035 0,0 17.9299824,20.52283 17.9299824,20.52283 0,0 18.892951,-1.07856 18.892951,-1.07856 0,0 -1.508159,21.39797 -1.508159,21.39797 0,0 19.916873,24.7844 19.916873,24.7844 z" + inkscape:transform-center-y="-2.7552688" + inkscape:transform-center-x="2.1026741" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 67.279759,285.66071 35.908148,274.27265 8.7418848,293.65976 9.8782199,260.30448 -15.01654,256.93447 l 30.135587,-25.70233 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" + sodipodi:nodetypes="ccccccccccc" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PerspectiveEnvelope_multi_mm_1_0_2.svg b/testfiles/lpe_tests/PerspectiveEnvelope_multi_mm_1_0_2.svg new file mode 100644 index 0000000..826df03 --- /dev/null +++ b/testfiles/lpe_tests/PerspectiveEnvelope_multi_mm_1_0_2.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-53.672617,234.35352" + up_right_point="47.523319,252.49638" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect837" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-42.333332,246.44876" + up_right_point="25.600699,238.88924" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect4625" + is_visible="true" + deform_type="envelope_deformation" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="5.6012502,54.745291" + up_right_point="78.46535,53.989334" + down_left_point="5.6012502,114.09968" + down_right_point="78.46535,114.85564" + id="path-effect4611" + is_visible="true" + deform_type="perspective" + horizontal_mirror="true" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="124.2408,64.65361" + up_right_point="202.4869,162.67172" + down_left_point="90.222945,119.83814" + down_right_point="268.62772,51.046473" + id="path-effect4606" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path10" + inkscape:path-effect="#path-effect4606" + sodipodi:type="arc" + sodipodi:cx="166.57414" + sodipodi:cy="55.960159" + sodipodi:rx="76.351196" + sodipodi:ry="63.877975" + d="M 235.87869,106.3167 C 254.04376,75.659694 508.57261,-41.474643 -90.243989,189.42496 59.957311,131.50836 97.89519,107.39205 107.3138,92.112973 116.68243,76.914968 111.40937,48.579803 49.523588,-28.943898 315.30351,303.99596 217.51759,137.30457 235.87869,106.3167 Z" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="4.2494356" + inkscape:transform-center-y="-0.66018494" + d="M 76.462953,104.7138 50.255334,100.10717 31.060668,114.36382 28.380818,93.540646 5.6012502,83.520602 29.349105,75.049916 34.2023,54.448558 51.846263,69.958773 78.46535,67.110209 64.933598,85.500328 Z" + id="path09" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4611" + inkscape:original-d="M 88.80506,116.83267 55.61531,109.70076 30.92445,132.99849 27.4511,99.229291 -2.3362497,82.946271 28.70684,69.207661 l 6.28127,-33.36118 22.65904,25.27827 33.66939,-4.33533 -17.03904,29.36144 z" /> + <g + transform="translate(147.98389,-86.12519)" + id="g08" + inkscape:path-effect="#path-effect837"> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 14.506377,279.85961 c 3.982482,15.94721 -7.074711,29.52212 -26.433623,28.69257 -21.023542,-0.90089 -39.956814,-17.91685 -40.527645,-35.87957 -0.509603,-16.03595 14.25945,-25.40871 31.789408,-22.61069 16.3764028,2.6139 31.565088,15.35493 35.17186,29.79769 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 18.142857,261.84821 a 34.395832,43.467262 0 0 1 -34.395832,43.46726 34.395832,43.467262 0 0 1 -34.395833,-43.46726 34.395832,43.467262 0 0 1 34.395833,-43.46727 34.395832,43.467262 0 0 1 34.395832,43.46727 z" /> + <path + inkscape:connector-curvature="0" + id="path06" + d="m 48.078317,290.106 c 7.167234,20.611 -1.369664,39.39995 -21.537595,39.39995 -22.1511579,0 -44.669577,-22.05727 -47.782862,-45.76668 -2.700317,-20.56444 10.979476,-32.81668 28.9597592,-29.91727 16.7006958,2.69306 34.0195388,18.04857 40.3606978,36.284 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 57.452381,273.1875 a 39.6875,56.318451 0 0 1 -39.6875,56.31845 39.6875,56.318451 0 0 1 -39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,56.31845 z" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="2.1026741" + inkscape:transform-center-y="-2.7552688" + d="m 58.239512,298.6066 -26.78745,-9.34694 -20.192356,11.56571 -4.1125405,-22.71576 -26.5491295,-15.3067 26.9124419,-1.483 4.0270081,-15.27523 18.025674,16.433 23.30339,3.6267 -8.979826,12.38348 z" + id="path05" + inkscape:connector-curvature="0" + inkscape:original-d="M 67.279759,285.66071 35.908148,274.27265 8.7418848,293.65976 9.8782199,260.30448 -16.954858,240.45877 l 32.073905,-9.22663 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" /> + </g> + <g + id="g04" + inkscape:path-effect="#path-effect4625" + transform="translate(28.931292,-45.05725)"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 5.6020376,284.1459 c 4.4497304,16.09465 -5.99225793,29.31072 -23.3228336,29.51894 -17.330576,0.20821 -30.134253,-12.06369 -28.597814,-27.41006 1.536438,-15.34637 11.978427,-28.56245 23.322833,-29.51894 11.344407,-0.95648 24.1480853,11.31542 28.5978146,27.41006 z" + id="path03" + inkscape:original-d="m 18.142857,261.84821 a 34.395832,43.467262 0 0 1 -34.395832,43.46726 34.395832,43.467262 0 0 1 -34.395833,-43.46726 34.395832,43.467262 0 0 1 34.395833,-43.46727 34.395832,43.467262 0 0 1 34.395832,43.46727 z" + inkscape:connector-curvature="0" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 38.988535,290.74505 c 10.1973,21.40705 0.695147,38.7609 -21.223654,38.7609 -21.9188007,0 -40.699265,-16.447 -41.947341,-36.73541 -1.248075,-20.2884 8.254079,-37.64225 21.2236541,-38.7609 12.9695759,-1.11865 31.7500399,15.32835 41.9473409,36.73541 z" + id="path02" + inkscape:original-d="m 57.452381,273.1875 a 39.6875,56.318451 0 0 1 -39.6875,56.31845 39.6875,56.318451 0 0 1 -39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,56.31845 z" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path01" + d="m 51.343338,299.13444 -29.22987,-7.10337 -18.7943879,13.59507 -4.19468784,-22.25606 -21.25586726,-12.14827 20.1119672,-7.46731 0.078506,-21.80049 17.6422422,17.76822 21.114891,-1.34887 -4.329649,19.05853 z" + inkscape:transform-center-y="-2.7552688" + inkscape:transform-center-x="2.1026741" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 67.279759,285.66071 35.908148,274.27265 8.7418848,293.65976 9.8782199,260.30448 -16.954858,240.45877 l 32.073905,-9.22663 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PerspectiveEnvelope_multi_px_1_0_2.svg b/testfiles/lpe_tests/PerspectiveEnvelope_multi_px_1_0_2.svg new file mode 100644 index 0000000..bde61ed --- /dev/null +++ b/testfiles/lpe_tests/PerspectiveEnvelope_multi_px_1_0_2.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-53.672617,234.35352" + up_right_point="47.523319,252.49638" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect837" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="-42.333332,246.44876" + up_right_point="25.600699,238.88924" + down_left_point="-50.648808,329.50595" + down_right_point="77.761413,329.50595" + id="path-effect4625" + is_visible="true" + deform_type="envelope_deformation" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="1.0649927,32.794487" + up_right_point="73.929093,32.038537" + down_left_point="1.0649927,92.148887" + down_right_point="73.929093,92.904837" + id="path-effect4611" + is_visible="true" + deform_type="perspective" + horizontal_mirror="true" + vertical_mirror="false" + overflow_perspective="false" + lpeversion="1" /> + <inkscape:path-effect + effect="perspective-envelope" + up_left_point="119.70454,42.719104" + up_right_point="197.95064,140.73721" + down_left_point="85.68669,97.903634" + down_right_point="264.09146,29.111974" + id="path-effect4606" + is_visible="true" + deform_type="perspective" + horizontal_mirror="false" + vertical_mirror="false" + overflow_perspective="true" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + id="path10" + inkscape:path-effect="#path-effect4606" + sodipodi:type="arc" + sodipodi:cx="162.03789" + sodipodi:cy="34.025661" + sodipodi:rx="76.351196" + sodipodi:ry="63.877975" + d="M 231.34243,84.382201 C 249.50749,53.725195 504.03635,-63.409134 -94.780238,167.49045 55.421057,109.57386 93.358934,85.457546 102.77754,70.178468 112.14617,54.980463 106.87311,26.645294 44.987303,-50.878431 310.76721,282.06139 212.98133,115.37006 231.34243,84.382201 Z" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="4.2494356" + inkscape:transform-center-y="-0.66018494" + d="M 71.926697,82.779292 45.719083,78.172666 26.524416,92.429318 23.844566,71.606149 1.0649927,61.586102 24.812853,53.115415 29.666048,32.514052 47.310011,48.024271 73.929093,45.175708 60.397346,63.565828 Z" + id="path09" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect4611" + inkscape:original-d="m 84.2688,94.898164 -33.189747,-7.13191 -24.69086,23.297726 -3.47335,-33.769186 -29.7873503,-16.28302 31.0430903,-13.73861 6.28127,-33.36118 22.65904,25.27827 33.669387,-4.33533 -17.039037,29.36144 z" /> + <g + transform="translate(143.44763,-108.05969)" + id="g08" + inkscape:path-effect="#path-effect837"> + <path + inkscape:connector-curvature="0" + id="path07" + d="m 14.506377,279.85961 c 3.982482,15.94721 -7.074711,29.52212 -26.433623,28.69257 -21.023542,-0.90089 -39.956814,-17.91685 -40.527645,-35.87957 -0.509603,-16.03595 14.25945,-25.40871 31.789408,-22.61069 16.3764028,2.6139 31.565088,15.35493 35.17186,29.79769 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 18.142857,261.84821 a 34.395832,43.467262 0 0 1 -34.395832,43.46726 34.395832,43.467262 0 0 1 -34.395833,-43.46726 34.395832,43.467262 0 0 1 34.395833,-43.46727 34.395832,43.467262 0 0 1 34.395832,43.46727 z" /> + <path + inkscape:connector-curvature="0" + id="path06" + d="m 48.078317,290.106 c 7.167234,20.611 -1.369664,39.39995 -21.537595,39.39995 -22.1511579,0 -44.669577,-22.05727 -47.782862,-45.76668 -2.700317,-20.56444 10.979476,-32.81668 28.9597592,-29.91727 16.7006958,2.69306 34.0195388,18.04857 40.3606978,36.284 z" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 57.452381,273.1875 a 39.6875,56.318451 0 0 1 -39.6875,56.31845 39.6875,56.318451 0 0 1 -39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,56.31845 z" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="2.1026741" + inkscape:transform-center-y="-2.7552688" + d="m 58.239512,298.6066 -26.78745,-9.34694 -20.192356,11.56571 -4.1125405,-22.71576 -26.5491295,-15.3067 26.9124419,-1.483 4.0270081,-15.27523 18.025674,16.433 23.30339,3.6267 -8.979826,12.38348 z" + id="path05" + inkscape:connector-curvature="0" + inkscape:original-d="M 67.279759,285.66071 35.908148,274.27265 8.7418848,293.65976 9.8782199,260.30448 -16.954858,240.45877 l 32.073905,-9.22663 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" /> + </g> + <g + id="g04" + inkscape:path-effect="#path-effect4625" + transform="translate(24.395035,-66.991752)"> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 5.6020376,284.1459 c 4.4497304,16.09465 -5.99225793,29.31072 -23.3228336,29.51894 -17.330576,0.20821 -30.134253,-12.06369 -28.597814,-27.41006 1.536438,-15.34637 11.978427,-28.56245 23.322833,-29.51894 11.344407,-0.95648 24.1480853,11.31542 28.5978146,27.41006 z" + id="path03" + inkscape:original-d="m 18.142857,261.84821 a 34.395832,43.467262 0 0 1 -34.395832,43.46726 34.395832,43.467262 0 0 1 -34.395833,-43.46726 34.395832,43.467262 0 0 1 34.395833,-43.46727 34.395832,43.467262 0 0 1 34.395832,43.46727 z" + inkscape:connector-curvature="0" /> + <path + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + d="m 38.988535,290.74505 c 10.1973,21.40705 0.695147,38.7609 -21.223654,38.7609 -21.9188007,0 -40.699265,-16.447 -41.947341,-36.73541 -1.248075,-20.2884 8.254079,-37.64225 21.2236541,-38.7609 12.9695759,-1.11865 31.7500399,15.32835 41.9473409,36.73541 z" + id="path02" + inkscape:original-d="m 57.452381,273.1875 a 39.6875,56.318451 0 0 1 -39.6875,56.31845 39.6875,56.318451 0 0 1 -39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,-56.31845 39.6875,56.318451 0 0 1 39.6875,56.31845 z" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path01" + d="m 51.343338,299.13444 -29.22987,-7.10337 -18.7943879,13.59507 -4.19468784,-22.25606 -21.25586726,-12.14827 20.1119672,-7.46731 0.078506,-21.80049 17.6422422,17.76822 21.114891,-1.34887 -4.329649,19.05853 z" + inkscape:transform-center-y="-2.7552688" + inkscape:transform-center-x="2.1026741" + style="fill:#00ff00;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="M 67.279759,285.66071 35.908148,274.27265 8.7418848,293.65976 9.8782199,260.30448 -16.954858,240.45877 l 32.073905,-9.22663 10.582509,-31.65243 18.686428,27.65291 33.373429,0.28342 -20.525058,26.31707 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerClip_multi_mm_1_0_2.svg b/testfiles/lpe_tests/PowerClip_multi_mm_1_0_2.svg new file mode 100644 index 0000000..9b1ce59 --- /dev/null +++ b/testfiles/lpe_tests/PowerClip_multi_mm_1_0_2.svg @@ -0,0 +1,279 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="powerclip" + id="path-effect896" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect887" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect878" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect872" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect854" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect841" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath837"> + <ellipse + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse839" + cx="-67.134285" + cy="125.55812" + rx="68.439247" + ry="63.992504" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 1 -68.4392472,63.9925 68.439247,63.992504 0 0 1 -68.439245,-63.9925 68.439247,63.992504 0 0 1 68.439245,-63.992503 68.439247,63.992504 0 0 1 68.4392472,63.992503 z" /> + <path + id="lpe_path-effect841" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M -222.91331,-13.494339 H 67.721703 V 245.73199 H -222.91331 Z M 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath850"> + <path + sodipodi:type="star" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path852" + sodipodi:sides="5" + sodipodi:cx="292.73157" + sodipodi:cy="97.526833" + sodipodi:r1="81.321312" + sodipodi:r2="40.66066" + sodipodi:arg1="0.50033719" + sodipodi:arg2="1.1286557" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 364.08458,136.53841 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -51.08047,-17.52354 44.97972,-29.885006 0.88113,-53.995489 42.32184,33.543279 51.62504,-15.847511 -18.82338,50.615897 z" + inkscape:transform-center-x="4.6516115" + inkscape:transform-center-y="3.2073551" /> + <path + id="lpe_path-effect854" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 208.36109,11.498306 H 458.61535 V 260.07945 H 208.36109 Z M 364.08458,136.53841 333.05969,92.33722 351.88307,41.721323 300.25803,57.568834 257.93619,24.025555 l -0.88113,53.995489 -44.97972,29.885006 51.08047,17.52354 14.52284,52.01323 32.45061,-43.16535 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath868"> + <path + id="path870" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 h 97.9882 v 76.54216 h -97.9882 z" /> + <path + id="lpe_path-effect872" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 13.868896,153.65791 H 280.46347 v 200.7421 H 13.868896 Z m 98.735804,64.22731 v 76.54216 h 97.9882 v -76.54216 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect878"> + <path + id="path880" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 h 97.9882 v 76.54216 h -97.9882 z" /> + <path + id="lpe_path-effect878" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 13.868896,153.65791 H 280.46347 v 200.7421 H 13.868896 Z m 98.735804,64.22731 v 76.54216 h 97.9882 v -76.54216 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect887"> + <path + sodipodi:type="star" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path889" + sodipodi:sides="5" + sodipodi:cx="292.73157" + sodipodi:cy="97.526833" + sodipodi:r1="81.321312" + sodipodi:r2="40.66066" + sodipodi:arg1="0.50033719" + sodipodi:arg2="1.1286557" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 364.08458,136.53841 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -51.08047,-17.52354 44.97972,-29.885006 0.88113,-53.995489 42.32184,33.543279 51.62504,-15.847511 -18.82338,50.615897 z" + inkscape:transform-center-x="4.6516115" + inkscape:transform-center-y="3.2073551" /> + <path + id="lpe_path-effect887" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 208.36109,11.498306 H 458.61535 V 260.07945 H 208.36109 Z M 364.08458,136.53841 333.05969,92.33722 351.88307,41.721323 300.25803,57.568834 257.93619,24.025555 l -0.88113,53.995489 -44.97972,29.885006 51.08047,17.52354 14.52284,52.01323 32.45061,-43.16535 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect896"> + <ellipse + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse898" + cx="-67.134285" + cy="125.55812" + rx="68.439247" + ry="63.992504" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 1 -68.4392472,63.9925 68.439247,63.992504 0 0 1 -68.439245,-63.9925 68.439247,63.992504 0 0 1 68.439245,-63.992503 68.439247,63.992504 0 0 1 68.4392472,63.992503 z" /> + <path + id="lpe_path-effect896" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M -222.91331,-13.494339 H 67.721703 V 245.73199 H -222.91331 Z M 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path894" + clip-path="url(#clipath_lpe_path-effect896)" + inkscape:path-effect="#path-effect896" + sodipodi:type="arc" + sodipodi:cx="-77.595802" + sodipodi:cy="116.11883" + sodipodi:rx="135.3175" + sodipodi:ry="119.61317" + transform="translate(-183.34055,-116.67839)" + d="M 57.721703,116.11883 A 135.3175,119.61317 0 0 1 -77.595802,235.73199 135.3175,119.61317 0 0 1 -212.91331,116.11883 135.3175,119.61317 0 0 1 -77.595802,-3.494339 135.3175,119.61317 0 0 1 57.721703,116.11883 Z" /> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path833" + clip-path="url(#clipPath837)" + inkscape:path-effect="#path-effect841" + sodipodi:type="arc" + sodipodi:cx="-77.595802" + sodipodi:cy="116.11883" + sodipodi:rx="135.3175" + sodipodi:ry="119.61317" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z M 57.721703,116.11883 A 135.3175,119.61317 0 0 1 -77.595802,235.73199 135.3175,119.61317 0 0 1 -212.91331,116.11883 135.3175,119.61317 0 0 1 -77.595802,-3.494339 135.3175,119.61317 0 0 1 57.721703,116.11883 Z" + transform="translate(76.960165,-156.88179)" /> + <path + id="path885" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + clip-path="url(#clipath_lpe_path-effect887)" + inkscape:path-effect="#path-effect887" + inkscape:original-d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + transform="translate(-102.04759,-148.0729)" /> + <path + id="path845" + inkscape:test-ignore="true" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 274.85215,37.432736 25.40588,20.136098 51.62504,-15.847511 -18.82338,50.615897 31.02489,44.20119 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -42.05469,-14.42717 A 115.12713,114.29057 0 0 0 218.36109,135.78888 115.12713,114.29057 0 0 0 333.48822,250.07945 115.12713,114.29057 0 0 0 448.61535,135.78888 115.12713,114.29057 0 0 0 333.48822,21.498306 115.12713,114.29057 0 0 0 274.85215,37.432736 Z m -17.33849,12.485417 -0.4586,28.102891 -32.85378,21.828405 a 115.12713,114.29057 0 0 1 33.31238,-49.931296 z" + clip-path="url(#clipPath850)" + inkscape:path-effect="#path-effect854" + inkscape:original-d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + transform="translate(148.20667,-148.0729)" /> + <path + id="path876" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + clip-path="url(#clipath_lpe_path-effect878)" + inkscape:path-effect="#path-effect878" + inkscape:original-d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + transform="translate(-147.73342,-3.1793925)" /> + <path + id="path858" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 0,76.54216 h 97.9882 v -76.54216 z m 157.85877,36.14374 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + clip-path="url(#clipPath868)" + inkscape:path-effect="#path-effect872" + inkscape:original-d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + transform="translate(154.48254,13.291178)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerClip_multi_px_1_0_2.svg b/testfiles/lpe_tests/PowerClip_multi_px_1_0_2.svg new file mode 100644 index 0000000..827b373 --- /dev/null +++ b/testfiles/lpe_tests/PowerClip_multi_px_1_0_2.svg @@ -0,0 +1,280 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="powerclip" + id="path-effect896" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect887" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect878" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="false" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect872" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect854" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <inkscape:path-effect + effect="powerclip" + id="path-effect841" + is_visible="true" + lpeversion="1" + inverse="true" + flatten="true" + hide_clip="false" + message="Use fill-rule evenodd on <b>fill and stroke</b> dialog if no flatten result after convert clip to paths." /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath837"> + <ellipse + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse839" + cx="-67.134285" + cy="125.55812" + rx="68.439247" + ry="63.992504" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 1 -68.4392472,63.9925 68.439247,63.992504 0 0 1 -68.439245,-63.9925 68.439247,63.992504 0 0 1 68.439245,-63.992503 68.439247,63.992504 0 0 1 68.4392472,63.992503 z" /> + <path + id="lpe_path-effect841" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M -222.91331,-13.494339 H 67.721703 V 245.73199 H -222.91331 Z M 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath850"> + <path + sodipodi:type="star" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path852" + sodipodi:sides="5" + sodipodi:cx="292.73157" + sodipodi:cy="97.526833" + sodipodi:r1="81.321312" + sodipodi:r2="40.66066" + sodipodi:arg1="0.50033719" + sodipodi:arg2="1.1286557" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 364.08458,136.53841 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -51.08047,-17.52354 44.97972,-29.885006 0.88113,-53.995489 42.32184,33.543279 51.62504,-15.847511 -18.82338,50.615897 z" + inkscape:transform-center-x="4.6516115" + inkscape:transform-center-y="3.2073551" /> + <path + id="lpe_path-effect854" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 208.36109,11.498306 H 458.61535 V 260.07945 H 208.36109 Z M 364.08458,136.53841 333.05969,92.33722 351.88307,41.721323 300.25803,57.568834 257.93619,24.025555 l -0.88113,53.995489 -44.97972,29.885006 51.08047,17.52354 14.52284,52.01323 32.45061,-43.16535 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath868"> + <path + id="path870" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 h 97.9882 v 76.54216 h -97.9882 z" /> + <path + id="lpe_path-effect872" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 13.868896,153.65791 H 280.46347 v 200.7421 H 13.868896 Z m 98.735804,64.22731 v 76.54216 h 97.9882 v -76.54216 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect878"> + <path + id="path880" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 h 97.9882 v 76.54216 h -97.9882 z" /> + <path + id="lpe_path-effect878" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 13.868896,153.65791 H 280.46347 v 200.7421 H 13.868896 Z m 98.735804,64.22731 v 76.54216 h 97.9882 v -76.54216 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect887"> + <path + sodipodi:type="star" + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path889" + sodipodi:sides="5" + sodipodi:cx="292.73157" + sodipodi:cy="97.526833" + sodipodi:r1="81.321312" + sodipodi:r2="40.66066" + sodipodi:arg1="0.50033719" + sodipodi:arg2="1.1286557" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 364.08458,136.53841 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -51.08047,-17.52354 44.97972,-29.885006 0.88113,-53.995489 42.32184,33.543279 51.62504,-15.847511 -18.82338,50.615897 z" + inkscape:transform-center-x="4.6516115" + inkscape:transform-center-y="3.2073551" /> + <path + id="lpe_path-effect887" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M 208.36109,11.498306 H 458.61535 V 260.07945 H 208.36109 Z M 364.08458,136.53841 333.05969,92.33722 351.88307,41.721323 300.25803,57.568834 257.93619,24.025555 l -0.88113,53.995489 -44.97972,29.885006 51.08047,17.52354 14.52284,52.01323 32.45061,-43.16535 z" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipath_lpe_path-effect896"> + <ellipse + style="display:none;fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse898" + cx="-67.134285" + cy="125.55812" + rx="68.439247" + ry="63.992504" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 1 -68.4392472,63.9925 68.439247,63.992504 0 0 1 -68.439245,-63.9925 68.439247,63.992504 0 0 1 68.439245,-63.992503 68.439247,63.992504 0 0 1 68.4392472,63.992503 z" /> + <path + id="lpe_path-effect896" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + class="powerclip" + d="M -222.91331,-13.494339 H 67.721703 V 245.73199 H -222.91331 Z M 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path894" + clip-path="url(#clipath_lpe_path-effect896)" + inkscape:path-effect="#path-effect896" + sodipodi:type="arc" + sodipodi:cx="-77.595802" + sodipodi:cy="116.11883" + sodipodi:rx="135.3175" + sodipodi:ry="119.61317" + transform="matrix(2.2732151,0,0,2.2732151,94.109962,-54.675694)" + d="M 57.721703,116.11883 A 135.3175,119.61317 0 0 1 -77.595802,235.73199 135.3175,119.61317 0 0 1 -212.91331,116.11883 135.3175,119.61317 0 0 1 -77.595802,-3.494339 135.3175,119.61317 0 0 1 57.721703,116.11883 Z" /> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path833" + clip-path="url(#clipPath837)" + inkscape:path-effect="#path-effect841" + sodipodi:type="arc" + sodipodi:cx="-77.595802" + sodipodi:cy="116.11883" + sodipodi:rx="135.3175" + sodipodi:ry="119.61317" + d="m 1.3049622,125.55812 a 68.439247,63.992504 0 0 0 -68.4392472,-63.992503 68.439247,63.992504 0 0 0 -68.439245,63.992503 68.439247,63.992504 0 0 0 68.439245,63.9925 68.439247,63.992504 0 0 0 68.4392472,-63.9925 z M 57.721703,116.11883 A 135.3175,119.61317 0 0 1 -77.595802,235.73199 135.3175,119.61317 0 0 1 -212.91331,116.11883 135.3175,119.61317 0 0 1 -77.595802,-3.494339 135.3175,119.61317 0 0 1 57.721703,116.11883 Z" + transform="matrix(2.2732151,0,0,2.2732151,685.82948,-146.06667)" /> + <path + id="path885" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + clip-path="url(#clipath_lpe_path-effect887)" + inkscape:path-effect="#path-effect887" + inkscape:original-d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + transform="matrix(2.2732151,0,0,2.2732151,278.90635,-126.04217)" /> + <path + id="path845" + inkscape:test-ignore="true" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 274.85215,37.432736 25.40588,20.136098 51.62504,-15.847511 -18.82338,50.615897 31.02489,44.20119 -53.95532,-2.26094 -32.45061,43.16535 -14.52284,-52.01323 -42.05469,-14.42717 A 115.12713,114.29057 0 0 0 218.36109,135.78888 115.12713,114.29057 0 0 0 333.48822,250.07945 115.12713,114.29057 0 0 0 448.61535,135.78888 115.12713,114.29057 0 0 0 333.48822,21.498306 115.12713,114.29057 0 0 0 274.85215,37.432736 Z m -17.33849,12.485417 -0.4586,28.102891 -32.85378,21.828405 a 115.12713,114.29057 0 0 1 33.31238,-49.931296 z" + clip-path="url(#clipPath850)" + inkscape:path-effect="#path-effect854" + inkscape:original-d="M 448.61535,135.78888 A 115.12713,114.29057 0 0 1 333.48822,250.07945 115.12713,114.29057 0 0 1 218.36109,135.78888 115.12713,114.29057 0 0 1 333.48822,21.498306 115.12713,114.29057 0 0 1 448.61535,135.78888 Z" + transform="matrix(2.2732151,0,0,2.2732151,847.78811,-126.04217)" /> + <path + id="path876" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + clip-path="url(#clipath_lpe_path-effect878)" + inkscape:path-effect="#path-effect878" + inkscape:original-d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + transform="matrix(2.2732151,0,0,2.2732151,175.05263,203.33194)" /> + <path + id="path858" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + d="m 112.6047,217.88522 0,76.54216 h 97.9882 v -76.54216 z m 157.85877,36.14374 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + clip-path="url(#clipPath868)" + inkscape:path-effect="#path-effect872" + inkscape:original-d="M 270.46347,254.02896 A 123.29729,90.371048 0 0 1 147.16618,344.40001 123.29729,90.371048 0 0 1 23.868896,254.02896 123.29729,90.371048 0 0 1 147.16618,163.65791 123.29729,90.371048 0 0 1 270.46347,254.02896 Z" + transform="matrix(2.2732151,0,0,2.2732151,862.05451,240.77309)" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerMask_multi_mm_1_0_2.svg b/testfiles/lpe_tests/PowerMask_multi_mm_1_0_2.svg new file mode 100644 index 0000000..1f049c7 --- /dev/null +++ b/testfiles/lpe_tests/PowerMask_multi_mm_1_0_2.svg @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg953" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs947"> + <inkscape:path-effect + effect="powermask" + id="path-effect1714" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1714" + invert="false" + hide_mask="false" + background="true" + background_color="#05ff00ff" + background_color_opacity_LPE="1" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1574" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1574" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1556" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1556" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1542" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1542" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1524" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1524" + invert="false" + hide_mask="false" + background="true" + background_color="#ff0084ff" + background_color_opacity_LPE="1" /> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1524"> + <path + id="mask-powermask-path-effect1524_box" + style="fill:#ff0084;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <ellipse + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1522" + cx="-54.03064" + cy="107.55451" + rx="66.384262" + ry="49.355526" + d="M 12.353622,107.55451 A 66.384262,49.355526 0 0 1 -54.03064,156.91004 66.384262,49.355526 0 0 1 -120.4149,107.55451 66.384262,49.355526 0 0 1 -54.03064,58.198986 66.384262,49.355526 0 0 1 12.353622,107.55451 Z" /> + </mask> + <filter + id="mask-powermask-path-effect1524_inverse" + inkscape:label="filtermask-powermask-path-effect1524" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1524_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1524_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1542"> + <path + id="mask-powermask-path-effect1542_box" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1540" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:transform-center-x="-0.39075553" + inkscape:transform-center-y="-5.2654283" + d="m -97.509163,317.8194 -34.307387,-18.98512 -35.08889,17.49862 7.45438,-38.495 -27.48525,-27.96414 38.91445,-4.80607 18.10207,-34.78142 16.59607,35.52468 38.672943,6.46804 -28.657513,26.76152 z" /> + </mask> + <filter + id="mask-powermask-path-effect1542_inverse" + inkscape:label="filtermask-powermask-path-effect1542" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1542_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1542_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1556"> + <path + id="mask-powermask-path-effect1556_box" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1558" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1560" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:transform-center-x="-0.39075553" + inkscape:transform-center-y="-5.2654283" + d="m -97.509163,317.8194 -34.307387,-18.98512 -35.08889,17.49862 7.45438,-38.495 -27.48525,-27.96414 38.91445,-4.80607 18.10207,-34.78142 16.59607,35.52468 38.672943,6.46804 -28.657513,26.76152 z" /> + </mask> + <filter + id="mask-powermask-path-effect1556_inverse" + inkscape:label="filtermask-powermask-path-effect1556" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1556_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1556_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1574"> + <path + id="mask-powermask-path-effect1574_box" + style="fill:#ffffff;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <path + id="path1576" + style="fill:#ffffff;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <ellipse + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1578" + cx="-54.03064" + cy="107.55451" + rx="66.384262" + ry="49.355526" + d="M 12.353622,107.55451 A 66.384262,49.355526 0 0 1 -54.03064,156.91004 66.384262,49.355526 0 0 1 -120.4149,107.55451 66.384262,49.355526 0 0 1 -54.03064,58.198986 66.384262,49.355526 0 0 1 12.353622,107.55451 Z" /> + </mask> + <filter + id="mask-powermask-path-effect1574_inverse" + inkscape:label="filtermask-powermask-path-effect1574" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1574_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1574_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1714"> + <path + id="mask-powermask-path-effect1714_box" + style="fill:#05ff00;fill-opacity:1" + d="m -180.95891,308.69259 h 390.06043 v 271.0059 h -390.06043 z" /> + <ellipse + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1712" + cx="32.252182" + cy="438.96045" + rx="109.56506" + ry="47.203445" /> + </mask> + <filter + id="mask-powermask-path-effect1714_inverse" + inkscape:label="filtermask-powermask-path-effect1714" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1714_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1714_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="400" + inkscape:cy="1360" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata950"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1571" + mask="url(#mask-powermask-path-effect1574)" + inkscape:path-effect="#path-effect1574" + sodipodi:type="arc" + sodipodi:cx="-42.751141" + sodipodi:cy="115.50098" + sodipodi:rx="175.81261" + sodipodi:ry="112.08567" + transform="translate(-16.181737,-127.9237)" + d="M 133.06147,115.50098 A 175.81261,112.08567 0 0 1 -42.751141,227.58665 175.81261,112.08567 0 0 1 -218.56375,115.50098 175.81261,112.08567 0 0 1 -42.751141,3.4153061 175.81261,112.08567 0 0 1 133.06147,115.50098 Z" /> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1516" + mask="url(#mask-powermask-path-effect1524)" + inkscape:path-effect="#path-effect1524" + sodipodi:type="arc" + sodipodi:cx="-42.751141" + sodipodi:cy="115.50098" + sodipodi:rx="175.81261" + sodipodi:ry="112.08567" + d="M 133.06147,115.50098 A 175.81261,112.08567 0 0 1 -42.751141,227.58665 175.81261,112.08567 0 0 1 -218.56375,115.50098 175.81261,112.08567 0 0 1 -42.751141,3.4153061 175.81261,112.08567 0 0 1 133.06147,115.50098 Z" + transform="translate(365.14479,-154.52486)" /> + <path + id="path1553" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + mask="url(#mask-powermask-path-effect1556)" + inkscape:path-effect="#path-effect1556" + inkscape:original-d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + transform="translate(45.658523,-25.381434)" /> + <path + id="path1532" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + mask="url(#mask-powermask-path-effect1542)" + inkscape:path-effect="#path-effect1542" + inkscape:original-d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + transform="translate(468.39333,-31.134912)" /> + <g + id="g1706" + mask="url(#mask-powermask-path-effect1714)" + inkscape:path-effect="#path-effect1714"> + <ellipse + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1696" + cx="120.02859" + cy="484.28946" + rx="83.072929" + ry="89.409035" + d="m 203.10152,484.28946 a 83.072929,89.409035 0 0 1 -83.07293,89.40903 83.072929,89.409035 0 0 1 -83.072932,-89.40903 83.072929,89.409035 0 0 1 83.072932,-89.40904 83.072929,89.409035 0 0 1 83.07293,89.40904 z" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1698" + sodipodi:sides="5" + sodipodi:cx="-59.314068" + sodipodi:cy="433.00345" + sodipodi:r1="112.49419" + sodipodi:r2="56.247089" + sodipodi:arg1="0.85428738" + sodipodi:arg2="1.4826059" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 14.567171,517.83566 -68.927212,-28.80371 -62.803699,40.45133 6.09428,-74.45451 -57.87891,-47.22972 72.693685,-17.21171 27.032563,-69.6409 38.832887,63.8171 74.585955,4.18927 -48.6936403,56.65284 z" + inkscape:transform-center-x="3.0617565" + inkscape:transform-center-y="-7.7885933" /> + <path + id="path1700" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="m 171.73651,428.27258 a 75.414436,77.203995 0 0 1 -75.414435,77.204 75.414436,77.203995 0 0 1 -75.414436,-77.204 75.414436,77.203995 0 0 1 75.414436,-77.20399 75.414436,77.203995 0 0 1 75.414435,77.20399 z" + inkscape:original-d="m 171.73651,428.27258 a 75.414436,77.203995 0 0 1 -75.414435,77.204 75.414436,77.203995 0 0 1 -75.414436,-77.204 75.414436,77.203995 0 0 1 75.414436,-77.20399 75.414436,77.203995 0 0 1 75.414435,77.20399 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerMask_multi_px_1_0_2.svg b/testfiles/lpe_tests/PowerMask_multi_px_1_0_2.svg new file mode 100644 index 0000000..93a6036 --- /dev/null +++ b/testfiles/lpe_tests/PowerMask_multi_px_1_0_2.svg @@ -0,0 +1,357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg953" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs947"> + <inkscape:path-effect + effect="powermask" + id="path-effect1714" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1714" + invert="false" + hide_mask="false" + background="true" + background_color="#05ff00ff" + background_color_opacity_LPE="1" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1574" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1574" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1556" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1556" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1542" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1542" + invert="false" + hide_mask="false" + background="true" + background_color="#ffffffff" /> + <inkscape:path-effect + effect="powermask" + id="path-effect1524" + is_visible="true" + lpeversion="1" + uri="#mask-powermask-path-effect1524" + invert="false" + hide_mask="false" + background="true" + background_color="#ff0084ff" + background_color_opacity_LPE="1" /> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1524"> + <path + id="mask-powermask-path-effect1524_box" + style="fill:#ff0084;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <ellipse + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1522" + cx="-54.03064" + cy="107.55451" + rx="66.384262" + ry="49.355526" + d="M 12.353622,107.55451 A 66.384262,49.355526 0 0 1 -54.03064,156.91004 66.384262,49.355526 0 0 1 -120.4149,107.55451 66.384262,49.355526 0 0 1 -54.03064,58.198986 66.384262,49.355526 0 0 1 12.353622,107.55451 Z" /> + </mask> + <filter + id="mask-powermask-path-effect1524_inverse" + inkscape:label="filtermask-powermask-path-effect1524" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1524_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1524_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1542"> + <path + id="mask-powermask-path-effect1542_box" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1540" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:transform-center-x="-0.39075553" + inkscape:transform-center-y="-5.2654283" + d="m -97.509163,317.8194 -34.307387,-18.98512 -35.08889,17.49862 7.45438,-38.495 -27.48525,-27.96414 38.91445,-4.80607 18.10207,-34.78142 16.59607,35.52468 38.672943,6.46804 -28.657513,26.76152 z" /> + </mask> + <filter + id="mask-powermask-path-effect1542_inverse" + inkscape:label="filtermask-powermask-path-effect1542" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1542_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1542_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1556"> + <path + id="mask-powermask-path-effect1556_box" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1558" + style="fill:#ffffff;fill-opacity:1" + d="M -250.92118,170.85218 H 13.671501 V 370.34521 H -250.92118 Z" /> + <path + id="path1560" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:transform-center-x="-0.39075553" + inkscape:transform-center-y="-5.2654283" + d="m -97.509163,317.8194 -34.307387,-18.98512 -35.08889,17.49862 7.45438,-38.495 -27.48525,-27.96414 38.91445,-4.80607 18.10207,-34.78142 16.59607,35.52468 38.672943,6.46804 -28.657513,26.76152 z" /> + </mask> + <filter + id="mask-powermask-path-effect1556_inverse" + inkscape:label="filtermask-powermask-path-effect1556" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1556_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1556_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1574"> + <path + id="mask-powermask-path-effect1574_box" + style="fill:#ffffff;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <path + id="path1576" + style="fill:#ffffff;fill-opacity:1" + d="M -224.56375,-2.5846939 H 139.06147 V 233.58665 h -363.62522 z" /> + <ellipse + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1578" + cx="-54.03064" + cy="107.55451" + rx="66.384262" + ry="49.355526" + d="M 12.353622,107.55451 A 66.384262,49.355526 0 0 1 -54.03064,156.91004 66.384262,49.355526 0 0 1 -120.4149,107.55451 66.384262,49.355526 0 0 1 -54.03064,58.198986 66.384262,49.355526 0 0 1 12.353622,107.55451 Z" /> + </mask> + <filter + id="mask-powermask-path-effect1574_inverse" + inkscape:label="filtermask-powermask-path-effect1574" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1574_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1574_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + <mask + maskUnits="userSpaceOnUse" + id="mask-powermask-path-effect1714"> + <path + id="mask-powermask-path-effect1714_box" + style="fill:#05ff00;fill-opacity:1" + d="m -180.95891,308.69259 h 390.06043 v 271.0059 h -390.06043 z" /> + <ellipse + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="ellipse1712" + cx="32.252182" + cy="438.96045" + rx="109.56506" + ry="47.203445" /> + </mask> + <filter + id="mask-powermask-path-effect1714_inverse" + inkscape:label="filtermask-powermask-path-effect1714" + style="color-interpolation-filters:sRGB" + height="100" + width="100" + x="-50" + y="-50"> + <feColorMatrix + id="mask-powermask-path-effect1714_primitive1" + values="1" + type="saturate" + result="fbSourceGraphic" /> + <feColorMatrix + id="mask-powermask-path-effect1714_primitive2" + values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " + in="fbSourceGraphic" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.175" + inkscape:cx="413.38095" + inkscape:cy="1096.5347" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata950"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1571" + mask="url(#mask-powermask-path-effect1574)" + inkscape:path-effect="#path-effect1574" + sodipodi:type="arc" + sodipodi:cx="-42.751141" + sodipodi:cy="115.50098" + sodipodi:rx="175.81261" + sodipodi:ry="112.08567" + transform="matrix(2.5180623,0,0,2.5180623,323.20196,-85.135818)" + d="M 133.06147,115.50098 A 175.81261,112.08567 0 0 1 -42.751141,227.58665 175.81261,112.08567 0 0 1 -218.56375,115.50098 175.81261,112.08567 0 0 1 -42.751141,3.4153061 175.81261,112.08567 0 0 1 133.06147,115.50098 Z" /> + <path + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1516" + mask="url(#mask-powermask-path-effect1524)" + inkscape:path-effect="#path-effect1524" + sodipodi:type="arc" + sodipodi:cx="-42.751141" + sodipodi:cy="115.50098" + sodipodi:rx="175.81261" + sodipodi:ry="112.08567" + d="M 133.06147,115.50098 A 175.81261,112.08567 0 0 1 -42.751141,227.58665 175.81261,112.08567 0 0 1 -218.56375,115.50098 175.81261,112.08567 0 0 1 -42.751141,3.4153061 175.81261,112.08567 0 0 1 133.06147,115.50098 Z" + transform="matrix(2.5180623,0,0,2.5180623,1283.4059,-152.1192)" /> + <path + id="path1553" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + mask="url(#mask-powermask-path-effect1556)" + inkscape:path-effect="#path-effect1556" + inkscape:original-d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + transform="matrix(2.5180623,0,0,2.5180623,478.91959,173.072)" /> + <path + id="path1532" + style="fill:#008080;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + mask="url(#mask-powermask-path-effect1542)" + inkscape:path-effect="#path-effect1542" + inkscape:original-d="M 7.6715012,270.59869 A 126.29634,93.746513 0 0 1 -118.62484,364.34521 126.29634,93.746513 0 0 1 -244.92118,270.59869 126.29634,93.746513 0 0 1 -118.62484,176.85218 126.29634,93.746513 0 0 1 7.6715012,270.59869 Z" + transform="matrix(2.5180623,0,0,2.5180623,1543.3922,158.58438)" /> + <g + id="g1706" + mask="url(#mask-powermask-path-effect1714)" + inkscape:path-effect="#path-effect1714" + transform="matrix(2.5180623,0,0,2.5180623,363.94858,236.98403)"> + <ellipse + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1696" + cx="120.02859" + cy="484.28946" + rx="83.072929" + ry="89.409035" /> + <path + sodipodi:type="star" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + id="path1698" + sodipodi:sides="5" + sodipodi:cx="-59.314068" + sodipodi:cy="433.00345" + sodipodi:r1="112.49419" + sodipodi:r2="56.247089" + sodipodi:arg1="0.85428738" + sodipodi:arg2="1.4826059" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 14.567171,517.83566 -68.927212,-28.80371 -62.803699,40.45133 6.09428,-74.45451 -57.87891,-47.22972 72.693685,-17.21171 27.032563,-69.6409 38.832887,63.8171 74.585955,4.18927 -48.6936403,56.65284 z" + inkscape:transform-center-x="3.0617565" + inkscape:transform-center-y="-7.7885933" /> + <path + id="path1700" + style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="m 171.73651,428.27258 a 75.414436,77.203995 0 0 1 -75.414435,77.204 75.414436,77.203995 0 0 1 -75.414436,-77.204 75.414436,77.203995 0 0 1 75.414436,-77.20399 75.414436,77.203995 0 0 1 75.414435,77.20399 z" + inkscape:original-d="m 171.73651,428.27258 a 75.414436,77.203995 0 0 1 -75.414435,77.204 75.414436,77.203995 0 0 1 -75.414436,-77.204 75.414436,77.203995 0 0 1 75.414436,-77.20399 75.414436,77.203995 0 0 1 75.414435,77.20399 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerStroke_multi_mm_1_0_2.svg b/testfiles/lpe_tests/PowerStroke_multi_mm_1_0_2.svg new file mode 100644 index 0000000..4748102 --- /dev/null +++ b/testfiles/lpe_tests/PowerStroke_multi_mm_1_0_2.svg @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="powerstroke" + lpeversion="1" + id="path-effect46" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CentripetalCatmullRom" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="powerstroke" + lpeversion="1" + id="path-effect42" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="SpiroInterpolator" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="powerstroke" + lpeversion="1" + id="path-effect38" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CubicBezierSmooth" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + end_linecap_type="round" + lpeversion="1" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="1" + interpolator_type="CubicBezierFit" + sort_points="true" + offset_points="0,5.2641926 | 2.8291568,6.6597862 | 1.6759239,1.0180989" + is_visible="true" + id="path-effect34" + effect="powerstroke" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + lpeversion="1" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + is_visible="true" + id="path-effect30" + effect="powerstroke" /> + <inkscape:path-effect + effect="powerstroke" + lpeversion="1" + id="path-effect26" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CubicBezierSmooth" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect18" + lpeversion="1" + is_visible="true" + offset_points="0,-3.3819627 | 0.70107238,1.0212489 | 7.7147489,1.8587929" + sort_points="true" + interpolator_type="CubicBezierJohan" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 68.017813,142.30706 c 0,0 3.152005,-1.22578 3.152005,-1.22578 1.778597,4.57354 3.010573,19.89007 4.78917,24.4636 1.127173,2.89845 2.39402,6.16533 3.782846,9.75397 0,0 0.486472,1.25728 0.486472,1.25728 0,0 1.088162,-0.80269 1.088162,-0.80269 5.358812,-3.95168 11.938776,-8.785 19.291762,-14.17643 0,0 0.2533,-0.18572 0.2533,-0.18572 0,0 0.12279,-0.30254 0.12279,-0.30254 2.42641,-5.97823 5.06433,-12.46513 7.81364,-19.21993 l -0.22794,0.56002 -0.23612,-2.07266 c -0.002,-0.0154 -2.3643,-1.63297 -5.89788,-3.87223 -3.468702,-2.19815 -8.10978,-5.02144 -12.601895,-7.39615 -2.229441,-1.17857 -4.443276,-2.25787 -6.469981,-3.096 -1.010916,-0.41805 -1.984783,-0.78007 -2.897957,-1.06517 -0.908461,-0.28364 -1.777771,-0.49777 -2.577425,-0.61117 -0.400831,-0.0568 -0.793854,-0.0898 -1.172771,-0.0913 -0.377838,-0.002 -0.754108,0.0281 -1.117362,0.10247 -0.363511,0.0745 -0.726552,0.19638 -1.066791,0.38646 -0.343804,0.19207 -0.65443,0.44848 -0.908763,0.77585 -0.253872,0.32678 -0.43025,0.69666 -0.538293,1.0915 -0.106923,0.39075 -0.145303,0.79911 -0.133923,1.21273 0.01137,0.41324 0.07274,0.84502 0.174677,1.29167 0.102073,0.44726 0.247444,0.92082 0.43315,1.42045 1.402462,3.77526 3.263265,6.83485 5.297992,9.20492 2.03174,2.36659 4.245237,4.05484 6.35501,5.06975 1.058161,0.50904 2.105931,0.85613 3.104123,1.02673 0.997501,0.17049 1.979472,0.17021 2.880301,-0.0515 0.454103,-0.11175 0.891306,-0.28082 1.296757,-0.51543 0.407511,-0.23579 0.776458,-0.53416 1.091944,-0.89562 0.316437,-0.36256 0.568331,-0.77629 0.752263,-1.2311 0.183921,-0.45477 0.296086,-0.94092 0.343216,-1.44768 0.04494,-0.48194 0.03897,-0.99256 0.0019,-1.50963 -0.0374,-0.52131 -0.108124,-1.0715 -0.200972,-1.63635 -0.186057,-1.13189 -0.469799,-2.37459 -0.784948,-3.63431 -0.316118,-1.26358 -0.679304,-2.60397 -1.015477,-3.87745 -0.344215,-1.30396 -0.666385,-2.56071 -0.922765,-3.73186 -0.259883,-1.18714 -0.440858,-2.23669 -0.511146,-3.11301 -0.03524,-0.43935 -0.04072,-0.81302 -0.01997,-1.12284 0.02112,-0.31527 0.06725,-0.52924 0.114595,-0.6626 0.02283,-0.0643 0.0428,-0.1008 0.05372,-0.11677 0.0097,-0.0142 0.01213,-0.0109 -0.0017,0.005 -0.01394,0.0163 -0.03467,0.0336 -0.05772,0.0478 -0.0221,0.0136 -0.03531,0.0173 -0.02635,0.0167 0.02343,-0.002 0.141544,-0.0179 0.407545,0.0379 0.265823,0.0558 0.628093,0.17322 1.103853,0.39004 0.980939,0.44683 1.730217,0.9479 2.31998,1.46764 0.599658,0.52846 1.060218,1.09909 1.434762,1.69596 0.384409,0.61258 0.687399,1.26767 0.954803,1.95834 0.27601,0.71291 0.505291,1.43915 0.754405,2.2022 0.250874,0.76845 0.520941,1.57098 0.863997,2.34745 0.355414,0.80444 0.796882,1.5996 1.396732,2.33307 0.62394,0.76293 1.3892,1.42184 2.33682,1.95135 0.97436,0.54444 2.09789,0.92775 3.38061,1.16659 1.35805,0.25279 2.6097,0.26905 3.75441,0.11148 1.19785,-0.16488 2.26397,-0.51803 3.20075,-0.97409 2.01652,-0.9817 3.48658,-2.46496 4.49223,-3.74762 1.00438,-1.28103 1.69882,-2.55891 2.12772,-3.45033 0.0623,-0.12944 0.098,-0.31724 0.10731,-0.53316 0.0258,-0.60045 -0.14467,-1.2738 -0.39564,-1.74747 -0.24836,-0.46876 -0.53367,-0.63559 -0.53367,-0.63559 0,0 -0.32781,-0.0107 -0.80027,0.16029 -0.46346,0.16775 -1.05653,0.48927 -1.42745,0.80178 -0.14136,0.11911 -0.24924,0.23626 -0.30027,0.34232 -0.35765,0.74333 -0.91714,1.77299 -1.69973,2.7811 -0.79282,1.02129 -1.84671,2.06243 -3.18906,2.72828 -0.61571,0.30541 -1.30901,0.54063 -2.0915,0.65449 -0.7466,0.10863 -1.60513,0.11134 -2.59053,-0.065 -0.97427,-0.1744 -1.71388,-0.43719 -2.28732,-0.74968 -0.54726,-0.29823 -0.9711,-0.65651 -1.3228,-1.07526 -0.34691,-0.41304 -0.64106,-0.90547 -0.91594,-1.50655 -0.27204,-0.59486 -0.50326,-1.24471 -0.76307,-2.00791 -0.24229,-0.71173 -0.51861,-1.55077 -0.84839,-2.37157 -0.3287,-0.81815 -0.73536,-1.68474 -1.285063,-2.53657 -0.54206,-0.83998 -1.221552,-1.66343 -2.103521,-2.42277 -0.866189,-0.74576 -1.908755,-1.41349 -3.178069,-1.97761 -0.636554,-0.28299 -1.25064,-0.49311 -1.837108,-0.60684 -0.5807,-0.1126 -1.182941,-0.14009 -1.770824,-0.0113 -0.295192,0.0647 -0.582725,0.16801 -0.85481,0.31553 -0.271694,0.1473 -0.514253,0.33124 -0.725821,0.54532 -0.209911,0.21241 -0.381043,0.44604 -0.519571,0.6887 -0.13753,0.24091 -0.242953,0.49069 -0.323947,0.73982 -0.159428,0.49038 -0.234161,1.00915 -0.260633,1.51907 -0.0265,0.51056 -0.0064,1.04913 0.04431,1.59844 0.10014,1.0855 0.327505,2.29395 0.612831,3.54033 0.283796,1.23969 0.632562,2.54909 0.989975,3.8559 0.355274,1.29899 0.718797,2.5944 1.039843,3.8286 0.319243,1.22727 0.590118,2.37018 0.76678,3.374 0.08763,0.49794 0.149882,0.9495 0.184115,1.35113 0.03436,0.40309 0.03853,0.7338 0.01875,0.99741 -0.0175,0.23641 -0.06182,0.42504 -0.117907,0.57451 -0.05546,0.1478 -0.125873,0.26682 -0.206377,0.36487 -0.08056,0.0981 -0.181468,0.18772 -0.309615,0.26652 -0.128987,0.0793 -0.291198,0.15104 -0.493113,0.20533 -0.407428,0.10955 -0.957866,0.14245 -1.645956,0.0355 -0.682244,-0.10604 -1.466731,-0.34483 -2.320099,-0.74292 -1.70341,-0.79462 -3.616729,-2.19449 -5.439945,-4.28207 -1.818595,-2.08229 -3.532373,-4.83209 -4.846641,-8.30144 -0.15415,-0.40663 -0.263288,-0.76018 -0.335571,-1.06515 -0.0725,-0.30588 -0.105212,-0.55153 -0.112826,-0.74493 -0.0076,-0.19325 0.01034,-0.32086 0.02984,-0.39919 0.01829,-0.0735 0.03898,-0.10806 0.04676,-0.11994 0.0084,-0.0128 0.02348,-0.0328 0.06764,-0.0594 0.04729,-0.0285 0.131802,-0.0662 0.270995,-0.0969 0.139726,-0.0308 0.321652,-0.0517 0.551879,-0.0533 0.22961,-0.002 0.495243,0.0161 0.797906,0.0563 0.609055,0.0808 1.32899,0.2474 2.148545,0.49713 0.818121,0.2493 1.715505,0.57531 2.674396,0.96537 1.925307,0.78318 4.063286,1.81009 6.255292,2.95518 4.415211,2.30646 9.004229,5.06834 12.460385,7.23025 3.51169,2.19665 5.86646,3.77998 5.8647,3.76455 l -0.23813,-2.09035 -0.22593,0.57771 c -2.6131,6.68188 -5.1259,13.10148 -7.44971,19.0269 -6.550413,4.90668 -12.700986,9.50622 -17.832554,13.33068 -1.207711,-3.09194 -2.314689,-5.93125 -3.30827,-8.48617 -1.778597,-4.57354 -11.218201,-16.69822 -12.996798,-21.27175 0,0 3.152005,-1.22578 3.152005,-1.22578 z" + id="path07" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect18" + inkscape:original-d="m 68.017813,142.30706 12.68483,32.61814 19.23388,-14.25455 7.689027,-19.26965 c 0,0 -38.183927,-25.88741 -32.747577,-11.39046 5.43636,14.49695 17.73288,17.474 18.25063,11.5199 0.51775,-5.95411 -8.54285,-24.33417 0.38831,-20.32162 8.931157,4.01255 3.88311,13.20258 13.073137,14.88526 9.19003,1.68268 12.42596,-9.19003 12.42596,-9.19003" + sodipodi:nodetypes="ccccssssc" /> + <path + inkscape:original-d="m 127.99277,120.67055 8.96953,-33.315391 38.80696,24.895021 -43.20019,28.373" + inkscape:path-effect="#path-effect30" + inkscape:connector-curvature="0" + id="path06" + d="m 127.99277,120.67055 c 0,0 5.08319,1.36855 5.08319,1.36855 1.59721,-5.9325 3.73429,-18.47998 5.83762,-30.613873 9.90957,5.46447 18.82874,10.470093 23.72954,13.614003 2.43316,1.56089 5.90085,4.04425 9.9132,7.01328 -15.23626,8.63272 -34.83632,19.32039 -42.67944,24.47159 0,0 2.69219,4.09908 2.69219,4.09908 0,0 2.69219,4.09908 2.69219,4.09908 8.23434,-5.40815 27.21728,-20.28443 41.47556,-30.9989 0.75942,-0.57067 1.51967,-1.14023 2.28076,-1.70868 -0.76625,-0.41471 -1.5318,-0.83071 -2.29665,-1.248 -5.44023,-2.96807 -10.09863,-5.59394 -12.97835,-7.44131 -5.45112,-3.496944 -15.06845,-10.552519 -25.36008,-18.184057 0,0 -2.66857,-1.980527 -2.66857,-1.980527 0,0 -1.29142,3.510586 -1.29142,3.510586 -4.60702,12.49199 -9.76641,26.143548 -11.51293,32.630628 0,0 5.08319,1.36855 5.08319,1.36855 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 114.08085,185.47083 c 0,0 5.25473,-0.31557 5.25473,-0.31557 0.004,0.0618 -0.24936,-1.06508 -0.48746,-4.29848 -0.17602,-2.39046 -0.33182,-6.04104 -0.1402,-10.00105 0.17546,-3.62577 0.63861,-7.38081 1.58789,-10.45491 0.45893,-1.48616 1.00582,-2.72822 1.63179,-3.70363 0.31051,-0.48384 0.63662,-0.89605 0.97661,-1.23944 0.34051,-0.34393 0.70438,-0.62853 1.09854,-0.85056 1.31618,-0.65228 2.81383,-0.94754 4.49916,-0.89638 1.75914,0.0534 3.6473,0.48305 5.58723,1.19545 4.34598,1.59596 8.67209,4.50274 12.07444,7.18818 3.16684,2.49955 5.76424,4.98461 7.40764,6.70213 0.78474,0.82015 1.62327,1.75939 2.45941,2.7658 1.11389,1.34071 2.18044,2.74997 3.01098,4.00044 0.36006,0.54211 0.6687,1.04427 0.90178,1.4721 0.1112,0.20412 0.20499,0.39102 0.27708,0.55385 0.0703,0.15886 0.12041,0.29577 0.14225,0.39583 l 1.3707,-2.69228 c -4.58772,0.0602 -8.98989,1.1085 -13.38646,3.05837 -4.18562,1.85631 -8.06127,4.39394 -11.70833,7.1084 -3.56887,2.65626 -7.78876,6.18026 -10.62091,8.45848 -4.65509,3.74461 -7.25953,5.57228 -10.05277,7.40682 0,0 2.69219,4.09908 2.69219,4.09908 0,0 2.69219,4.09908 2.69219,4.09908 3.09859,-2.03509 6.39427,-4.88171 10.5595,-9.0846 2.96424,-2.99105 6.07365,-6.38037 9.33281,-9.56956 3.05055,-2.98505 6.17612,-5.72006 9.5625,-7.8464 3.52804,-2.2153 7.18494,-3.67087 11.1771,-4.21337 1.07043,-0.14546 2.14901,-0.22293 3.22924,-0.23193 -0.53141,-0.8831 -1.15436,-1.70776 -1.85854,-2.46035 -0.10331,-0.11041 -0.27404,-0.28868 -0.40117,-0.42188 -0.15731,-0.16481 -0.30534,-0.32034 -0.48955,-0.51477 -0.37781,-0.39877 -0.78625,-0.83298 -1.26042,-1.33658 -1.2029,-1.27753 -2.18005,-2.31062 -3.54411,-3.73343 -1.06934,-1.1154 -1.54492,-1.60541 -2.61427,-2.72081 -1.62161,-1.69476 -4.24968,-4.45053 -7.27136,-7.19144 -3.24822,-2.9464 -7.58149,-6.46198 -12.19171,-8.73498 -2.07788,-1.02446 -4.31197,-1.8474 -6.60968,-2.21715 -2.21989,-0.35724 -4.55416,-0.29961 -6.87166,0.4584 -0.9404,0.29547 -1.81978,0.72681 -2.63618,1.27022 -0.80931,0.53868 -1.54596,1.18019 -2.21523,1.89399 -1.33123,1.41979 -2.40945,3.13966 -3.28979,4.96677 -1.79536,3.72616 -2.88347,8.14455 -3.57365,12.05902 -0.75664,4.29145 -1.10507,8.40813 -1.28166,10.95132 -0.24628,3.54688 -0.27909,4.87956 -0.27538,4.94139 0,0 5.25473,-0.31557 5.25473,-0.31557 z" + id="path05" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect38" + inkscape:original-d="m 114.08085,185.47083 c 0,0 -1.75066,-29.15118 8.96953,-33.31539 14.32082,-5.56286 36.52204,21.23916 38.80695,24.89502 -17.91232,1.26239 -28.80013,18.91533 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.89446,204.69126 5.25473,-0.31557 c -0.46009,0.11005 -0.99324,-1.60679 -1.37978,-4.29957 -0.38706,-2.69645 -0.62544,-6.35701 -0.50395,-10.14512 0.12201,-3.80449 0.60439,-7.66013 1.6193,-10.80553 0.50581,-1.56759 1.1323,-2.92236 1.88584,-4.00188 0.37543,-0.53783 0.78071,-1.00496 1.21685,-1.39676 0.43526,-0.391 0.90644,-0.71172 1.41914,-0.95413 1.50701,-0.67204 3.18345,-0.92591 5.00903,-0.79707 1.82931,0.12909 3.7752,0.64061 5.78478,1.46321 4.0273,1.64855 8.15927,4.48238 11.94517,7.67731 2.65659,2.24192 5.121,4.64279 7.23926,6.90084 0.89154,0.95038 1.72102,1.87466 2.47695,2.75014 1.27579,1.47753 2.34097,2.81479 3.13897,3.90019 0.39881,0.54244 0.73012,1.02096 0.98535,1.4192 0.12751,0.19896 0.2357,0.37738 0.32281,0.53199 0.087,0.15437 0.15285,0.28498 0.19308,0.38297 l 1.07205,-2.10568 c -4.71387,0.18963 -9.01723,1.42417 -13.07782,3.31336 -4.05104,1.88474 -7.83037,4.40734 -11.48291,7.12968 -3.65267,2.72245 -7.18413,5.64613 -10.70409,8.32806 -3.54936,2.70435 -6.99814,5.09654 -10.53065,6.8779 l 2.69219,4.09908 2.69219,4.09908 c 3.66064,-2.93132 6.98663,-6.32468 10.08162,-9.61353 3.16014,-3.35807 6.10928,-6.63795 9.24963,-9.69997 3.10833,-3.0308 6.30943,-5.74924 9.78793,-7.82513 3.46992,-2.07077 7.24224,-3.51737 11.48573,-3.95837 0.77811,-0.0809 1.55947,-0.1266 2.3417,-0.13708 -0.36154,-0.69399 -0.78657,-1.353 -1.26965,-1.9686 -0.0981,-0.12497 -0.22291,-0.27913 -0.35034,-0.43474 -0.13022,-0.15902 -0.28131,-0.34172 -0.44383,-0.53664 -0.32584,-0.39079 -0.72412,-0.86253 -1.17686,-1.38947 -0.9083,-1.05717 -2.06657,-2.37253 -3.41611,-3.83368 -0.80048,-0.86668 -1.66984,-1.78638 -2.59673,-2.73647 -2.20014,-2.25519 -4.73024,-4.68754 -7.43974,-6.99273 -3.83793,-3.26524 -8.08861,-6.32128 -12.32098,-8.24585 -2.12098,-0.96447 -4.27765,-1.66369 -6.41213,-1.94938 -2.13968,-0.28639 -4.28748,-0.16101 -6.36178,0.5577 -0.82737,0.27786 -1.59871,0.67338 -2.3156,1.16664 -0.71581,0.49251 -1.37247,1.07907 -1.97497,1.73667 -1.20159,1.31147 -2.19921,2.91787 -3.03576,4.66852 -1.6685,3.49166 -2.76528,7.70455 -3.54223,11.70841 -0.77904,4.01463 -1.25343,7.9133 -1.64542,10.80725 -0.39324,2.90319 -0.70767,4.83028 -1.1677,4.94032 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect42" + inkscape:original-d="m 126.89446,204.69126 c 0,0 -1.75066,-29.15119 8.96953,-33.3154 14.32082,-5.56286 36.52204,21.23916 38.80696,24.89502 -17.91233,1.26239 -28.80013,18.91534 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 85.820753,243.96178 c 0.437894,-0.0263 1.423437,-0.0906 2.463012,-0.16459 1.039575,-0.074 2.135146,-0.12656 2.791713,-0.15098 1.352566,-0.0503 1.539515,-0.11972 1.321426,-4.2963 -0.113386,-2.17143 -0.351562,-5.85857 -0.29285,-9.81183 0.05188,-3.49305 0.33313,-7.14435 1.07166,-10.18482 0.346063,-1.42471 0.767421,-2.6085 1.248861,-3.54581 0.234658,-0.45684 0.481746,-0.85141 0.738104,-1.18331 0.254073,-0.32894 0.531445,-0.61511 0.843177,-0.84843 1.15272,-0.67552 2.531308,-1.05698 4.184884,-1.08648 1.6848,-0.0301 3.5502,0.30892 5.5264,0.96659 4.20119,1.39814 8.50882,4.09801 12.17673,6.94088 2.92976,2.27076 5.48135,4.65219 7.41725,6.69081 0.87216,0.91845 1.69775,1.85039 2.45808,2.76699 1.20608,1.45396 2.23065,2.84899 2.97752,4.02696 0.3568,0.56275 0.64787,1.07255 0.85755,1.50261 0.10316,0.21159 0.18671,0.40416 0.2471,0.57125 0.0596,0.16482 0.0976,0.30815 0.10549,0.41131 l 1.50438,-2.95485 c -4.80795,-0.0458 -9.30564,0.9427 -13.66006,2.68672 -4.42431,1.77201 -8.51005,4.25278 -12.16729,6.77646 -3.89002,2.68432 -8.165059,6.05823 -10.886198,8.21573 -5.182188,4.10879 -8.606952,6.79229 -9.042837,8.52463 -0.453117,1.80084 2.203726,3.35536 2.692188,4.09908 0.448698,0.68318 0.722505,3.96737 2.692188,4.09908 2.27745,0.15228 6.543017,-2.83392 11.569439,-7.96679 2.84296,-2.90317 5.85082,-6.39976 9.06752,-9.81229 2.80118,-2.97172 5.79165,-5.88272 9.10354,-8.17835 3.22792,-2.23744 6.79054,-3.91398 10.90349,-4.58503 1.28662,-0.20992 2.58817,-0.31494 3.8918,-0.31401 -0.71784,-0.94775 -1.51665,-1.83135 -2.38742,-2.64084 -0.13542,-0.12589 -0.27975,-0.25788 -0.43793,-0.4064 -0.16147,-0.15162 -0.33028,-0.313 -0.51954,-0.49737 -0.38272,-0.37284 -0.81406,-0.80569 -1.30465,-1.30606 -0.98105,-1.00062 -2.27896,-2.35444 -3.57755,-3.70692 0.3484,0.36286 -2.96401,-3.08248 -2.61561,-2.71962 -1.95707,-2.03019 -4.48668,-4.64199 -7.26175,-7.20276 -3.44684,-3.18065 -7.67543,-6.66402 -12.08941,-8.98227 -2.10051,-1.10321 -4.34815,-1.99975 -6.67052,-2.44602 -2.299661,-0.4419 -4.735847,-0.45356 -7.185932,0.2683 -1.028895,0.28522 -1.994022,0.7194 -2.89155,1.27235 -0.897192,0.55274 -1.713561,1.21584 -2.453721,1.95012 -1.488887,1.47705 -2.693907,3.26584 -3.672721,5.12459 -2.043311,3.88022 -3.302985,8.4558 -4.089876,12.32913 -0.918141,4.51938 -1.315954,8.68783 -1.434313,11.14053 -0.227993,4.72457 0.308035,4.98917 1.533501,4.94358 0.656567,-0.0244 1.749786,-0.11505 2.79031,-0.1738 1.040525,-0.0588 2.026521,-0.11547 2.464415,-0.14177 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect46" + inkscape:original-d="m 85.820753,243.96178 c 0,0 -1.75066,-29.15119 8.96953,-33.3154 14.320817,-5.56286 36.522037,21.23916 38.806947,24.89502 -17.91232,1.2624 -28.80012,18.91534 -43.200187,28.373" + sodipodi:nodetypes="cscc" /> + <path + sodipodi:nodetypes="cscc" + inkscape:original-d="m 68.064743,96.056049 c 0,0 -1.75066,-29.15118 8.96953,-33.31539 14.32082,-5.56286 36.522037,21.23916 38.806947,24.89502 -17.912317,1.26239 -28.800117,18.915331 -43.200177,28.373001" + inkscape:path-effect="#path-effect34" + inkscape:connector-curvature="0" + id="path02" + d="m 68.064743,96.056049 c 0.875788,-0.05259 2.183115,-0.140114 3.273817,-0.223678 1.090702,-0.08356 1.968144,-0.110088 1.980908,-0.09189 0.0555,0.07911 -0.114032,-1.637155 -0.257037,-4.298205 -0.143833,-2.676458 -0.258742,-6.261015 -0.107845,-9.970951 0.152189,-3.741717 0.568387,-7.435791 1.420352,-10.446725 0.42261,-1.493546 0.933657,-2.751095 1.528965,-3.748399 0.29543,-0.494926 0.610293,-0.923545 0.944293,-1.285209 0.332613,-0.360163 0.694865,-0.665674 1.095864,-0.908209 1.306815,-0.682058 2.821506,-1.019907 4.562719,-0.98703 1.745102,0.03295 3.651377,0.438225 5.662913,1.172353 4.033099,1.471916 8.227486,4.166436 12.077598,7.293754 2.69489,2.188974 5.18693,4.561487 7.30782,6.819932 0.83613,1.053436 1.58508,2.048295 2.24114,2.960803 1.20285,1.673043 2.11379,3.096842 2.73601,4.198276 0.34072,0.603121 0.59976,1.118008 0.77721,1.53448 0.093,0.218371 0.16412,0.410821 0.21158,0.572708 0.0488,0.166363 0.0737,0.304639 0.0674,0.395595 l 2.06599,-4.05796 c -5.71047,-0.106191 -10.48124,1.321684 -13.96707,2.726897 -5.348192,2.155969 -10.242535,5.406775 -12.350087,6.821354 -5.205882,3.494165 -7.512085,5.392387 -10.836018,8.308227 -1.454639,1.27605 -5.603871,5.03041 -9.516228,7.59996 a 6.6597862,6.6597862 90 0 0 7.311992,11.1331 c 5.066463,-3.32755 9.684691,-7.58043 11.096039,-8.89147 4.348957,-4.03985 4.37761,-4.52864 9.117698,-9.7198 1.653159,-1.81048 4.990944,-5.397069 8.920734,-8.133456 2.47044,-1.720221 6.00148,-3.721385 10.59646,-4.544837 1.54486,-0.276849 3.11268,-0.405103 4.68199,-0.383005 -0.59795,-1.398639 -1.49019,-2.652054 -2.61598,-3.674956 -0.12317,-0.111912 -0.32548,-0.289084 -0.47602,-0.422112 -0.17253,-0.152476 -0.34689,-0.307826 -0.55505,-0.495913 -0.39916,-0.360674 -0.83379,-0.761528 -1.38499,-1.274199 -0.89204,-0.829682 -2.34755,-2.195947 -3.81906,-3.535597 -0.8491,-0.773011 -1.80322,-1.62901 -2.83255,-2.525806 -2.19853,-2.2559 -4.70301,-4.718268 -7.37117,-7.073639 -3.77157,-3.329419 -7.970995,-6.536228 -12.188551,-8.629405 -2.119216,-1.051768 -4.316258,-1.859904 -6.534,-2.240245 -2.227621,-0.382036 -4.530703,-0.341171 -6.808103,0.367747 -0.939094,0.276923 -1.819368,0.689325 -2.63887,1.212571 -0.81761,0.522038 -1.5654,1.148355 -2.247526,1.84822 -1.358668,1.393999 -2.473993,3.096938 -3.39262,4.922004 -1.830263,3.636246 -2.995036,7.987945 -3.741182,12.067209 -0.750149,4.101154 -1.099786,8.054014 -1.249308,10.981408 -0.149716,2.931183 -0.100353,4.86271 -0.04496,4.94167 0.01276,0.0182 0.886414,-0.06929 1.97865,-0.128403 1.092236,-0.05912 2.400287,-0.134572 3.276075,-0.187167 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 51.477193,210.91501 c 0,0 0,5.26419 0,5.26419 l 5.254746,-5.57942 c 0.0037,0.0618 -0.249265,-1.06483 -0.487161,-4.29772 -0.175876,-2.39008 -0.331477,-6.04014 -0.139705,-9.99983 0.175585,-3.62545 0.638811,-7.38047 1.588086,-10.45501 0.45893,-1.48639 1.005827,-2.72886 1.631871,-3.70477 0.310545,-0.4841 0.636702,-0.89658 0.976744,-1.24025 0.34057,-0.3442 0.704474,-0.62906 1.098616,-0.85134 1.373845,-0.67502 2.804537,-0.99484 4.311123,-1.00785 1.579342,-0.0136 3.227847,0.31109 4.915184,0.90643 1.794653,0.6332 3.580299,1.55388 5.29575,2.6222 1.890606,1.17739 3.696084,2.53441 5.320026,3.87161 2.822266,2.32395 5.368107,4.81622 7.012632,6.52544 0.804009,0.83563 1.668111,1.78199 2.616652,2.85149 1.247579,1.40667 2.585135,2.97045 3.918376,4.4808 0.443258,0.50215 0.89919,1.01272 1.356144,1.50992 -7.095213,2.85833 -13.917148,6.5673 -21.018144,10.90114 -6.878501,4.19805 -19.791949,12.70429 -21.843826,14.10814 0,0 2.769176,4.04746 2.769176,4.04746 0,0 2.769176,4.04746 2.769176,4.04746 5.96659,-4.08219 10.959336,-8.67048 20.409999,-16.4064 6.935067,-5.67676 13.574629,-10.63548 20.73793,-14.40394 1.110922,-0.58444 2.236372,-1.14083 3.375272,-1.66866 -1.05745,-0.31036 -2.0695,-0.75844 -3.01011,-1.3327 -1.096906,-0.66969 -2.34255,-1.66053 -3.596352,-2.75686 -1.438899,-1.25818 -2.979997,-2.73751 -4.285061,-4.02631 -0.986687,-0.97439 -1.951519,-1.95222 -2.731924,-2.76332 -1.498423,-1.55736 -4.269374,-4.52345 -6.827812,-6.97192 -1.560321,-1.49325 -3.330263,-3.08367 -5.218207,-4.53436 -1.707871,-1.31232 -3.583074,-2.56569 -5.573378,-3.55098 -1.867768,-0.92463 -3.901999,-1.64605 -6.061176,-1.93443 -2.09038,-0.27918 -4.294587,-0.15133 -6.548788,0.58316 -0.940142,0.29592 -1.819243,0.72763 -2.635381,1.2713 -0.809035,0.53895 -1.545457,1.18065 -2.214539,1.89457 -1.330867,1.42007 -2.408878,3.14002 -3.289119,4.96716 -1.795156,3.72626 -2.883339,8.14429 -3.573655,12.0584 -0.75679,4.29102 -1.105457,8.40709 -1.282204,10.94987 -0.246502,3.54632 -0.279416,4.87873 -0.275707,4.94056 l 5.254746,-5.57942 c 0,0 0,5.26419 0,5.26419 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect26" + inkscape:original-d="m 51.477193,210.91501 c 0,0 -1.74845,-29.14551 8.96953,-33.31539 14.30283,-5.5646 30.41969,18.3716 38.80695,24.89502 -15.5647,6.93029 -28.89731,18.58732 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/PowerStroke_multi_px_1_0_2.svg b/testfiles/lpe_tests/PowerStroke_multi_px_1_0_2.svg new file mode 100644 index 0000000..ac342a3 --- /dev/null +++ b/testfiles/lpe_tests/PowerStroke_multi_px_1_0_2.svg @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250.00001" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="powerstroke" + id="path-effect46" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CentripetalCatmullRom" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect42" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="SpiroInterpolator" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect38" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CubicBezierSmooth" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + end_linecap_type="round" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="1" + interpolator_type="CubicBezierFit" + sort_points="true" + offset_points="0,5.2641926 | 2.8291568,6.6597862 | 1.6759239,1.0180989" + is_visible="true" + id="path-effect34" + effect="powerstroke" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + end_linecap_type="zerowidth" + miter_limit="4" + linejoin_type="extrp_arc" + start_linecap_type="zerowidth" + interpolator_beta="0.2" + interpolator_type="CubicBezierJohan" + sort_points="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + is_visible="true" + id="path-effect30" + effect="powerstroke" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect26" + is_visible="true" + offset_points="0,5.2641926 | 3,4.9041115 | 1.6759239,1.0180989" + sort_points="true" + interpolator_type="CubicBezierSmooth" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" + lpeversion="1" + scale_width="1" /> + <inkscape:path-effect + effect="powerstroke" + id="path-effect18" + is_visible="true" + offset_points="0,-3.3819627 | 0.70107238,1.0212489 | 7.7147489,1.8587929" + sort_points="true" + interpolator_type="CubicBezierJohan" + interpolator_beta="0.2" + start_linecap_type="zerowidth" + linejoin_type="extrp_arc" + miter_limit="4" + end_linecap_type="zerowidth" + lpeversion="1" + scale_width="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 68.017813,142.30706 c 0,0 3.152005,-1.22578 3.152005,-1.22578 1.778597,4.57354 3.010573,19.89007 4.78917,24.4636 1.127173,2.89845 2.39402,6.16533 3.782846,9.75397 0,0 0.486472,1.25728 0.486472,1.25728 0,0 1.088162,-0.80269 1.088162,-0.80269 5.358812,-3.95168 11.938776,-8.785 19.291762,-14.17643 0,0 0.2533,-0.18572 0.2533,-0.18572 0,0 0.12279,-0.30254 0.12279,-0.30254 2.42641,-5.97823 5.06433,-12.46513 7.81364,-19.21993 l -0.22794,0.56002 -0.23612,-2.07266 c -0.002,-0.0154 -2.3643,-1.63297 -5.89788,-3.87223 -3.468702,-2.19815 -8.10978,-5.02144 -12.601895,-7.39615 -2.229441,-1.17857 -4.443276,-2.25787 -6.469981,-3.096 -1.010916,-0.41805 -1.984783,-0.78007 -2.897957,-1.06517 -0.908461,-0.28364 -1.777771,-0.49777 -2.577425,-0.61117 -0.400831,-0.0568 -0.793854,-0.0898 -1.172771,-0.0913 -0.377838,-0.002 -0.754108,0.0281 -1.117362,0.10247 -0.363511,0.0745 -0.726552,0.19638 -1.066791,0.38646 -0.343804,0.19207 -0.65443,0.44848 -0.908763,0.77585 -0.253872,0.32678 -0.43025,0.69666 -0.538293,1.0915 -0.106923,0.39075 -0.145303,0.79911 -0.133923,1.21273 0.01137,0.41324 0.07274,0.84502 0.174677,1.29167 0.102073,0.44726 0.247444,0.92082 0.43315,1.42045 1.402462,3.77526 3.263265,6.83485 5.297992,9.20492 2.03174,2.36659 4.245237,4.05484 6.35501,5.06975 1.058161,0.50904 2.105931,0.85613 3.104123,1.02673 0.997501,0.17049 1.979472,0.17021 2.880301,-0.0515 0.454103,-0.11175 0.891306,-0.28082 1.296757,-0.51543 0.407511,-0.23579 0.776458,-0.53416 1.091944,-0.89562 0.316437,-0.36256 0.568331,-0.77629 0.752263,-1.2311 0.183921,-0.45477 0.296086,-0.94092 0.343216,-1.44768 0.04494,-0.48194 0.03897,-0.99256 0.0019,-1.50963 -0.0374,-0.52131 -0.108124,-1.0715 -0.200972,-1.63635 -0.186057,-1.13189 -0.469799,-2.37459 -0.784948,-3.63431 -0.316118,-1.26358 -0.679304,-2.60397 -1.015477,-3.87745 -0.344215,-1.30396 -0.666385,-2.56071 -0.922765,-3.73186 -0.259883,-1.18714 -0.440858,-2.23669 -0.511146,-3.11301 -0.03524,-0.43935 -0.04072,-0.81302 -0.01997,-1.12284 0.02112,-0.31527 0.06725,-0.52924 0.114595,-0.6626 0.02283,-0.0643 0.0428,-0.1008 0.05372,-0.11677 0.0097,-0.0142 0.01213,-0.0109 -0.0017,0.005 -0.01394,0.0163 -0.03467,0.0336 -0.05772,0.0478 -0.0221,0.0136 -0.03531,0.0173 -0.02635,0.0167 0.02343,-0.002 0.141544,-0.0179 0.407545,0.0379 0.265823,0.0558 0.628093,0.17322 1.103853,0.39004 0.980939,0.44683 1.730217,0.9479 2.31998,1.46764 0.599658,0.52846 1.060218,1.09909 1.434762,1.69596 0.384409,0.61258 0.687399,1.26767 0.954803,1.95834 0.27601,0.71291 0.505291,1.43915 0.754405,2.2022 0.250874,0.76845 0.520941,1.57098 0.863997,2.34745 0.355414,0.80444 0.796882,1.5996 1.396732,2.33307 0.62394,0.76293 1.3892,1.42184 2.33682,1.95135 0.97436,0.54444 2.09789,0.92775 3.38061,1.16659 1.35805,0.25279 2.6097,0.26905 3.75441,0.11148 1.19785,-0.16488 2.26397,-0.51803 3.20075,-0.97409 2.01652,-0.9817 3.48658,-2.46496 4.49223,-3.74762 1.00438,-1.28103 1.69882,-2.55891 2.12772,-3.45033 0.0623,-0.12944 0.098,-0.31724 0.10731,-0.53316 0.0258,-0.60045 -0.14467,-1.2738 -0.39564,-1.74747 -0.24836,-0.46876 -0.53367,-0.63559 -0.53367,-0.63559 0,0 -0.32781,-0.0107 -0.80027,0.16029 -0.46346,0.16775 -1.05653,0.48927 -1.42745,0.80178 -0.14136,0.11911 -0.24924,0.23626 -0.30027,0.34232 -0.35765,0.74333 -0.91714,1.77299 -1.69973,2.7811 -0.79282,1.02129 -1.84671,2.06243 -3.18906,2.72828 -0.61571,0.30541 -1.30901,0.54063 -2.0915,0.65449 -0.7466,0.10863 -1.60513,0.11134 -2.59053,-0.065 -0.97427,-0.1744 -1.71388,-0.43719 -2.28732,-0.74968 -0.54726,-0.29823 -0.9711,-0.65651 -1.3228,-1.07526 -0.34691,-0.41304 -0.64106,-0.90547 -0.91594,-1.50655 -0.27204,-0.59486 -0.50326,-1.24471 -0.76307,-2.00791 -0.24229,-0.71173 -0.51861,-1.55077 -0.84839,-2.37157 -0.3287,-0.81815 -0.73536,-1.68474 -1.285063,-2.53657 -0.54206,-0.83998 -1.221552,-1.66343 -2.103521,-2.42277 -0.866189,-0.74576 -1.908755,-1.41349 -3.178069,-1.97761 -0.636554,-0.28299 -1.25064,-0.49311 -1.837108,-0.60684 -0.5807,-0.1126 -1.182941,-0.14009 -1.770824,-0.0113 -0.295192,0.0647 -0.582725,0.16801 -0.85481,0.31553 -0.271694,0.1473 -0.514253,0.33124 -0.725821,0.54532 -0.209911,0.21241 -0.381043,0.44604 -0.519571,0.6887 -0.13753,0.24091 -0.242953,0.49069 -0.323947,0.73982 -0.159428,0.49038 -0.234161,1.00915 -0.260633,1.51907 -0.0265,0.51056 -0.0064,1.04913 0.04431,1.59844 0.10014,1.0855 0.327505,2.29395 0.612831,3.54033 0.283796,1.23969 0.632562,2.54909 0.989975,3.8559 0.355274,1.29899 0.718797,2.5944 1.039843,3.8286 0.319243,1.22727 0.590118,2.37018 0.76678,3.374 0.08763,0.49794 0.149882,0.9495 0.184115,1.35113 0.03436,0.40309 0.03853,0.7338 0.01875,0.99741 -0.0175,0.23641 -0.06182,0.42504 -0.117907,0.57451 -0.05546,0.1478 -0.125873,0.26682 -0.206377,0.36487 -0.08056,0.0981 -0.181468,0.18772 -0.309615,0.26652 -0.128987,0.0793 -0.291198,0.15104 -0.493113,0.20533 -0.407428,0.10955 -0.957866,0.14245 -1.645956,0.0355 -0.682244,-0.10604 -1.466731,-0.34483 -2.320099,-0.74292 -1.70341,-0.79462 -3.616729,-2.19449 -5.439945,-4.28207 -1.818595,-2.08229 -3.532373,-4.83209 -4.846641,-8.30144 -0.15415,-0.40663 -0.263288,-0.76018 -0.335571,-1.06515 -0.0725,-0.30588 -0.105212,-0.55153 -0.112826,-0.74493 -0.0076,-0.19325 0.01034,-0.32086 0.02984,-0.39919 0.01829,-0.0735 0.03898,-0.10806 0.04676,-0.11994 0.0084,-0.0128 0.02348,-0.0328 0.06764,-0.0594 0.04729,-0.0285 0.131802,-0.0662 0.270995,-0.0969 0.139726,-0.0308 0.321652,-0.0517 0.551879,-0.0533 0.22961,-0.002 0.495243,0.0161 0.797906,0.0563 0.609055,0.0808 1.32899,0.2474 2.148545,0.49713 0.818121,0.2493 1.715505,0.57531 2.674396,0.96537 1.925307,0.78318 4.063286,1.81009 6.255292,2.95518 4.415211,2.30646 9.004229,5.06834 12.460385,7.23025 3.51169,2.19665 5.86646,3.77998 5.8647,3.76455 l -0.23813,-2.09035 -0.22593,0.57771 c -2.6131,6.68188 -5.1259,13.10148 -7.44971,19.0269 -6.550413,4.90668 -12.700986,9.50622 -17.832554,13.33068 -1.207711,-3.09194 -2.314689,-5.93125 -3.30827,-8.48617 -1.778597,-4.57354 -11.218201,-16.69822 -12.996798,-21.27175 0,0 3.152005,-1.22578 3.152005,-1.22578 z" + id="path07" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect18" + inkscape:original-d="m 68.017813,142.30706 12.68483,32.61814 19.23388,-14.25455 7.689027,-19.26965 c 0,0 -38.183927,-25.88741 -32.747577,-11.39046 5.43636,14.49695 17.73288,17.474 18.25063,11.5199 0.51775,-5.95411 -8.54285,-24.33417 0.38831,-20.32162 8.931157,4.01255 3.88311,13.20258 13.073137,14.88526 9.19003,1.68268 12.42596,-9.19003 12.42596,-9.19003" + sodipodi:nodetypes="ccccssssc" /> + <path + inkscape:original-d="m 127.99277,120.67055 8.96953,-33.315391 38.80696,24.895021 -43.20019,28.373" + inkscape:path-effect="#path-effect30" + inkscape:connector-curvature="0" + id="path06" + d="m 127.99277,120.67055 c 0,0 5.08319,1.36855 5.08319,1.36855 1.59721,-5.9325 3.73429,-18.47998 5.83762,-30.613873 9.90957,5.46447 18.82874,10.470093 23.72954,13.614003 2.43316,1.56089 5.90085,4.04425 9.9132,7.01328 -15.23626,8.63272 -34.83632,19.32039 -42.67944,24.47159 0,0 2.69219,4.09908 2.69219,4.09908 0,0 2.69219,4.09908 2.69219,4.09908 8.23434,-5.40815 27.21728,-20.28443 41.47556,-30.9989 0.75942,-0.57067 1.51967,-1.14023 2.28076,-1.70868 -0.76625,-0.41471 -1.5318,-0.83071 -2.29665,-1.248 -5.44023,-2.96807 -10.09863,-5.59394 -12.97835,-7.44131 -5.45112,-3.496944 -15.06845,-10.552519 -25.36008,-18.184057 0,0 -2.66857,-1.980527 -2.66857,-1.980527 0,0 -1.29142,3.510586 -1.29142,3.510586 -4.60702,12.49199 -9.76641,26.143548 -11.51293,32.630628 0,0 5.08319,1.36855 5.08319,1.36855 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 114.08085,185.47083 c 0,0 5.25473,-0.31557 5.25473,-0.31557 0.004,0.0618 -0.24936,-1.06508 -0.48746,-4.29848 -0.17602,-2.39046 -0.33182,-6.04104 -0.1402,-10.00105 0.17546,-3.62577 0.63861,-7.38081 1.58789,-10.45491 0.45893,-1.48616 1.00582,-2.72822 1.63179,-3.70363 0.31051,-0.48384 0.63662,-0.89605 0.97661,-1.23944 0.34051,-0.34393 0.70438,-0.62853 1.09854,-0.85056 1.31618,-0.65228 2.81383,-0.94754 4.49916,-0.89638 1.75914,0.0534 3.6473,0.48305 5.58723,1.19545 4.34598,1.59596 8.67209,4.50274 12.07444,7.18818 3.16684,2.49955 5.76424,4.98461 7.40764,6.70213 0.78474,0.82015 1.62327,1.75939 2.45941,2.7658 1.11389,1.34071 2.18044,2.74997 3.01098,4.00044 0.36006,0.54211 0.6687,1.04427 0.90178,1.4721 0.1112,0.20412 0.20499,0.39102 0.27708,0.55385 0.0703,0.15886 0.12041,0.29577 0.14225,0.39583 l 1.3707,-2.69228 c -4.58772,0.0602 -8.98989,1.1085 -13.38646,3.05837 -4.18562,1.85631 -8.06127,4.39394 -11.70833,7.1084 -3.56887,2.65626 -7.78876,6.18026 -10.62091,8.45848 -4.65509,3.74461 -7.25953,5.57228 -10.05277,7.40682 0,0 2.69219,4.09908 2.69219,4.09908 0,0 2.69219,4.09908 2.69219,4.09908 3.09859,-2.03509 6.39427,-4.88171 10.5595,-9.0846 2.96424,-2.99105 6.07365,-6.38037 9.33281,-9.56956 3.05055,-2.98505 6.17612,-5.72006 9.5625,-7.8464 3.52804,-2.2153 7.18494,-3.67087 11.1771,-4.21337 1.07043,-0.14546 2.14901,-0.22293 3.22924,-0.23193 -0.53141,-0.8831 -1.15436,-1.70776 -1.85854,-2.46035 -0.10331,-0.11041 -0.27404,-0.28868 -0.40117,-0.42188 -0.15731,-0.16481 -0.30534,-0.32034 -0.48955,-0.51477 -0.37781,-0.39877 -0.78625,-0.83298 -1.26042,-1.33658 -1.2029,-1.27753 -2.18005,-2.31062 -3.54411,-3.73343 -1.06934,-1.1154 -1.54492,-1.60541 -2.61427,-2.72081 -1.62161,-1.69476 -4.24968,-4.45053 -7.27136,-7.19144 -3.24822,-2.9464 -7.58149,-6.46198 -12.19171,-8.73498 -2.07788,-1.02446 -4.31197,-1.8474 -6.60968,-2.21715 -2.21989,-0.35724 -4.55416,-0.29961 -6.87166,0.4584 -0.9404,0.29547 -1.81978,0.72681 -2.63618,1.27022 -0.80931,0.53868 -1.54596,1.18019 -2.21523,1.89399 -1.33123,1.41979 -2.40945,3.13966 -3.28979,4.96677 -1.79536,3.72616 -2.88347,8.14455 -3.57365,12.05902 -0.75664,4.29145 -1.10507,8.40813 -1.28166,10.95132 -0.24628,3.54688 -0.27909,4.87956 -0.27538,4.94139 0,0 5.25473,-0.31557 5.25473,-0.31557 z" + id="path05" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect38" + inkscape:original-d="m 114.08085,185.47083 c 0,0 -1.75066,-29.15118 8.96953,-33.31539 14.32082,-5.56286 36.52204,21.23916 38.80695,24.89502 -17.91232,1.26239 -28.80013,18.91533 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.89446,204.69126 5.25473,-0.31557 c -0.46009,0.11005 -0.99324,-1.60679 -1.37978,-4.29957 -0.38706,-2.69645 -0.62544,-6.35701 -0.50395,-10.14512 0.12201,-3.80449 0.60439,-7.66013 1.6193,-10.80553 0.50581,-1.56759 1.1323,-2.92236 1.88584,-4.00188 0.37543,-0.53783 0.78071,-1.00496 1.21685,-1.39676 0.43526,-0.391 0.90644,-0.71172 1.41914,-0.95413 1.50701,-0.67204 3.18345,-0.92591 5.00903,-0.79707 1.82931,0.12909 3.7752,0.64061 5.78478,1.46321 4.0273,1.64855 8.15927,4.48238 11.94517,7.67731 2.65659,2.24192 5.121,4.64279 7.23926,6.90084 0.89154,0.95038 1.72102,1.87466 2.47695,2.75014 1.27579,1.47753 2.34097,2.81479 3.13897,3.90019 0.39881,0.54244 0.73012,1.02096 0.98535,1.4192 0.12751,0.19896 0.2357,0.37738 0.32281,0.53199 0.087,0.15437 0.15285,0.28498 0.19308,0.38297 l 1.07205,-2.10568 c -4.71387,0.18963 -9.01723,1.42417 -13.07782,3.31336 -4.05104,1.88474 -7.83037,4.40734 -11.48291,7.12968 -3.65267,2.72245 -7.18413,5.64613 -10.70409,8.32806 -3.54936,2.70435 -6.99814,5.09654 -10.53065,6.8779 l 2.69219,4.09908 2.69219,4.09908 c 3.66064,-2.93132 6.98663,-6.32468 10.08162,-9.61353 3.16014,-3.35807 6.10928,-6.63795 9.24963,-9.69997 3.10833,-3.0308 6.30943,-5.74924 9.78793,-7.82513 3.46992,-2.07077 7.24224,-3.51737 11.48573,-3.95837 0.77811,-0.0809 1.55947,-0.1266 2.3417,-0.13708 -0.36154,-0.69399 -0.78657,-1.353 -1.26965,-1.9686 -0.0981,-0.12497 -0.22291,-0.27913 -0.35034,-0.43474 -0.13022,-0.15902 -0.28131,-0.34172 -0.44383,-0.53664 -0.32584,-0.39079 -0.72412,-0.86253 -1.17686,-1.38947 -0.9083,-1.05717 -2.06657,-2.37253 -3.41611,-3.83368 -0.80048,-0.86668 -1.66984,-1.78638 -2.59673,-2.73647 -2.20014,-2.25519 -4.73024,-4.68754 -7.43974,-6.99273 -3.83793,-3.26524 -8.08861,-6.32128 -12.32098,-8.24585 -2.12098,-0.96447 -4.27765,-1.66369 -6.41213,-1.94938 -2.13968,-0.28639 -4.28748,-0.16101 -6.36178,0.5577 -0.82737,0.27786 -1.59871,0.67338 -2.3156,1.16664 -0.71581,0.49251 -1.37247,1.07907 -1.97497,1.73667 -1.20159,1.31147 -2.19921,2.91787 -3.03576,4.66852 -1.6685,3.49166 -2.76528,7.70455 -3.54223,11.70841 -0.77904,4.01463 -1.25343,7.9133 -1.64542,10.80725 -0.39324,2.90319 -0.70767,4.83028 -1.1677,4.94032 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect42" + inkscape:original-d="m 126.89446,204.69126 c 0,0 -1.75066,-29.15119 8.96953,-33.3154 14.32082,-5.56286 36.52204,21.23916 38.80696,24.89502 -17.91233,1.26239 -28.80013,18.91534 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 85.820753,243.96178 c 0.437894,-0.0263 1.423437,-0.0906 2.463012,-0.16459 1.039575,-0.074 2.135146,-0.12656 2.791713,-0.15098 1.352566,-0.0503 1.539515,-0.11972 1.321426,-4.2963 -0.113386,-2.17143 -0.351562,-5.85857 -0.29285,-9.81183 0.05188,-3.49305 0.33313,-7.14435 1.07166,-10.18482 0.346063,-1.42471 0.767421,-2.6085 1.248861,-3.54581 0.234658,-0.45684 0.481746,-0.85141 0.738104,-1.18331 0.254073,-0.32894 0.531445,-0.61511 0.843177,-0.84843 1.15272,-0.67552 2.531308,-1.05698 4.184884,-1.08648 1.6848,-0.0301 3.5502,0.30892 5.5264,0.96659 4.20119,1.39814 8.50882,4.09801 12.17673,6.94088 2.92976,2.27076 5.48135,4.65219 7.41725,6.69081 0.87216,0.91845 1.69775,1.85039 2.45808,2.76699 1.20608,1.45396 2.23065,2.84899 2.97752,4.02696 0.3568,0.56275 0.64787,1.07255 0.85755,1.50261 0.10316,0.21159 0.18671,0.40416 0.2471,0.57125 0.0596,0.16482 0.0976,0.30815 0.10549,0.41131 l 1.50438,-2.95485 c -4.80795,-0.0458 -9.30564,0.9427 -13.66006,2.68672 -4.42431,1.77201 -8.51005,4.25278 -12.16729,6.77646 -3.89002,2.68432 -8.165059,6.05823 -10.886198,8.21573 -5.182188,4.10879 -8.606952,6.79229 -9.042837,8.52463 -0.453117,1.80084 2.203726,3.35536 2.692188,4.09908 0.448698,0.68318 0.722505,3.96737 2.692188,4.09908 2.27745,0.15228 6.543017,-2.83392 11.569439,-7.96679 2.84296,-2.90317 5.85082,-6.39976 9.06752,-9.81229 2.80118,-2.97172 5.79165,-5.88272 9.10354,-8.17835 3.22792,-2.23744 6.79054,-3.91398 10.90349,-4.58503 1.28662,-0.20992 2.58817,-0.31494 3.8918,-0.31401 -0.71784,-0.94775 -1.51665,-1.83135 -2.38742,-2.64084 -0.13542,-0.12589 -0.27975,-0.25788 -0.43793,-0.4064 -0.16147,-0.15162 -0.33028,-0.313 -0.51954,-0.49737 -0.38272,-0.37284 -0.81406,-0.80569 -1.30465,-1.30606 -0.98105,-1.00062 -2.27896,-2.35444 -3.57755,-3.70692 0.3484,0.36286 -2.96401,-3.08248 -2.61561,-2.71962 -1.95707,-2.03019 -4.48668,-4.64199 -7.26175,-7.20276 -3.44684,-3.18065 -7.67543,-6.66402 -12.08941,-8.98227 -2.10051,-1.10321 -4.34815,-1.99975 -6.67052,-2.44602 -2.299661,-0.4419 -4.735847,-0.45356 -7.185932,0.2683 -1.028895,0.28522 -1.994022,0.7194 -2.89155,1.27235 -0.897192,0.55274 -1.713561,1.21584 -2.453721,1.95012 -1.488887,1.47705 -2.693907,3.26584 -3.672721,5.12459 -2.043311,3.88022 -3.302985,8.4558 -4.089876,12.32913 -0.918141,4.51938 -1.315954,8.68783 -1.434313,11.14053 -0.227993,4.72457 0.308035,4.98917 1.533501,4.94358 0.656567,-0.0244 1.749786,-0.11505 2.79031,-0.1738 1.040525,-0.0588 2.026521,-0.11547 2.464415,-0.14177 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect46" + inkscape:original-d="m 85.820753,243.96178 c 0,0 -1.75066,-29.15119 8.96953,-33.3154 14.320817,-5.56286 36.522037,21.23916 38.806947,24.89502 -17.91232,1.2624 -28.80012,18.91534 -43.200187,28.373" + sodipodi:nodetypes="cscc" /> + <path + sodipodi:nodetypes="cscc" + inkscape:original-d="m 68.064743,96.056049 c 0,0 -1.75066,-29.15118 8.96953,-33.31539 14.32082,-5.56286 36.522037,21.23916 38.806947,24.89502 -17.912317,1.26239 -28.800117,18.915331 -43.200177,28.373001" + inkscape:path-effect="#path-effect34" + inkscape:connector-curvature="0" + id="path02" + d="m 68.064743,96.056049 c 0.875788,-0.05259 2.183115,-0.140114 3.273817,-0.223678 1.090702,-0.08356 1.968144,-0.110088 1.980908,-0.09189 0.0555,0.07911 -0.114032,-1.637155 -0.257037,-4.298205 -0.143833,-2.676458 -0.258742,-6.261015 -0.107845,-9.970951 0.152189,-3.741717 0.568387,-7.435791 1.420352,-10.446725 0.42261,-1.493546 0.933657,-2.751095 1.528965,-3.748399 0.29543,-0.494926 0.610293,-0.923545 0.944293,-1.285209 0.332613,-0.360163 0.694865,-0.665674 1.095864,-0.908209 1.306815,-0.682058 2.821506,-1.019907 4.562719,-0.98703 1.745102,0.03295 3.651377,0.438225 5.662913,1.172353 4.033099,1.471916 8.227486,4.166436 12.077598,7.293754 2.69489,2.188974 5.18693,4.561487 7.30782,6.819932 0.83613,1.053436 1.58508,2.048295 2.24114,2.960803 1.20285,1.673043 2.11379,3.096842 2.73601,4.198276 0.34072,0.603121 0.59976,1.118008 0.77721,1.53448 0.093,0.218371 0.16412,0.410821 0.21158,0.572708 0.0488,0.166363 0.0737,0.304639 0.0674,0.395595 l 2.06599,-4.05796 c -5.71047,-0.106191 -10.48124,1.321684 -13.96707,2.726897 -5.348192,2.155969 -10.242535,5.406775 -12.350087,6.821354 -5.205882,3.494165 -7.512085,5.392387 -10.836018,8.308227 -1.454639,1.27605 -5.603871,5.03041 -9.516228,7.59996 a 6.6597862,6.6597862 90 0 0 7.311992,11.1331 c 5.066463,-3.32755 9.684691,-7.58043 11.096039,-8.89147 4.348957,-4.03985 4.37761,-4.52864 9.117698,-9.7198 1.653159,-1.81048 4.990944,-5.397069 8.920734,-8.133456 2.47044,-1.720221 6.00148,-3.721385 10.59646,-4.544837 1.54486,-0.276849 3.11268,-0.405103 4.68199,-0.383005 -0.59795,-1.398639 -1.49019,-2.652054 -2.61598,-3.674956 -0.12317,-0.111912 -0.32548,-0.289084 -0.47602,-0.422112 -0.17253,-0.152476 -0.34689,-0.307826 -0.55505,-0.495913 -0.39916,-0.360674 -0.83379,-0.761528 -1.38499,-1.274199 -0.89204,-0.829682 -2.34755,-2.195947 -3.81906,-3.535597 -0.8491,-0.773011 -1.80322,-1.62901 -2.83255,-2.525806 -2.19853,-2.2559 -4.70301,-4.718268 -7.37117,-7.073639 -3.77157,-3.329419 -7.970995,-6.536228 -12.188551,-8.629405 -2.119216,-1.051768 -4.316258,-1.859904 -6.534,-2.240245 -2.227621,-0.382036 -4.530703,-0.341171 -6.808103,0.367747 -0.939094,0.276923 -1.819368,0.689325 -2.63887,1.212571 -0.81761,0.522038 -1.5654,1.148355 -2.247526,1.84822 -1.358668,1.393999 -2.473993,3.096938 -3.39262,4.922004 -1.830263,3.636246 -2.995036,7.987945 -3.741182,12.067209 -0.750149,4.101154 -1.099786,8.054014 -1.249308,10.981408 -0.149716,2.931183 -0.100353,4.86271 -0.04496,4.94167 0.01276,0.0182 0.886414,-0.06929 1.97865,-0.128403 1.092236,-0.05912 2.400287,-0.134572 3.276075,-0.187167 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.045303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 51.477193,210.91501 c 0,0 0,5.26419 0,5.26419 l 5.254746,-5.57942 c 0.0037,0.0618 -0.249265,-1.06483 -0.487161,-4.29772 -0.175876,-2.39008 -0.331477,-6.04014 -0.139705,-9.99983 0.175585,-3.62545 0.638811,-7.38047 1.588086,-10.45501 0.45893,-1.48639 1.005827,-2.72886 1.631871,-3.70477 0.310545,-0.4841 0.636702,-0.89658 0.976744,-1.24025 0.34057,-0.3442 0.704474,-0.62906 1.098616,-0.85134 1.373845,-0.67502 2.804537,-0.99484 4.311123,-1.00785 1.579342,-0.0136 3.227847,0.31109 4.915184,0.90643 1.794653,0.6332 3.580299,1.55388 5.29575,2.6222 1.890606,1.17739 3.696084,2.53441 5.320026,3.87161 2.822266,2.32395 5.368107,4.81622 7.012632,6.52544 0.804009,0.83563 1.668111,1.78199 2.616652,2.85149 1.247579,1.40667 2.585135,2.97045 3.918376,4.4808 0.443258,0.50215 0.89919,1.01272 1.356144,1.50992 -7.095213,2.85833 -13.917148,6.5673 -21.018144,10.90114 -6.878501,4.19805 -19.791949,12.70429 -21.843826,14.10814 0,0 2.769176,4.04746 2.769176,4.04746 0,0 2.769176,4.04746 2.769176,4.04746 5.96659,-4.08219 10.959336,-8.67048 20.409999,-16.4064 6.935067,-5.67676 13.574629,-10.63548 20.73793,-14.40394 1.110922,-0.58444 2.236372,-1.14083 3.375272,-1.66866 -1.05745,-0.31036 -2.0695,-0.75844 -3.01011,-1.3327 -1.096906,-0.66969 -2.34255,-1.66053 -3.596352,-2.75686 -1.438899,-1.25818 -2.979997,-2.73751 -4.285061,-4.02631 -0.986687,-0.97439 -1.951519,-1.95222 -2.731924,-2.76332 -1.498423,-1.55736 -4.269374,-4.52345 -6.827812,-6.97192 -1.560321,-1.49325 -3.330263,-3.08367 -5.218207,-4.53436 -1.707871,-1.31232 -3.583074,-2.56569 -5.573378,-3.55098 -1.867768,-0.92463 -3.901999,-1.64605 -6.061176,-1.93443 -2.09038,-0.27918 -4.294587,-0.15133 -6.548788,0.58316 -0.940142,0.29592 -1.819243,0.72763 -2.635381,1.2713 -0.809035,0.53895 -1.545457,1.18065 -2.214539,1.89457 -1.330867,1.42007 -2.408878,3.14002 -3.289119,4.96716 -1.795156,3.72626 -2.883339,8.14429 -3.573655,12.0584 -0.75679,4.29102 -1.105457,8.40709 -1.282204,10.94987 -0.246502,3.54632 -0.279416,4.87873 -0.275707,4.94056 l 5.254746,-5.57942 c 0,0 0,5.26419 0,5.26419 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect26" + inkscape:original-d="m 51.477193,210.91501 c 0,0 -1.74845,-29.14551 8.96953,-33.31539 14.30283,-5.5646 30.41969,18.3716 38.80695,24.89502 -15.5647,6.93029 -28.89731,18.58732 -43.20019,28.373" + sodipodi:nodetypes="cscc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/README b/testfiles/lpe_tests/README new file mode 100644 index 0000000..a6a9209 --- /dev/null +++ b/testfiles/lpe_tests/README @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +Add files with LPE test with this pattern in file name: +{LPENAME}{underscore}{small description to also avoid duplicate like px, mm multplpe or 001}{underscore}{{Underscores Inkscape file version}_.svg + +This folder contains LPE to test. LPE test API has some parameters that can be helpful for fixing tests, especially legacy ones. +* inkscape:test-threshold="0.3" in the SVG element set a precision to all the tests. If it's in a single element, add to it. If it doesn't exist, use a default one 0.0001 +* inkscape:test-ignore="true" skip this element from testing
\ No newline at end of file diff --git a/testfiles/lpe_tests/RotateCopies_multi_mm_1_0_2.svg b/testfiles/lpe_tests/RotateCopies_multi_mm_1_0_2.svg new file mode 100644 index 0000000..9c84d79 --- /dev/null +++ b/testfiles/lpe_tests/RotateCopies_multi_mm_1_0_2.svg @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:test-threshold="0.1" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect889" + is_visible="true" + lpeversion="1" + method="fuse_paths" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect877" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect865" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="true" + split_items="true" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="0,0" + origin="-8.8467755,26.032692" + id="path-effect848" + is_visible="true" + lpeversion="1" + method="normal" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="0,0" + origin="-8.8467755,26.032692" + id="path-effect839" + is_visible="true" + lpeversion="1" + method="fuse_paths" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="0.5" + copies_to_360="true" + mirror_copies="true" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="0,0" + origin="-8.8467755,26.032692" + id="path-effect835" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="true" + split_items="true" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path846" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.6618331" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect848" + transform="translate(30.638613,-0.85570293)" + d="M 72.362387,70.470448 41.596044,55.902453 12.153368,72.988209 16.501031,39.22592 -8.8467755,16.504059 24.606571,10.205812 38.383442,-20.922826 54.711083,8.9469326 88.573464,12.430237 65.211155,37.18901 Z m -2.120356,-92.548076 -27.999425,19.3604373 0.07536,34.0409837 -27.065168,-20.646332 -32.351611,10.590915 11.272231,-32.120572 -20.069756,-27.495439 34.0317903,0.794727 19.9478207,-27.58403 9.760571,32.61174 z m -81.209162,-44.437756 2.7669175,33.928432 29.5180365,16.955228 -31.412832,13.1159575 -7.003804,33.3127745 -22.181116,-25.8223244 -33.846626,3.6331993 17.704148,-29.0750319 -13.91456,-31.067334 33.122881,7.852967 z m -79.088807,48.11032 30.766343,14.5679951 29.442676,-17.0857561 -4.347663,33.762289 25.3478065,22.721861 -33.4533465,6.298247 -13.776871,31.128638 -16.327641,-29.869759 -33.862386,-3.483304 23.362314,-24.758773 z m 2.120356,92.548076 27.999425,-19.360437 -0.07536,-34.040984 27.065168,20.646332 L -0.59473759,30.797008 -11.866969,62.91758 8.202787,90.413019 -25.829003,89.618292 -45.776824,117.20232 -55.537395,84.590582 Z M -6.7264197,118.58077 -9.4933375,84.652336 -39.011374,67.697108 -7.5985425,54.58115 -0.59473761,21.268376 21.586378,47.0907 55.433004,43.457501 37.728856,72.532533 51.643416,103.59987 18.520535,95.7469 Z" /> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path837" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.66183319" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect839" + transform="translate(94.92177,188.11708)" + d="m -11.400391,-67.263672 -21.277343,19.240234 -13.097657,-18.113281 -5.46289,18.246094 36.720703,63.601563 9.5371092,3.123046 2.4160157,-4.179687 -6.5019531,-18.529297 22.6621092,-9.462891 3.134766,-5.427734 -4.140625,-2.380859 -12.45312525,-7.152344 8.06445315,-11.048828 -17.2910157,0.404297 z m -58.802734,15.230469 9.136719,20.400391 -27.300782,8.804687 23.371094,16.1621094 -8.996094,14.7734375 13.59961,-1.4609375 -0.05078,14.3437496 0.01172,4.792969 h 6.267579 l 19.527343,-14.894531 12.794922,14.894531 4.826172,-0.002 2.066406,-9.820312 -36.720703,-63.601563 z M 39.25,-21.421875 33.714844,-8.9140625 21.318359,-16.130859 l -4.15625,-2.386719 -3.132812,5.429687 3.134765,24.357422 -19.2968745,3.632813 -2.4121094,4.18164 7.4726563,6.699219 H 76.369141 L 89.439453,11.929688 67.203125,9.6425781 73.228516,-18.404297 47.546875,-6.2441406 Z m -99.681641,47.703125 0.0078,4.777344 0.03125,14.359375 -13.59961,-1.460938 8.996094,14.775391 -23.371094,16.160156 27.300782,8.806641 -9.136719,20.400391 18.533203,-4.392579 36.720703,-63.603515 -2.066406,-9.820313 -4.826172,-0.002 -12.794922,14.894531 -19.527343,-14.892578 z m 63.3593754,0 -7.4726563,6.699219 2.4121094,4.18164 19.2968745,3.632813 -3.134765,24.357422 3.132812,5.429687 4.132813,-2.396484 L 33.714844,60.978516 39.25,73.486328 47.546875,58.308594 73.228516,70.46875 67.203125,42.421875 89.439453,40.134766 76.369141,26.28125 Z m -7.9082032,6.951172 -9.5371092,3.121094 -36.720703,63.603515 5.46289,18.244139 13.097657,-18.11328 21.277343,19.24219 L -9.0898438,91.009766 8.2011719,91.412109 0.13671875,80.365234 12.585938,73.238281 16.730469,70.832031 13.595703,65.404297 -9.0664062,55.939453 -2.5644531,37.412109 Z" /> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path833" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" + inkscape:transform-center-x="0.6618331" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect835" + transform="translate(204.14103,-7.1707903)" /> + <path + transform="matrix(-0.5,-0.8660254,-0.8660254,0.5,213.41584,-1.8159766)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-0-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="rotate(-120,91.153711,-36.483142)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-1-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="matrix(-0.5,0.8660254,0.8660254,0.5,168.32589,13.507088)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-2-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="rotate(120,95.293768,81.377736)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-3-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="matrix(1,0,0,-1,204.14103,44.894594)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-4-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <g + id="g875" + inkscape:path-effect="#path-effect877" + transform="translate(-6.6380437,97.806672)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse867" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 185.11914,274.61523 c -10.75712,0.0446 -23.60382,9.03101 -31.93945,23.46875 -10.66962,18.48032 -9.90971,38.89525 1.69922,45.59766 4.24618,2.45154 9.35729,2.72016 14.65234,1.18164 l 32.33594,-56.00781 c -1.31513,-5.35491 -4.10343,-9.64612 -8.34961,-12.09766 -2.53945,-1.46615 -5.38645,-2.15507 -8.39844,-2.14258 z m -72.67383,13.28711 c -3.1631,-0.0815 -6.15473,0.59865 -8.80859,2.13086 -11.608928,6.70242 -12.370797,27.11734 -1.70117,45.59766 10.66961,18.48031 28.73092,28.02859 40.33984,21.32617 4.24618,-2.45153 7.03253,-6.74278 8.34766,-12.09765 l -32.33594,-56.00782 c -1.98564,-0.57694 -3.94393,-0.90029 -5.8418,-0.94922 z m 98.87305,35.78711 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.4629 6.30273,13.27929 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37622 6.30273,-13.27929 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z M 76.494141,361.23047 c -3.97992,3.81639 -6.302735,8.37623 -6.302735,13.2793 0,13.40483 17.299438,24.27148 38.638674,24.27148 21.33923,0 38.63867,-10.86665 38.63867,-24.27148 0,-4.90307 -2.32281,-9.46291 -6.30273,-13.2793 z m 109.779299,2.14062 c -3.012,-0.0125 -5.86094,0.67643 -8.40039,2.14258 -4.24619,2.45154 -7.03448,6.74275 -8.34961,12.09766 l 32.33594,56.00781 c 5.29505,1.53852 10.40616,1.2699 14.65234,-1.18164 11.60892,-6.70241 12.37079,-27.11734 1.70117,-45.59766 -8.33564,-14.43774 -21.18233,-23.42413 -31.93945,-23.46875 z m -29.81446,13.28711 c -1.89786,0.0489 -3.85615,0.37228 -5.84179,0.94922 l -32.33594,56.00781 c 1.31513,5.35491 4.10147,9.64613 8.34766,12.09766 11.60892,6.70242 29.67022,-2.84586 40.33984,-21.32617 10.66961,-18.48032 9.90775,-38.89524 -1.70117,-45.59766 -2.65387,-1.53221 -5.64549,-2.2124 -8.8086,-2.13086 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse869" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 173.21484,233.72461 c -11.21919,-0.0938 -23.62226,7.68918 -31.16406,20.75195 -10.05572,17.41703 -7.66108,37.62304 5.34961,45.13477 13.01069,7.51172 31.7099,-0.51657 41.76563,-17.9336 10.05573,-17.41703 7.66108,-37.62694 -5.34961,-45.13867 -3.25268,-1.87793 -6.86183,-2.78319 -10.60157,-2.81445 z m -98.658199,41.78516 c -3.739892,0.0313 -7.348891,0.93847 -10.601563,2.8164 -13.010689,7.51173 -15.405339,27.72164 -5.349609,45.13867 10.055725,17.41703 28.752985,25.44532 41.763671,17.9336 13.01069,-7.51173 15.40729,-27.71969 5.35156,-45.13672 -7.541785,-13.06278 -19.944386,-20.84601 -31.164059,-20.75195 z m 168.962889,16.73828 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z M 76.628906,375.81836 c -20.11146,0 -36.416015,12.17967 -36.416015,27.20312 0,15.02345 16.304555,27.20118 36.416015,27.20118 20.11145,0 36.414064,-12.17773 36.414064,-27.20118 0,-15.02345 -16.302614,-27.20312 -36.414064,-27.20312 z m 153.750004,2.4375 c -3.73965,0.0314 -7.34889,0.93847 -10.60157,2.81641 -13.01069,7.51172 -15.40728,27.71969 -5.35156,45.13671 10.05573,17.41704 28.75689,25.44728 41.76758,17.93555 13.01069,-7.51172 15.40339,-27.72164 5.34766,-45.13867 -7.5418,-13.06277 -19.94319,-20.84426 -31.16211,-20.75 z m -68.23243,41.78711 c -11.21939,-0.0945 -23.62226,7.68723 -31.16406,20.75 -10.05573,17.41703 -7.66108,37.62695 5.34961,45.13867 13.01069,7.51173 31.7099,-0.52046 41.76563,-17.9375 10.05572,-17.41703 7.66108,-37.62305 -5.34961,-45.13476 -3.25268,-1.87794 -6.86177,-2.7849 -10.60157,-2.81641 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse871" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 123.16992,274.32031 c -4.10533,0.10971 -8.01194,1.36112 -11.17969,3.64258 l 20.64454,35.75586 c 5.03657,-1.11199 9.44502,-4.04309 12.06445,-8.58008 5.33746,-9.24476 1.2373,-21.60558 -9.1582,-27.60742 -3.96225,-2.2876 -8.26577,-3.32065 -12.3711,-3.21094 z m 84.97852,3.63867 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z M 87.492188,337.41211 c -4.046268,-0.0707 -8.275516,0.9661 -12.173829,3.2168 -7.924496,4.57521 -12.186208,12.84317 -11.402343,20.61132 h 41.287104 c 1.55528,-4.91779 1.221,-10.20129 -1.39843,-14.73828 -3.33592,-5.77797 -9.568729,-8.97203 -16.312502,-9.08984 z m 127.451172,23.81836 c -1.55528,4.9178 -1.22099,10.20129 1.39844,14.73828 5.33746,9.24476 18.09278,11.87489 28.48828,5.87305 7.92449,-4.57521 12.18425,-12.84318 11.40039,-20.61133 z m -95.76367,41.36719 c -10.67493,0 -19.330081,9.73068 -19.330081,21.73437 0,9.15042 5.031041,16.97446 12.150391,20.17969 l 20.64258,-35.75586 c -3.4813,-3.80581 -8.22403,-6.1582 -13.46289,-6.1582 z m 68.33398,6.15429 c -5.03658,1.11199 -9.44502,4.0431 -12.06445,8.58008 -5.33747,9.24476 -1.23925,21.60558 9.15625,27.60742 7.92449,4.57521 17.21529,4.13129 23.55078,-0.43164 z" /> + <path + id="path873" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 145.44727,302.78906 -9.27735,17.05274 6.37891,11.04882 -14.16602,16.55079 -26.23828,-2.76172 10.12891,16.56054 h 12.75781 l 7.25195,20.54297 -15.51172,21.3418 19.40625,-0.49219 6.37891,-11.04687 21.41797,3.99023 10.72656,24.10547 9.27735,-17.05273 -6.37891,-11.04883 14.16601,-16.55274 26.23829,2.76368 -10.13086,-16.56055 h -12.75586 l -7.25196,-20.54297 15.51172,-21.3418 -19.40625,0.49219 -6.3789,11.04688 -21.41797,-3.99024 z m 26.25,38.30664 -8.38282,14.51758 -0.8164,-6.24023 z m -23.25391,0.004 8.38086,14.51758 -5.8125,-2.41211 z m 23.11719,16.30469 11.76367,3.82617 h -16.75781 z m -34.73633,3.83593 h 16.75781 l -4.99414,3.82618 z m 26.49805,5.61329 5.8125,2.4121 2.56835,12.10157 z m -6.48829,0.002 0.81641,6.24219 -9.19922,8.27734 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + id="g887" + inkscape:path-effect="#path-effect889" + transform="translate(288.68899,-223.8823)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse879" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 185.11914,274.62695 c -10.75712,0.0446 -23.60382,9.03101 -31.93945,23.46875 -3.44041,5.95897 -5.68467,12.11651 -6.76758,17.95313 -0.73403,-1.56691 -1.54322,-3.13074 -2.4375,-4.67969 -6.76593,-11.71893 -16.50165,-19.83834 -25.68555,-22.51367 -5.29223,-1.53602 -10.39853,-1.26671 -14.64258,1.18359 -11.608907,6.70242 -12.370769,27.11735 -1.70117,45.59766 3.44041,5.95896 7.65083,10.97979 12.16407,14.83594 -1.72402,-0.14777 -3.48096,-0.22852 -5.26954,-0.22852 -13.530491,0 -25.42989,4.37207 -32.341793,10.98633 -3.97635,3.8152 -6.296875,8.37284 -6.296875,13.27344 0,13.40483 17.29946,24.27148 38.638668,24.27148 6.88082,0 13.33552,-1.13475 18.93164,-3.11523 -0.98997,1.41914 -1.93969,2.90025 -2.83398,4.44922 -6.76604,11.71912 -8.92874,24.2112 -6.6543,33.50195 1.31589,5.35122 4.10166,9.63954 8.34571,12.08984 11.60892,6.70242 29.67023,-2.84586 40.33984,-21.32617 3.44041,-5.95896 5.68466,-12.11651 6.76758,-17.95312 0.73402,1.5669 1.54126,3.13073 2.43555,4.67968 6.76549,11.71818 16.50216,19.83782 25.68554,22.51367 5.29224,1.53602 10.40049,1.26671 14.64453,-1.18359 11.60893,-6.70241 12.37079,-27.11735 1.70117,-45.59766 -3.4404,-5.95896 -7.65085,-10.98174 -12.16406,-14.83789 1.724,0.14777 3.48096,0.23047 5.26953,0.23047 13.53052,0 25.4299,-4.37206 32.3418,-10.98633 3.97635,-3.8152 6.29688,-8.37283 6.29688,-13.27343 0,-13.40483 -17.29946,-24.27149 -38.63868,-24.27149 -6.88082,0 -13.33552,1.13476 -18.93164,3.11524 0.98997,-1.41914 1.9397,-2.90027 2.83399,-4.44922 6.76603,-11.71912 8.92874,-24.21121 6.65429,-33.50195 -1.31588,-5.35123 -4.10361,-9.63955 -8.34765,-12.08985 -2.53945,-1.46615 -5.38645,-2.15507 -8.39844,-2.14258 z m -33.80664,66.22461 c 1.04715,1.10953 2.23347,2.06915 3.56836,2.83985 4.24405,2.4503 9.35028,2.72152 14.64844,1.17382 1.26563,-0.36853 2.54077,-0.83763 3.81836,-1.4082 -0.4373,1.46162 -0.67582,2.96837 -0.67578,4.50977 0,4.90061 2.31884,9.45913 6.30859,13.27343 0.95142,0.91109 1.99485,1.77907 3.12695,2.59961 -1.48445,0.3521 -2.90925,0.89923 -4.24414,1.66993 -4.24405,2.4503 -7.03144,6.73761 -8.33984,12.10156 -0.31322,1.27926 -0.54493,2.61741 -0.68946,4.00781 -1.04715,-1.10952 -2.23151,-2.06914 -3.5664,-2.83984 -4.24405,-2.45031 -9.35224,-2.72152 -14.65039,-1.17383 -1.26506,0.36845 -2.53942,0.83789 -3.81641,1.4082 0.4373,-1.46162 0.67578,-2.96836 0.67578,-4.50976 0,-4.90061 -2.31884,-9.45914 -6.31054,-13.27344 -0.95141,-0.91107 -1.9929,-1.77907 -3.125,-2.59961 1.48445,-0.3521 2.90729,-0.89922 4.24218,-1.66992 4.24406,-2.45031 7.03339,-6.73762 8.3418,-12.10156 0.31321,-1.27925 0.54297,-2.6174 0.6875,-4.00782 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse881" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 173.21484,233.73438 c -11.2194,-0.0945 -23.62226,7.68722 -31.16406,20.75 -10.05572,17.41702 -7.66108,37.62694 5.34961,45.13867 13.01069,7.51172 31.71185,-0.51852 41.76758,-17.93555 10.05572,-17.41703 7.65913,-37.62499 -5.35156,-45.13672 -3.25268,-1.87793 -6.86177,-2.78492 -10.60157,-2.8164 z m -98.648434,41.78124 c -3.739799,0.0315 -7.34889,0.93848 -10.601562,2.81641 -13.01069,7.51173 -15.407288,27.71969 -5.351563,45.13672 10.055725,17.41703 28.756886,25.44727 41.767579,17.93555 13.01069,-7.51173 15.40533,-27.72165 5.34961,-45.13868 -7.541798,-13.06276 -19.944665,-20.84451 -31.164064,-20.75 z m 168.945314,16.73633 c -20.11145,0 -36.41602,12.17968 -36.41602,27.20313 0,15.02345 16.30457,27.20312 36.41602,27.20312 20.11145,0 36.41406,-12.17967 36.41406,-27.20312 0,-15.02345 -16.30261,-27.20313 -36.41406,-27.20313 z M 76.636719,375.8125 c -20.11145,0 -36.414063,12.1797 -36.414063,27.20312 0,15.02347 16.302613,27.20313 36.414063,27.20313 20.11145,0 36.416011,-12.17966 36.416011,-27.20313 0,-15.02343 -16.304561,-27.20312 -36.416011,-27.20312 z M 230.36914,378.25 c -3.73989,0.0313 -7.34889,0.93847 -10.60156,2.81641 -13.01069,7.51172 -15.40534,27.72164 -5.34961,45.13867 10.05572,17.41702 28.75493,25.44532 41.76562,17.93359 13.01069,-7.51172 15.40729,-27.71969 5.35157,-45.13672 -7.5418,-13.06277 -19.94634,-20.84601 -31.16602,-20.75195 z m -68.22266,41.78125 c -11.21967,-0.0941 -23.62422,7.68918 -31.16601,20.75195 -10.05573,17.41703 -7.65913,37.625 5.35156,45.13672 13.01069,7.51173 31.7099,-0.51657 41.76563,-17.93359 10.05572,-17.41703 7.65912,-37.62695 -5.35157,-45.13867 -3.25267,-1.87793 -6.85971,-2.78506 -10.59961,-2.81641 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse883" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 123.17383,274.33203 c -4.10199,0.1089 -8.00527,1.35759 -11.17774,3.63867 -1.97429,1.42249 -3.66351,3.24103 -4.93164,5.4375 -3.33591,5.77797 -2.98692,12.77301 0.28321,18.67188 1.96207,3.53931 4.97669,6.68488 8.875,8.93554 5.29188,3.05528 11.19104,3.86316 16.41796,2.7129 5.03421,-1.11282 9.44206,-4.04472 12.06055,-8.58008 5.33746,-9.24475 1.2373,-21.60363 -9.1582,-27.60547 -3.96124,-2.28703 -8.26468,-3.3199 -12.36914,-3.21094 z m 77.79687,2.08203 c -6.67182,0 -12.55579,3.80059 -16.02929,9.58203 -2.0841,3.46886 -3.30274,7.65097 -3.30274,12.15235 1e-5,6.11165 2.25179,11.62522 5.86719,15.58008 3.4804,3.80032 8.22045,6.15039 13.45508,6.15039 10.67492,0 19.32812,-9.73069 19.32812,-21.73438 0,-9.14469 -5.02458,-16.96489 -12.14453,-20.17773 -2.21911,-0.99861 -4.63747,-1.55274 -7.17383,-1.55274 z M 87.501953,337.41602 c -4.046095,-0.0704 -8.275515,0.96805 -12.173828,3.21875 -7.919189,4.57214 -12.178923,12.83224 -11.402344,20.60546 0.244931,2.42044 0.974346,4.79233 2.242188,6.98829 3.33591,5.77797 9.56887,8.97242 16.3125,9.08984 4.04617,0.0704 8.277471,-0.96611 12.175781,-3.2168 5.291694,-3.05517 8.93997,-7.76046 10.55859,-12.86133 1.55338,-4.91615 1.2181,-10.19901 -1.40039,-14.73437 -3.33591,-5.77797 -9.569005,-8.97253 -16.312497,-9.08984 z m 150.166017,7.73632 c -4.04617,-0.0704 -8.27747,0.96611 -12.17578,3.2168 -5.29169,3.05517 -8.93997,7.76047 -10.5586,12.86133 -1.55337,4.91616 -1.2181,10.19902 1.40039,14.73437 5.33746,9.24476 18.09083,11.87294 28.48633,5.8711 7.91919,-4.57215 12.17893,-12.83224 11.40235,-20.60547 -0.24493,-2.42044 -0.97435,-4.79233 -2.24219,-6.98828 -3.33591,-5.77797 -9.56887,-8.97243 -16.3125,-9.08985 z M 119.1875,402.5918 c -10.67492,0 -19.328125,9.73068 -19.328125,21.73437 0,9.14469 5.024585,16.96489 12.144535,20.17774 2.21911,0.9986 4.63747,1.55274 7.17382,1.55273 6.67183,0 12.5558,-3.80059 16.0293,-9.58203 2.0841,-3.46886 3.30078,-7.65096 3.30078,-12.15234 -1e-5,-6.11062 -2.25091,-11.62341 -5.85937,-15.57618 -3.48083,-3.80334 -8.22396,-6.15429 -13.46094,-6.15429 z m 72.33984,5.66015 c -1.3679,0.039 -2.71375,0.20467 -4.01953,0.49024 -5.0342,1.11281 -9.44205,4.04472 -12.06054,8.58008 -5.33746,9.24475 -1.2373,21.60362 9.1582,27.60546 7.91919,4.57215 17.20399,4.13239 23.54687,-0.42773 1.97377,-1.42235 3.66378,-3.24148 4.93164,-5.4375 3.33592,-5.77797 2.98497,-12.77301 -0.28515,-18.67188 -1.96208,-3.53931 -4.97474,-6.68485 -8.87305,-8.93554 -3.97136,-2.29286 -8.28458,-3.32036 -12.39844,-3.20313 z" /> + <path + id="path885" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 161.50195,298.67383 -7.16406,24.10351 -8.89062,-19.97851 -9.27344,17.05273 -3.32617,6.11719 -26.24024,2.75 17.29297,18.25586 -21.74609,-2.29102 10.13086,16.55664 3.63281,5.93946 -10.73828,24.09961 24.45703,-5.84766 -12.85742,17.6875 19.40234,-0.49414 6.96289,-0.17773 15.50195,21.34961 7.16407,-24.10352 8.88867,19.97852 9.27344,-17.05274 3.32812,-6.11719 26.24024,-2.75 -17.29297,-18.25586 21.74609,2.29102 -10.13086,-16.55664 -3.63281,-5.93945 10.73828,-24.09961 -24.45703,5.84765 12.85742,-17.6875 -19.40234,0.49414 -6.96289,0.17774 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + id="g863" + inkscape:path-effect="#path-effect865" + transform="translate(336.57706,76.832246)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path850" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path852" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path854" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + id="path856" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + transform="matrix(-0.5,-0.8660254,-0.8660254,0.5,889.52686,396.07796)" + id="rotated-0-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path891" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path893" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path895" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path897" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="rotate(-120,350.54198,302.49001)" + id="rotated-1-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path900" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path902" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path904" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path906" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="matrix(-0.5,0.8660254,0.8660254,0.5,263.84894,118.82185)" + id="rotated-2-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path909" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path911" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path913" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path915" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="rotate(120,306.18286,496.81287)" + id="rotated-3-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path918" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path920" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path922" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path924" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="matrix(1,0,0,-1,336.57706,799.30288)" + id="rotated-4-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path927" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path929" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path931" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path933" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/RotateCopies_multi_px_1_0_2.svg b/testfiles/lpe_tests/RotateCopies_multi_px_1_0_2.svg new file mode 100644 index 0000000..d51495c --- /dev/null +++ b/testfiles/lpe_tests/RotateCopies_multi_px_1_0_2.svg @@ -0,0 +1,443 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + inkscape:test-threshold="0.1" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect889" + is_visible="true" + lpeversion="1" + method="fuse_paths" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect877" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="235.59563,361.23532" + origin="160.07389,361.23532" + id="path-effect865" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="true" + split_items="true" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="91.153224,26.032692" + origin="-8.8467755,26.032692" + id="path-effect848" + is_visible="true" + lpeversion="1" + method="normal" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="false" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="91.153224,26.032692" + origin="-8.8467755,26.032692" + id="path-effect839" + is_visible="true" + lpeversion="1" + method="fuse_paths" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="0.5" + copies_to_360="true" + mirror_copies="true" + split_items="false" /> + <inkscape:path-effect + effect="copy_rotate" + starting_point="39.863344,26.032692" + origin="-8.8467755,26.032692" + id="path-effect835" + is_visible="true" + lpeversion="1" + method="kaleidoskope" + num_copies="6" + starting_angle="0" + rotation_angle="60" + gap="-0.01" + copies_to_360="true" + mirror_copies="true" + split_items="true" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.19242534" + inkscape:cx="1197.4735" + inkscape:cy="934.34673" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1280" + inkscape:window-height="987" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path846" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.66183306" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect848" + transform="translate(30.638613,-0.85570293)" + d="M 72.362387,70.470448 41.596044,55.902453 12.153368,72.988209 16.501031,39.22592 -8.8467755,16.504059 24.606571,10.205812 38.383442,-20.922826 54.711083,8.9469326 88.573464,12.430237 65.211155,37.18901 Z m -2.120356,-92.548076 -27.999425,19.3604373 0.07536,34.0409837 -27.065168,-20.646332 -32.351611,10.590915 11.272231,-32.120572 -20.069756,-27.495439 34.0317903,0.794727 19.9478207,-27.58403 9.760571,32.61174 z m -81.209162,-44.437756 2.7669175,33.928432 29.5180365,16.955228 -31.412832,13.1159575 -7.003804,33.3127745 -22.181116,-25.8223244 -33.846626,3.6331993 17.704148,-29.0750319 -13.91456,-31.067334 33.122881,7.852967 z m -79.088807,48.11032 30.766343,14.5679951 29.442676,-17.0857561 -4.347663,33.762289 25.3478065,22.721861 -33.4533465,6.298247 -13.776871,31.128638 -16.327641,-29.869759 -33.862386,-3.483304 23.362314,-24.758773 z m 2.120356,92.548076 27.999425,-19.360437 -0.07536,-34.040984 27.065168,20.646332 L -0.59473759,30.797008 -11.866969,62.91758 8.202787,90.413019 -25.829003,89.618292 -45.776824,117.20232 -55.537395,84.590582 Z M -6.7264197,118.58077 -9.4933375,84.652336 -39.011374,67.697108 -7.5985425,54.58115 -0.59473761,21.268376 21.586378,47.0907 55.433004,43.457501 37.728856,72.532533 51.643416,103.59987 18.520535,95.7469 Z" /> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path837" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + inkscape:transform-center-x="0.66183319" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect839" + transform="translate(94.92177,188.11708)" + d="m -11.400391,-67.263672 -21.277343,19.240234 -13.097657,-18.113281 -5.46289,18.246094 36.720703,63.601563 9.5371092,3.123046 2.4160157,-4.179687 -6.5019531,-18.529297 22.6621092,-9.462891 3.134766,-5.427734 -4.140625,-2.380859 -12.45312525,-7.152344 8.06445315,-11.048828 -17.2910157,0.404297 z m -58.802734,15.230469 9.136719,20.400391 -27.300782,8.804687 23.371094,16.1621094 -8.996094,14.7734375 13.59961,-1.4609375 -0.05078,14.3437496 0.01172,4.792969 h 6.267579 l 19.527343,-14.894531 12.794922,14.894531 4.826172,-0.002 2.066406,-9.820312 -36.720703,-63.601563 z M 39.25,-21.421875 33.714844,-8.9140625 21.318359,-16.130859 l -4.15625,-2.386719 -3.132812,5.429687 3.134765,24.357422 -19.2968745,3.632813 -2.4121094,4.18164 7.4726563,6.699219 H 76.369141 L 89.439453,11.929688 67.203125,9.6425781 73.228516,-18.404297 47.546875,-6.2441406 Z m -99.681641,47.703125 0.0078,4.777344 0.03125,14.359375 -13.59961,-1.460938 8.996094,14.775391 -23.371094,16.160156 27.300782,8.806641 -9.136719,20.400391 18.533203,-4.392579 36.720703,-63.603515 -2.066406,-9.820313 -4.826172,-0.002 -12.794922,14.894531 -19.527343,-14.892578 z m 63.3593754,0 -7.4726563,6.699219 2.4121094,4.18164 19.2968745,3.632813 -3.134765,24.357422 3.132812,5.429687 4.132813,-2.396484 L 33.714844,60.978516 39.25,73.486328 47.546875,58.308594 73.228516,70.46875 67.203125,42.421875 89.439453,40.134766 76.369141,26.28125 Z m -7.9082032,6.951172 -9.5371092,3.121094 -36.720703,63.603515 5.46289,18.244139 13.097657,-18.11328 21.277343,19.24219 L -9.0898438,91.009766 8.2011719,91.412109 0.13671875,80.365234 12.585938,73.238281 16.730469,70.832031 13.595703,65.404297 -9.0664062,55.939453 -2.5644531,37.412109 Z" /> + <path + sodipodi:type="star" + style="fill-rule:evenodd;stroke-width:0.264583" + id="path833" + sodipodi:sides="5" + sodipodi:cx="40.525177" + sodipodi:cy="30.294025" + sodipodi:r1="51.261612" + sodipodi:r2="25.630808" + sodipodi:arg1="0.90068514" + sodipodi:arg2="1.5290037" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" + inkscape:transform-center-x="0.6618331" + inkscape:transform-center-y="-4.2613344" + inkscape:path-effect="#path-effect835" + transform="translate(204.14103,-7.1707903)" /> + <path + transform="matrix(-0.5,-0.8660254,-0.8660254,0.5,213.41584,-1.8159766)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-0-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="rotate(-120,91.153711,-36.483142)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-1-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="matrix(-0.5,0.8660254,0.8660254,0.5,168.32589,13.507088)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-2-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="rotate(120,95.293768,81.377736)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-3-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <path + transform="matrix(1,0,0,-1,204.14103,44.894594)" + style="display:inline;fill-rule:evenodd;stroke-width:0.264583" + id="rotated-4-path-effect835" + d="m 38.374152,-20.916875 -13.77539,31.126953 -27.2832035,5.136719 -2.546875,4.412109 7.0058593,6.279297 H 75.729621 L 88.565559,12.434688 54.702278,8.9522656 Z" /> + <g + id="g875" + inkscape:path-effect="#path-effect877" + transform="translate(-6.6380437,97.806672)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse867" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 185.11914,274.61523 c -10.75712,0.0446 -23.60382,9.03101 -31.93945,23.46875 -10.66962,18.48032 -9.90971,38.89525 1.69922,45.59766 4.24618,2.45154 9.35729,2.72016 14.65234,1.18164 l 32.33594,-56.00781 c -1.31513,-5.35491 -4.10343,-9.64612 -8.34961,-12.09766 -2.53945,-1.46615 -5.38645,-2.15507 -8.39844,-2.14258 z m -72.67383,13.28711 c -3.1631,-0.0815 -6.15473,0.59865 -8.80859,2.13086 -11.608928,6.70242 -12.370797,27.11734 -1.70117,45.59766 10.66961,18.48031 28.73092,28.02859 40.33984,21.32617 4.24618,-2.45153 7.03253,-6.74278 8.34766,-12.09765 l -32.33594,-56.00782 c -1.98564,-0.57694 -3.94393,-0.90029 -5.8418,-0.94922 z m 98.87305,35.78711 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.4629 6.30273,13.27929 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37622 6.30273,-13.27929 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z M 76.494141,361.23047 c -3.97992,3.81639 -6.302735,8.37623 -6.302735,13.2793 0,13.40483 17.299438,24.27148 38.638674,24.27148 21.33923,0 38.63867,-10.86665 38.63867,-24.27148 0,-4.90307 -2.32281,-9.46291 -6.30273,-13.2793 z m 109.779299,2.14062 c -3.012,-0.0125 -5.86094,0.67643 -8.40039,2.14258 -4.24619,2.45154 -7.03448,6.74275 -8.34961,12.09766 l 32.33594,56.00781 c 5.29505,1.53852 10.40616,1.2699 14.65234,-1.18164 11.60892,-6.70241 12.37079,-27.11734 1.70117,-45.59766 -8.33564,-14.43774 -21.18233,-23.42413 -31.93945,-23.46875 z m -29.81446,13.28711 c -1.89786,0.0489 -3.85615,0.37228 -5.84179,0.94922 l -32.33594,56.00781 c 1.31513,5.35491 4.10147,9.64613 8.34766,12.09766 11.60892,6.70242 29.67022,-2.84586 40.33984,-21.32617 10.66961,-18.48032 9.90775,-38.89524 -1.70117,-45.59766 -2.65387,-1.53221 -5.64549,-2.2124 -8.8086,-2.13086 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse869" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 173.21484,233.72461 c -11.21919,-0.0938 -23.62226,7.68918 -31.16406,20.75195 -10.05572,17.41703 -7.66108,37.62304 5.34961,45.13477 13.01069,7.51172 31.7099,-0.51657 41.76563,-17.9336 10.05573,-17.41703 7.66108,-37.62694 -5.34961,-45.13867 -3.25268,-1.87793 -6.86183,-2.78319 -10.60157,-2.81445 z m -98.658199,41.78516 c -3.739892,0.0313 -7.348891,0.93847 -10.601563,2.8164 -13.010689,7.51173 -15.405339,27.72164 -5.349609,45.13867 10.055725,17.41703 28.752985,25.44532 41.763671,17.9336 13.01069,-7.51173 15.40729,-27.71969 5.35156,-45.13672 -7.541785,-13.06278 -19.944386,-20.84601 -31.164059,-20.75195 z m 168.962889,16.73828 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z M 76.628906,375.81836 c -20.11146,0 -36.416015,12.17967 -36.416015,27.20312 0,15.02345 16.304555,27.20118 36.416015,27.20118 20.11145,0 36.414064,-12.17773 36.414064,-27.20118 0,-15.02345 -16.302614,-27.20312 -36.414064,-27.20312 z m 153.750004,2.4375 c -3.73965,0.0314 -7.34889,0.93847 -10.60157,2.81641 -13.01069,7.51172 -15.40728,27.71969 -5.35156,45.13671 10.05573,17.41704 28.75689,25.44728 41.76758,17.93555 13.01069,-7.51172 15.40339,-27.72164 5.34766,-45.13867 -7.5418,-13.06277 -19.94319,-20.84426 -31.16211,-20.75 z m -68.23243,41.78711 c -11.21939,-0.0945 -23.62226,7.68723 -31.16406,20.75 -10.05573,17.41703 -7.66108,37.62695 5.34961,45.13867 13.01069,7.51173 31.7099,-0.52046 41.76563,-17.9375 10.05572,-17.41703 7.66108,-37.62305 -5.34961,-45.13476 -3.25268,-1.87794 -6.86177,-2.7849 -10.60157,-2.81641 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse871" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 123.16992,274.32031 c -4.10533,0.10971 -8.01194,1.36112 -11.17969,3.64258 l 20.64454,35.75586 c 5.03657,-1.11199 9.44502,-4.04309 12.06445,-8.58008 5.33746,-9.24476 1.2373,-21.60558 -9.1582,-27.60742 -3.96225,-2.2876 -8.26577,-3.32065 -12.3711,-3.21094 z m 84.97852,3.63867 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z M 87.492188,337.41211 c -4.046268,-0.0707 -8.275516,0.9661 -12.173829,3.2168 -7.924496,4.57521 -12.186208,12.84317 -11.402343,20.61132 h 41.287104 c 1.55528,-4.91779 1.221,-10.20129 -1.39843,-14.73828 -3.33592,-5.77797 -9.568729,-8.97203 -16.312502,-9.08984 z m 127.451172,23.81836 c -1.55528,4.9178 -1.22099,10.20129 1.39844,14.73828 5.33746,9.24476 18.09278,11.87489 28.48828,5.87305 7.92449,-4.57521 12.18425,-12.84318 11.40039,-20.61133 z m -95.76367,41.36719 c -10.67493,0 -19.330081,9.73068 -19.330081,21.73437 0,9.15042 5.031041,16.97446 12.150391,20.17969 l 20.64258,-35.75586 c -3.4813,-3.80581 -8.22403,-6.1582 -13.46289,-6.1582 z m 68.33398,6.15429 c -5.03658,1.11199 -9.44502,4.0431 -12.06445,8.58008 -5.33747,9.24476 -1.23925,21.60558 9.15625,27.60742 7.92449,4.57521 17.21529,4.13129 23.55078,-0.43164 z" /> + <path + id="path873" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 145.44727,302.78906 -9.27735,17.05274 6.37891,11.04882 -14.16602,16.55079 -26.23828,-2.76172 10.12891,16.56054 h 12.75781 l 7.25195,20.54297 -15.51172,21.3418 19.40625,-0.49219 6.37891,-11.04687 21.41797,3.99023 10.72656,24.10547 9.27735,-17.05273 -6.37891,-11.04883 14.16601,-16.55274 26.23829,2.76368 -10.13086,-16.56055 h -12.75586 l -7.25196,-20.54297 15.51172,-21.3418 -19.40625,0.49219 -6.3789,11.04688 -21.41797,-3.99024 z m 26.25,38.30664 -8.38282,14.51758 -0.8164,-6.24023 z m -23.25391,0.004 8.38086,14.51758 -5.8125,-2.41211 z m 23.11719,16.30469 11.76367,3.82617 h -16.75781 z m -34.73633,3.83593 h 16.75781 l -4.99414,3.82618 z m 26.49805,5.61329 5.8125,2.4121 2.56835,12.10157 z m -6.48829,0.002 0.81641,6.24219 -9.19922,8.27734 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + id="g887" + inkscape:path-effect="#path-effect889" + transform="translate(288.68899,-223.8823)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse879" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 185.11914,274.62695 c -10.75712,0.0446 -23.60382,9.03101 -31.93945,23.46875 -3.44041,5.95897 -5.68467,12.11651 -6.76758,17.95313 -0.73403,-1.56691 -1.54322,-3.13074 -2.4375,-4.67969 -6.76593,-11.71893 -16.50165,-19.83834 -25.68555,-22.51367 -5.29223,-1.53602 -10.39853,-1.26671 -14.64258,1.18359 -11.608907,6.70242 -12.370769,27.11735 -1.70117,45.59766 3.44041,5.95896 7.65083,10.97979 12.16407,14.83594 -1.72402,-0.14777 -3.48096,-0.22852 -5.26954,-0.22852 -13.530491,0 -25.42989,4.37207 -32.341793,10.98633 -3.97635,3.8152 -6.296875,8.37284 -6.296875,13.27344 0,13.40483 17.29946,24.27148 38.638668,24.27148 6.88082,0 13.33552,-1.13475 18.93164,-3.11523 -0.98997,1.41914 -1.93969,2.90025 -2.83398,4.44922 -6.76604,11.71912 -8.92874,24.2112 -6.6543,33.50195 1.31589,5.35122 4.10166,9.63954 8.34571,12.08984 11.60892,6.70242 29.67023,-2.84586 40.33984,-21.32617 3.44041,-5.95896 5.68466,-12.11651 6.76758,-17.95312 0.73402,1.5669 1.54126,3.13073 2.43555,4.67968 6.76549,11.71818 16.50216,19.83782 25.68554,22.51367 5.29224,1.53602 10.40049,1.26671 14.64453,-1.18359 11.60893,-6.70241 12.37079,-27.11735 1.70117,-45.59766 -3.4404,-5.95896 -7.65085,-10.98174 -12.16406,-14.83789 1.724,0.14777 3.48096,0.23047 5.26953,0.23047 13.53052,0 25.4299,-4.37206 32.3418,-10.98633 3.97635,-3.8152 6.29688,-8.37283 6.29688,-13.27343 0,-13.40483 -17.29946,-24.27149 -38.63868,-24.27149 -6.88082,0 -13.33552,1.13476 -18.93164,3.11524 0.98997,-1.41914 1.9397,-2.90027 2.83399,-4.44922 6.76603,-11.71912 8.92874,-24.21121 6.65429,-33.50195 -1.31588,-5.35123 -4.10361,-9.63955 -8.34765,-12.08985 -2.53945,-1.46615 -5.38645,-2.15507 -8.39844,-2.14258 z m -33.80664,66.22461 c 1.04715,1.10953 2.23347,2.06915 3.56836,2.83985 4.24405,2.4503 9.35028,2.72152 14.64844,1.17382 1.26563,-0.36853 2.54077,-0.83763 3.81836,-1.4082 -0.4373,1.46162 -0.67582,2.96837 -0.67578,4.50977 0,4.90061 2.31884,9.45913 6.30859,13.27343 0.95142,0.91109 1.99485,1.77907 3.12695,2.59961 -1.48445,0.3521 -2.90925,0.89923 -4.24414,1.66993 -4.24405,2.4503 -7.03144,6.73761 -8.33984,12.10156 -0.31322,1.27926 -0.54493,2.61741 -0.68946,4.00781 -1.04715,-1.10952 -2.23151,-2.06914 -3.5664,-2.83984 -4.24405,-2.45031 -9.35224,-2.72152 -14.65039,-1.17383 -1.26506,0.36845 -2.53942,0.83789 -3.81641,1.4082 0.4373,-1.46162 0.67578,-2.96836 0.67578,-4.50976 0,-4.90061 -2.31884,-9.45914 -6.31054,-13.27344 -0.95141,-0.91107 -1.9929,-1.77907 -3.125,-2.59961 1.48445,-0.3521 2.90729,-0.89922 4.24218,-1.66992 4.24406,-2.45031 7.03339,-6.73762 8.3418,-12.10156 0.31321,-1.27925 0.54297,-2.6174 0.6875,-4.00782 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse881" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 173.21484,233.73438 c -11.2194,-0.0945 -23.62226,7.68722 -31.16406,20.75 -10.05572,17.41702 -7.66108,37.62694 5.34961,45.13867 13.01069,7.51172 31.71185,-0.51852 41.76758,-17.93555 10.05572,-17.41703 7.65913,-37.62499 -5.35156,-45.13672 -3.25268,-1.87793 -6.86177,-2.78492 -10.60157,-2.8164 z m -98.648434,41.78124 c -3.739799,0.0315 -7.34889,0.93848 -10.601562,2.81641 -13.01069,7.51173 -15.407288,27.71969 -5.351563,45.13672 10.055725,17.41703 28.756886,25.44727 41.767579,17.93555 13.01069,-7.51173 15.40533,-27.72165 5.34961,-45.13868 -7.541798,-13.06276 -19.944665,-20.84451 -31.164064,-20.75 z m 168.945314,16.73633 c -20.11145,0 -36.41602,12.17968 -36.41602,27.20313 0,15.02345 16.30457,27.20312 36.41602,27.20312 20.11145,0 36.41406,-12.17967 36.41406,-27.20312 0,-15.02345 -16.30261,-27.20313 -36.41406,-27.20313 z M 76.636719,375.8125 c -20.11145,0 -36.414063,12.1797 -36.414063,27.20312 0,15.02347 16.302613,27.20313 36.414063,27.20313 20.11145,0 36.416011,-12.17966 36.416011,-27.20313 0,-15.02343 -16.304561,-27.20312 -36.416011,-27.20312 z M 230.36914,378.25 c -3.73989,0.0313 -7.34889,0.93847 -10.60156,2.81641 -13.01069,7.51172 -15.40534,27.72164 -5.34961,45.13867 10.05572,17.41702 28.75493,25.44532 41.76562,17.93359 13.01069,-7.51172 15.40729,-27.71969 5.35157,-45.13672 -7.5418,-13.06277 -19.94634,-20.84601 -31.16602,-20.75195 z m -68.22266,41.78125 c -11.21967,-0.0941 -23.62422,7.68918 -31.16601,20.75195 -10.05573,17.41703 -7.65913,37.625 5.35156,45.13672 13.01069,7.51173 31.7099,-0.51657 41.76563,-17.93359 10.05572,-17.41703 7.65912,-37.62695 -5.35157,-45.13867 -3.25267,-1.87793 -6.85971,-2.78506 -10.59961,-2.81641 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="ellipse883" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 123.17383,274.33203 c -4.10199,0.1089 -8.00527,1.35759 -11.17774,3.63867 -1.97429,1.42249 -3.66351,3.24103 -4.93164,5.4375 -3.33591,5.77797 -2.98692,12.77301 0.28321,18.67188 1.96207,3.53931 4.97669,6.68488 8.875,8.93554 5.29188,3.05528 11.19104,3.86316 16.41796,2.7129 5.03421,-1.11282 9.44206,-4.04472 12.06055,-8.58008 5.33746,-9.24475 1.2373,-21.60363 -9.1582,-27.60547 -3.96124,-2.28703 -8.26468,-3.3199 -12.36914,-3.21094 z m 77.79687,2.08203 c -6.67182,0 -12.55579,3.80059 -16.02929,9.58203 -2.0841,3.46886 -3.30274,7.65097 -3.30274,12.15235 1e-5,6.11165 2.25179,11.62522 5.86719,15.58008 3.4804,3.80032 8.22045,6.15039 13.45508,6.15039 10.67492,0 19.32812,-9.73069 19.32812,-21.73438 0,-9.14469 -5.02458,-16.96489 -12.14453,-20.17773 -2.21911,-0.99861 -4.63747,-1.55274 -7.17383,-1.55274 z M 87.501953,337.41602 c -4.046095,-0.0704 -8.275515,0.96805 -12.173828,3.21875 -7.919189,4.57214 -12.178923,12.83224 -11.402344,20.60546 0.244931,2.42044 0.974346,4.79233 2.242188,6.98829 3.33591,5.77797 9.56887,8.97242 16.3125,9.08984 4.04617,0.0704 8.277471,-0.96611 12.175781,-3.2168 5.291694,-3.05517 8.93997,-7.76046 10.55859,-12.86133 1.55338,-4.91615 1.2181,-10.19901 -1.40039,-14.73437 -3.33591,-5.77797 -9.569005,-8.97253 -16.312497,-9.08984 z m 150.166017,7.73632 c -4.04617,-0.0704 -8.27747,0.96611 -12.17578,3.2168 -5.29169,3.05517 -8.93997,7.76047 -10.5586,12.86133 -1.55337,4.91616 -1.2181,10.19902 1.40039,14.73437 5.33746,9.24476 18.09083,11.87294 28.48633,5.8711 7.91919,-4.57215 12.17893,-12.83224 11.40235,-20.60547 -0.24493,-2.42044 -0.97435,-4.79233 -2.24219,-6.98828 -3.33591,-5.77797 -9.56887,-8.97243 -16.3125,-9.08985 z M 119.1875,402.5918 c -10.67492,0 -19.328125,9.73068 -19.328125,21.73437 0,9.14469 5.024585,16.96489 12.144535,20.17774 2.21911,0.9986 4.63747,1.55274 7.17382,1.55273 6.67183,0 12.5558,-3.80059 16.0293,-9.58203 2.0841,-3.46886 3.30078,-7.65096 3.30078,-12.15234 -1e-5,-6.11062 -2.25091,-11.62341 -5.85937,-15.57618 -3.48083,-3.80334 -8.22396,-6.15429 -13.46094,-6.15429 z m 72.33984,5.66015 c -1.3679,0.039 -2.71375,0.20467 -4.01953,0.49024 -5.0342,1.11281 -9.44205,4.04472 -12.06054,8.58008 -5.33746,9.24475 -1.2373,21.60362 9.1582,27.60546 7.91919,4.57215 17.20399,4.13239 23.54687,-0.42773 1.97377,-1.42235 3.66378,-3.24148 4.93164,-5.4375 3.33592,-5.77797 2.98497,-12.77301 -0.28515,-18.67188 -1.96208,-3.53931 -4.97474,-6.68485 -8.87305,-8.93554 -3.97136,-2.29286 -8.28458,-3.32036 -12.39844,-3.20313 z" /> + <path + id="path885" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 161.50195,298.67383 -7.16406,24.10351 -8.89062,-19.97851 -9.27344,17.05273 -3.32617,6.11719 -26.24024,2.75 17.29297,18.25586 -21.74609,-2.29102 10.13086,16.55664 3.63281,5.93946 -10.73828,24.09961 24.45703,-5.84766 -12.85742,17.6875 19.40234,-0.49414 6.96289,-0.17773 15.50195,21.34961 7.16407,-24.10352 8.88867,19.97852 9.27344,-17.05274 3.32812,-6.11719 26.24024,-2.75 -17.29297,-18.25586 21.74609,2.29102 -10.13086,-16.55664 -3.63281,-5.93945 10.73828,-24.09961 -24.45703,5.84765 12.85742,-17.6875 -19.40234,0.49414 -6.96289,0.17774 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + id="g863" + inkscape:path-effect="#path-effect865" + transform="translate(336.57706,76.832246)"> + <ellipse + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path850" + cx="211.32597" + cy="347.95584" + rx="38.638088" + ry="24.271585" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <ellipse + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path852" + cx="243.52765" + cy="319.44418" + rx="36.415005" + ry="27.20236" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <ellipse + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path854" + cx="200.97748" + cy="298.13342" + rx="19.328659" + ry="21.734608" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + id="path856" + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + inkscape:transform-center-x="2.0720703" + inkscape:transform-center-y="-1.7687862" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" + inkscape:original-d="m 196.65712,365.55852 -25.08968,-8.15976 -20.94553,16.04238 0.007,-26.3832 -21.72973,-14.96302 25.09415,-8.14595 7.51582,-25.29004 15.50179,21.34873 26.37476,-0.66708 -15.51353,21.34019 z" /> + </g> + <g + transform="matrix(-0.5,-0.8660254,-0.8660254,0.5,889.52686,396.07796)" + id="rotated-0-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path891" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path893" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path895" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path897" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="rotate(-120,350.54198,302.49001)" + id="rotated-1-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path900" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path902" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path904" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path906" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="matrix(-0.5,0.8660254,0.8660254,0.5,263.84894,118.82185)" + id="rotated-2-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path909" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path911" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path913" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path915" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="rotate(120,306.18286,496.81287)" + id="rotated-3-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path918" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path920" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path922" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path924" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + <g + transform="matrix(1,0,0,-1,336.57706,799.30288)" + id="rotated-4-path-effect865" + style="display:inline"> + <path + style="fill:#501616;fill-rule:evenodd;stroke-width:0.264583" + id="path927" + d="m 211.31751,323.68859 c -21.33923,0 -38.63867,10.86666 -38.63867,24.27149 0,4.90307 2.32281,9.46291 6.30273,13.2793 h 64.67188 c 3.97992,-3.81639 6.30273,-8.37623 6.30273,-13.2793 0,-13.40483 -17.29944,-24.27149 -38.63867,-24.27149 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path929" + d="m 243.51868,292.24719 c -20.11145,0 -36.41406,12.17772 -36.41406,27.20117 0,15.02345 16.30261,27.20312 36.41406,27.20312 20.11146,0 36.41602,-12.17967 36.41602,-27.20312 0,-15.02345 -16.30456,-27.20117 -36.41602,-27.20117 z" /> + <path + style="fill:#2b0000;fill-rule:evenodd;stroke-width:0.264583" + id="path931" + d="m 208.14759,277.95812 -20.64258,35.75586 c 3.4813,3.80581 8.22403,6.15821 13.46289,6.15821 10.67493,0 19.33008,-9.73069 19.33008,-21.73438 0,-9.15042 -5.03104,-16.97446 -12.15039,-20.17969 z" /> + <path + style="fill:#ac9393;fill-rule:evenodd;stroke-width:0.264583" + id="path933" + d="m 203.37611,319.34484 -19.40625,0.49219 -23.9043,41.40235 h 6.48633 l 5.00781,-3.83594 11.79297,3.83594 h 11.76758 l -7.25586,-20.55274 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/RoughHatches_multi_mm_1_0_2.svg b/testfiles/lpe_tests/RoughHatches_multi_mm_1_0_2.svg new file mode 100644 index 0000000..0b18fbe --- /dev/null +++ b/testfiles/lpe_tests/RoughHatches_multi_mm_1_0_2.svg @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 249.99999" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3725" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="75.5;2147483646" + growth="0.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="6.0476189;1" + top_edge_variation="6.0476189;1" + bottom_tgt_variation="0.5;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1.6" + scale_tb="1" + top_smth_variation="0.6;2147483646" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1.6" + back_thickness="0.25" + lpeversion="1" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3721" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="20;1" + growth="3.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="7.35;1178034515" + top_edge_variation="6.45;1" + bottom_tgt_variation="0.4;1" + top_tgt_variation="0.6;2147483646" + scale_bf="1.4" + scale_bb="2" + scale_tf="1.7" + scale_tb="1.5" + top_smth_variation="0.7;680258645" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1.3" + stroke_width_bottom="1.6" + front_thickness="1.7" + back_thickness="0.65" + lpeversion="1" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect14" + is_visible="true" + direction="58.977559,85.996199 , 17.563646,0" + dist_rdm="75;1" + growth="0" + do_bend="true" + bender="58.977559,90.996199 , 5,0" + bottom_edge_variation="11.413526;1" + top_edge_variation="11.413526;1" + bottom_tgt_variation="0;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1" + scale_tb="1" + top_smth_variation="0;1" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1" + back_thickness="0.25" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect12" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 91.841889,90.217083 c 0,0 -0.119254,6.374408 -0.515537,13.130457 -0.397184,6.77142 -1.067763,13.87735 -1.937928,15.41786 -1.055241,1.86816 -1.353715,-7.10441 -1.906565,-17.13852 -0.554672,-10.067181 -1.369585,-21.08626 -2.937786,-23.476492 -1.728185,-2.634077 -2.417471,11.220069 -3.266717,26.023982 -0.848586,14.79243 -1.907217,30.50016 -3.028203,31.5158 -1.314502,1.19096 -1.368995,-15.1947 -1.648277,-32.02848 -0.279283,-16.833785 -0.806922,-34.115681 -1.315265,-34.717171 -0.699675,-0.827882 -0.731199,16.661456 -1.232123,34.475331 -0.500923,17.81387 -1.489176,35.95228 -2.145283,36.42253 -0.848784,0.60836 -0.523363,-18.64307 -0.899279,-38.40853 C 70.63301,81.668397 69.525222,61.38891 68.179543,59.941146 66.641429,58.286348 66.381437,77.487836 65.641826,97.241182 64.902215,116.99453 63.648578,137.29973 62.547705,137.85237 61.255885,138.50086 61.488678,115.006 60.773263,90.940219 60.057848,66.874439 58.352901,42.237733 56.700616,40.602521 54.853366,38.774359 55.02595,65.026372 54.48762,91.757529 53.949291,118.48869 52.65944,145.69899 52.34142,145.78741 51.833682,145.92857 52.710528,119.28552 52.445174,92.435235 52.179821,65.584947 50.755355,38.527421 50.049033,37.839631 49.147452,36.961706 49.880745,64.95749 49.42872,93.195178 48.976696,121.43287 47.318087,149.91246 46.562347,150.00215 45.618095,150.11422 46.392213,122.55698 46.068089,95.326991 45.743966,68.096998 44.349733,41.194244 43.683088,42.615266 42.842697,44.406645 43.346115,71.469964 42.80277,98.057998 42.259424,124.64603 40.70689,150.75878 40.021987,150.64901 39.150951,150.50941 39.811468,126.13948 39.439958,102.53536 39.069676,79.009284 37.760345,56.014884 36.35051,59.016586 c -1.469423,3.128571 -1.905028,25.851029 -2.772816,46.940264 -0.874966,21.2637 -2.209646,41.41757 -3.052068,40.28128 -1.019779,-1.3755 -0.836608,-19.0784 -1.01786,-36.10085 -0.181253,-17.022453 -0.691393,-33.364456 -1.325468,-32.018165 -0.79416,1.68619 -1.137444,14.083062 -1.483561,25.808855 -0.347593,11.77582 -0.706803,23.03063 -0.785189,22.68283 -0.245601,-1.08975 -0.04526,-14.23224 -0.12034,-26.36193 -0.07502,-12.120471 -0.383854,-23.255785 -0.729366,-20.285089 -0.501383,4.310862 -0.640759,14.360851 -0.731536,22.834849 -0.09242,8.62729 -0.13544,16.13859 -0.13544,16.13859 0,0 0.324542,-9.26507 0.53073,-18.64398 0.206192,-9.379112 0.290829,-18.872473 0.344331,-19.329459 0.233727,-1.996397 0.458174,8.946598 0.523246,20.665459 0.06465,11.64232 -0.03977,24.51044 0.290652,25.98156 0.527594,2.34897 1.174078,-9.47103 1.544882,-21.97878 0.371475,-12.5304 0.432559,-25.816485 0.761092,-26.512905 0.512479,-1.086342 0.943394,15.175921 1.112222,32.093515 0.168828,16.91759 0.04198,34.49052 1.178814,36.0255 1.314009,1.77421 2.944717,-18.8855 3.836396,-40.5616 0.884609,-21.504262 1.058324,-44.540424 2.055444,-46.659944 1.294954,-2.752609 2.517178,20.239501 2.866847,43.693544 0.35089,23.53592 -0.260714,47.7794 0.734289,47.93888 1.181115,0.18932 3.023823,-26.41724 3.575191,-53.272061 0.551367,-26.854825 -0.208846,-53.957919 0.168841,-54.761683 0.551717,-1.174119 1.856858,25.736093 2.15622,52.908089 0.299362,27.171995 -0.429421,54.605775 0.640605,54.478795 1.258556,-0.14935 3.178524,-28.37543 3.659113,-56.471448 0.48059,-28.096016 -0.466933,-56.061968 -0.08633,-55.691071 0.57572,0.561033 1.920774,27.636142 2.166859,54.52691 0.246084,26.890769 -0.591689,53.597199 0.04266,53.420869 0.824112,-0.22908 2.37292,-27.18212 2.937267,-53.749475 0.564347,-26.56736 0.176337,-52.749043 1.502673,-51.435414 1.521153,1.506579 3.148735,26.175237 3.84654,50.289151 0.697805,24.113918 0.506231,47.673088 1.925896,46.960698 1.610688,-0.80825 3.117052,-20.83741 3.874041,-40.38883 0.756989,-19.55142 0.793499,-38.625101 1.817606,-37.522394 1.216383,1.309741 2.24957,21.635261 2.610333,41.458244 0.360762,19.82298 0.07922,39.14342 1.056993,38.44299 1.170559,-0.83852 2.406935,-18.67507 2.921411,-36.24595 0.514476,-17.570877 0.321136,-34.876082 0.510419,-34.651911 0.380442,0.450563 0.835393,17.790901 1.101382,34.691631 0.265989,16.90074 0.366407,33.36187 1.810923,32.05402 1.674546,-1.51613 2.938806,-16.77112 3.799877,-31.28616 0.860014,-14.497228 1.322461,-28.110351 2.539213,-26.253622 1.439924,2.197286 2.186232,13.330384 2.73202,23.503902 0.543943,10.13914 0.893938,19.21006 2.081153,17.11111 1.392645,-2.46214 2.065253,-9.8146 2.336416,-16.60778 0.270477,-6.775976 0.13875,-12.940537 0.13875,-12.940537 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect12;#path-effect14" + inkscape:original-d="m 46.113094,33.928571 c 25.954629,25.198149 51.908995,50.39656 77.863096,75.595239 -34.77354,21.41838 -69.547354,42.83704 -104.321428,64.25595 1.764169,-31.49856 3.528042,-62.9963 5.291666,-94.494047" /> + <path + d="m 110.16612,205.78991 c 0,0 0.10468,4.62493 -0.13886,9.62551 -0.24494,5.02941 -0.83454,10.34656 -1.78752,11.87598 -1.81929,2.91977 -1.48045,-3.32559 -1.54289,-10.78981 -0.0631,-7.54172 -0.56837,-16.2313 -3.01713,-18.58752 -2.40543,-2.31455 -2.46037,7.14619 -2.85665,17.45724 -0.39609,10.30602 -1.238432,21.44722 -2.876479,22.46841 -2.76592,1.72433 -2.168121,-9.09785 -2.147677,-20.64073 0.02042,-11.52931 -0.6469,-23.73858 -3.07757,-24.72055 -2.434124,-0.98336 -2.161556,11.54896 -2.696738,24.44288 -0.535182,12.89391 -1.930135,26.14942 -4.033223,26.61241 -3.442206,0.7578 -2.317055,-12.81546 -2.409644,-26.59023 -0.09259,-13.77477 -1.434059,-27.75105 -5.609029,-27.79926 -3.965662,-0.0458 -3.711985,14.5187 -4.505014,28.87546 -0.793028,14.35675 -2.599094,28.50576 -6.107745,27.62897 -5.444117,-1.36043 -4.523776,-16.83609 -4.963237,-30.87472 -0.439829,-14.05036 -2.010286,-26.62848 -7.972135,-22.25251 -5.476513,4.01973 -6.765821,14.49247 -7.043413,23.80154 -0.279037,9.35748 0.465625,17.69867 0.465625,17.69867 0,0 -0.328457,-8.23904 0.172232,-17.3448 0.498242,-9.06127 1.822691,-19.12701 6.50857,-22.55541 5.673792,-4.1512 7.007656,8.31744 7.387231,22.21335 0.378411,13.85329 -0.28301,29.20736 5.34052,30.61388 4.338402,1.0851 6.622539,-12.984 7.478716,-27.31537 0.856178,-14.33138 0.241679,-28.92503 3.356439,-28.88906 3.849491,0.0445 4.96408,13.98209 5.000351,27.70098 0.03627,13.71888 -0.972015,27.21903 2.803444,26.38851 2.969275,-0.65317 4.812041,-13.65722 5.401709,-26.34037 0.589668,-12.68315 -0.02929,-25.04538 1.528543,-24.41492 2.092966,0.84704 2.55037,13.08637 2.482407,24.62694 -0.06803,11.55263 -0.549502,22.37031 2.562788,20.43434 2.590439,-1.61135 3.786219,-12.16592 4.231349,-22.08496 0.44383,-9.89011 0.16047,-18.98778 1.65806,-17.54069 2.10018,2.02936 2.41892,10.91269 2.44826,18.60062 0.029,7.59869 -0.18513,13.95252 1.99298,10.47671 1.85572,-2.96135 2.43687,-8.59872 2.46245,-13.59813 0.0254,-4.96792 -0.49672,-9.20336 -0.49672,-9.20336 z" + sodipodi:ry="30.238094" + sodipodi:rx="35.529762" + sodipodi:cy="216.86905" + sodipodi:cx="77.10714" + sodipodi:type="arc" + inkscape:path-effect="#path-effect3721" + id="path02" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + transform="translate(31.75,-19.654762)" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + id="path01" + transform="scale(0.5)" + inkscape:path-effect="#path-effect3725" + sodipodi:type="arc" + sodipodi:cx="77.10714" + sodipodi:cy="216.86905" + sodipodi:rx="35.529762" + sodipodi:ry="30.238094" + d="m 110.16612,205.78991 c 0,0 -0.0395,5.88159 -0.3419,11.88959 -0.30237,6.00737 -0.87548,12.13988 -1.17116,12.64045 -0.6485,1.09786 -0.57013,-5.83631 -0.74785,-13.27563 -0.17738,-7.42518 -0.65705,-15.31313 -1.23581,-16.05217 -0.72147,-0.92129 -0.72958,8.04207 -1.01122,17.34304 -0.28078,9.27239 -0.88251,18.79669 -0.93603,18.85444 -0.41058,0.44304 0.42336,-8.49758 0.27454,-18.05249 -0.14954,-9.60071 -1.28089,-19.67832 -3.9092,-21.73826 -1.953165,-1.5308 -2.30926,9.8236 -3.058175,21.72006 -0.747452,11.87322 -1.97894,24.21877 -2.621255,24.55407 -0.994981,0.51938 -0.282608,-12.26889 -0.502472,-25.29551 -0.219864,-13.02662 -1.406032,-26.29159 -2.483027,-26.72559 -1.044374,-0.42084 -0.625277,12.15054 -0.857582,24.83838 -0.232305,12.68785 -1.132413,25.49216 -1.268924,25.53718 -0.482331,0.15906 0.293156,-13.7419 -0.0096,-27.72068 -0.302729,-13.97879 -1.695578,-28.0354 -2.240107,-28.18767 -0.709959,-0.19853 0.187504,14.50871 -0.242187,29.32088 -0.42969,14.81218 -2.203522,29.7293 -3.459363,29.95054 -1.598434,0.2816 -0.742982,-14.34562 -1.340227,-29.05209 -0.597246,-14.70647 -2.660045,-29.4922 -5.344823,-29.52764 -2.039315,-0.0269 -1.844395,15.17613 -2.582459,30.36458 -0.738063,15.18846 -2.406677,30.36231 -3.11777,30.27699 -1.043498,-0.1252 0.195415,-14.89084 -0.176058,-29.44394 -0.371472,-14.5531 -2.318806,-28.89366 -5.057596,-28.16874 -2.065756,0.54678 -2.166255,14.44804 -3.005471,28.11468 -0.839216,13.66664 -2.382281,27.09867 -3.262039,26.707 -1.208774,-0.53815 -0.652066,-13.48373 -0.942162,-26.14734 -0.290096,-12.66361 -1.387864,-25.04525 -2.39813,-24.45553 -0.979675,0.57186 -0.822921,12.67447 -1.360555,24.5157 -0.537633,11.84123 -1.735945,23.4211 -2.368492,22.94747 -0.951262,-0.71228 -0.03533,-12.27886 -0.395441,-22.55596 -0.361418,-10.31442 -1.85281,-19.2274 -5.137769,-14.81907 -2.393085,3.21146 -3.359424,9.01225 -3.804784,13.9132 -0.448062,4.93069 -0.373488,9.05126 -0.373488,9.05126 0,0 0.329871,-4.3838 0.974266,-9.32053 0.640595,-4.90763 1.602496,-10.45792 3.237425,-12.64393 3.179417,-4.2511 4.577136,4.6234 4.909295,14.87244 0.331048,10.21476 -0.546341,21.70121 0.521723,22.50259 1.391256,1.04386 3.055695,-10.76129 3.630561,-22.85773 0.574866,-12.09643 0.02015,-24.48416 0.22826,-24.60544 0.891077,-0.51932 1.888408,11.83541 2.143674,24.46796 0.255266,12.63255 -0.269805,25.54293 1.05826,26.13491 1.651566,0.73618 3.653218,-12.79969 4.534462,-26.60438 0.881244,-13.80469 0.60091,-27.87821 1.882942,-28.2173 2.618082,-0.69247 4.461774,13.64067 4.792999,28.18194 0.331226,14.54128 -0.883744,29.29069 0.283129,29.43074 1.502653,0.18036 3.617302,-14.98821 4.400263,-30.19778 0.782962,-15.20957 0.227372,-30.46014 1.465774,-30.44379 2.559549,0.0338 4.520163,14.83068 5.076567,29.54315 0.556404,14.71247 -0.277693,29.3405 1.448313,29.03658 2.067981,-0.36414 4.268424,-15.16671 4.741325,-29.88589 0.4729,-14.71918 -0.768496,-29.35497 -0.877715,-29.38553 0.416202,0.11647 1.711149,14.19418 1.975557,28.19246 0.264409,13.99827 -0.489524,27.91713 0.121259,27.71589 0.95594,-0.31496 2.27034,-12.95348 2.538666,-25.49094 0.268326,-12.53747 -0.495691,-24.97388 -0.274423,-24.88462 0.947377,0.38219 2.038759,13.68108 2.222371,26.73761 0.183611,13.05654 -0.505668,25.87072 0.620892,25.28349 1.476241,-0.76952 3.104153,-12.78792 3.886886,-24.38901 0.782738,-11.60109 0.773534,-22.78486 1.919068,-21.88512 2.49319,1.95823 3.54006,12.10653 3.66198,21.7692 0.12134,9.61634 -0.68127,18.60807 -0.13612,18.02155 0.94773,-1.01963 1.87952,-9.916 2.18674,-18.73203 0.30569,-8.77244 -0.0378,-17.33379 -0.14052,-17.46545 0.44486,0.57005 0.84839,8.57083 1.00428,16.09468 0.15614,7.53595 0.11257,14.55868 0.8992,13.23312 1.17867,-1.98621 1.71675,-8.28594 1.81013,-14.22364 0.0927,-5.89642 -0.25893,-11.3064 -0.25893,-11.3064 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/RoughHatches_multi_px_1_0_2.svg b/testfiles/lpe_tests/RoughHatches_multi_px_1_0_2.svg new file mode 100644 index 0000000..f369f3c --- /dev/null +++ b/testfiles/lpe_tests/RoughHatches_multi_px_1_0_2.svg @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250.00001" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3725" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="75.5;2147483646" + growth="0.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="6.0476189;1" + top_edge_variation="6.0476189;1" + bottom_tgt_variation="0.5;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1.6" + scale_tb="1" + top_smth_variation="0.6;2147483646" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1.6" + back_thickness="0.25" + lpeversion="1" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3721" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="20;1" + growth="3.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="7.35;1178034515" + top_edge_variation="6.45;1" + bottom_tgt_variation="0.4;1" + top_tgt_variation="0.6;2147483646" + scale_bf="1.4" + scale_bb="2" + scale_tf="1.7" + scale_tb="1.5" + top_smth_variation="0.7;680258645" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1.3" + stroke_width_bottom="1.6" + front_thickness="1.7" + back_thickness="0.65" + lpeversion="1" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect14" + is_visible="true" + direction="58.977559,85.996199 , 17.563646,0" + dist_rdm="75;1" + growth="0" + do_bend="true" + bender="58.977559,90.996199 , 5,0" + bottom_edge_variation="11.413526;1" + top_edge_variation="11.413526;1" + bottom_tgt_variation="0;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1" + scale_tb="1" + top_smth_variation="0;1" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1" + back_thickness="0.25" + lpeversion="1" /> + <inkscape:path-effect + effect="bspline" + id="path-effect12" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" + lpeversion="1" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 91.841889,90.217083 c 0,0 -0.119254,6.374408 -0.515537,13.130457 -0.397184,6.77142 -1.067763,13.87735 -1.937928,15.41786 -1.055241,1.86816 -1.353715,-7.10441 -1.906565,-17.13852 -0.554672,-10.067181 -1.369585,-21.08626 -2.937786,-23.476492 -1.728185,-2.634077 -2.417471,11.220069 -3.266717,26.023982 -0.848586,14.79243 -1.907217,30.50016 -3.028203,31.5158 -1.314502,1.19096 -1.368995,-15.1947 -1.648277,-32.02848 -0.279283,-16.833785 -0.806922,-34.115681 -1.315265,-34.717171 -0.699675,-0.827882 -0.731199,16.661456 -1.232123,34.475331 -0.500923,17.81387 -1.489176,35.95228 -2.145283,36.42253 -0.848784,0.60836 -0.523363,-18.64307 -0.899279,-38.40853 C 70.63301,81.668397 69.525222,61.38891 68.179543,59.941146 66.641429,58.286348 66.381437,77.487836 65.641826,97.241182 64.902215,116.99453 63.648578,137.29973 62.547705,137.85237 61.255885,138.50086 61.488678,115.006 60.773263,90.940219 60.057848,66.874439 58.352901,42.237733 56.700616,40.602521 54.853366,38.774359 55.02595,65.026372 54.48762,91.757529 53.949291,118.48869 52.65944,145.69899 52.34142,145.78741 51.833682,145.92857 52.710528,119.28552 52.445174,92.435235 52.179821,65.584947 50.755355,38.527421 50.049033,37.839631 49.147452,36.961706 49.880745,64.95749 49.42872,93.195178 48.976696,121.43287 47.318087,149.91246 46.562347,150.00215 45.618095,150.11422 46.392213,122.55698 46.068089,95.326991 45.743966,68.096998 44.349733,41.194244 43.683088,42.615266 42.842697,44.406645 43.346115,71.469964 42.80277,98.057998 42.259424,124.64603 40.70689,150.75878 40.021987,150.64901 39.150951,150.50941 39.811468,126.13948 39.439958,102.53536 39.069676,79.009284 37.760345,56.014884 36.35051,59.016586 c -1.469423,3.128571 -1.905028,25.851029 -2.772816,46.940264 -0.874966,21.2637 -2.209646,41.41757 -3.052068,40.28128 -1.019779,-1.3755 -0.836608,-19.0784 -1.01786,-36.10085 -0.181253,-17.022453 -0.691393,-33.364456 -1.325468,-32.018165 -0.79416,1.68619 -1.137444,14.083062 -1.483561,25.808855 -0.347593,11.77582 -0.706803,23.03063 -0.785189,22.68283 -0.245601,-1.08975 -0.04526,-14.23224 -0.12034,-26.36193 -0.07502,-12.120471 -0.383854,-23.255785 -0.729366,-20.285089 -0.501383,4.310862 -0.640759,14.360851 -0.731536,22.834849 -0.09242,8.62729 -0.13544,16.13859 -0.13544,16.13859 0,0 0.324542,-9.26507 0.53073,-18.64398 0.206192,-9.379112 0.290829,-18.872473 0.344331,-19.329459 0.233727,-1.996397 0.458174,8.946598 0.523246,20.665459 0.06465,11.64232 -0.03977,24.51044 0.290652,25.98156 0.527594,2.34897 1.174078,-9.47103 1.544882,-21.97878 0.371475,-12.5304 0.432559,-25.816485 0.761092,-26.512905 0.512479,-1.086342 0.943394,15.175921 1.112222,32.093515 0.168828,16.91759 0.04198,34.49052 1.178814,36.0255 1.314009,1.77421 2.944717,-18.8855 3.836396,-40.5616 0.884609,-21.504262 1.058324,-44.540424 2.055444,-46.659944 1.294954,-2.752609 2.517178,20.239501 2.866847,43.693544 0.35089,23.53592 -0.260714,47.7794 0.734289,47.93888 1.181115,0.18932 3.023823,-26.41724 3.575191,-53.272061 0.551367,-26.854825 -0.208846,-53.957919 0.168841,-54.761683 0.551717,-1.174119 1.856858,25.736093 2.15622,52.908089 0.299362,27.171995 -0.429421,54.605775 0.640605,54.478795 1.258556,-0.14935 3.178524,-28.37543 3.659113,-56.471448 0.48059,-28.096016 -0.466933,-56.061968 -0.08633,-55.691071 0.57572,0.561033 1.920774,27.636142 2.166859,54.52691 0.246084,26.890769 -0.591689,53.597199 0.04266,53.420869 0.824112,-0.22908 2.37292,-27.18212 2.937267,-53.749475 0.564347,-26.56736 0.176337,-52.749043 1.502673,-51.435414 1.521153,1.506579 3.148735,26.175237 3.84654,50.289151 0.697805,24.113918 0.506231,47.673088 1.925896,46.960698 1.610688,-0.80825 3.117052,-20.83741 3.874041,-40.38883 0.756989,-19.55142 0.793499,-38.625101 1.817606,-37.522394 1.216383,1.309741 2.24957,21.635261 2.610333,41.458244 0.360762,19.82298 0.07922,39.14342 1.056993,38.44299 1.170559,-0.83852 2.406935,-18.67507 2.921411,-36.24595 0.514476,-17.570877 0.321136,-34.876082 0.510419,-34.651911 0.380442,0.450563 0.835393,17.790901 1.101382,34.691631 0.265989,16.90074 0.366407,33.36187 1.810923,32.05402 1.674546,-1.51613 2.938806,-16.77112 3.799877,-31.28616 0.860014,-14.497228 1.322461,-28.110351 2.539213,-26.253622 1.439924,2.197286 2.186232,13.330384 2.73202,23.503902 0.543943,10.13914 0.893938,19.21006 2.081153,17.11111 1.392645,-2.46214 2.065253,-9.8146 2.336416,-16.60778 0.270477,-6.775976 0.13875,-12.940537 0.13875,-12.940537 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect12;#path-effect14" + inkscape:original-d="m 46.113094,33.928571 c 25.954629,25.198149 51.908995,50.39656 77.863096,75.595239 -34.77354,21.41838 -69.547354,42.83704 -104.321428,64.25595 1.764169,-31.49856 3.528042,-62.9963 5.291666,-94.494047" /> + <path + d="m 110.16612,205.78991 c 0,0 0.10468,4.62493 -0.13886,9.62551 -0.24494,5.02941 -0.83454,10.34656 -1.78752,11.87598 -1.81929,2.91977 -1.48045,-3.32559 -1.54289,-10.78981 -0.0631,-7.54172 -0.56837,-16.2313 -3.01713,-18.58752 -2.40543,-2.31455 -2.46037,7.14619 -2.85665,17.45724 -0.39609,10.30602 -1.238432,21.44722 -2.876479,22.46841 -2.76592,1.72433 -2.168121,-9.09785 -2.147677,-20.64073 0.02042,-11.52931 -0.6469,-23.73858 -3.07757,-24.72055 -2.434124,-0.98336 -2.161556,11.54896 -2.696738,24.44288 -0.535182,12.89391 -1.930135,26.14942 -4.033223,26.61241 -3.442206,0.7578 -2.317055,-12.81546 -2.409644,-26.59023 -0.09259,-13.77477 -1.434059,-27.75105 -5.609029,-27.79926 -3.965662,-0.0458 -3.711985,14.5187 -4.505014,28.87546 -0.793028,14.35675 -2.599094,28.50576 -6.107745,27.62897 -5.444117,-1.36043 -4.523776,-16.83609 -4.963237,-30.87472 -0.439829,-14.05036 -2.010286,-26.62848 -7.972135,-22.25251 -5.476513,4.01973 -6.765821,14.49247 -7.043413,23.80154 -0.279037,9.35748 0.465625,17.69867 0.465625,17.69867 0,0 -0.328457,-8.23904 0.172232,-17.3448 0.498242,-9.06127 1.822691,-19.12701 6.50857,-22.55541 5.673792,-4.1512 7.007656,8.31744 7.387231,22.21335 0.378411,13.85329 -0.28301,29.20736 5.34052,30.61388 4.338402,1.0851 6.622539,-12.984 7.478716,-27.31537 0.856178,-14.33138 0.241679,-28.92503 3.356439,-28.88906 3.849491,0.0445 4.96408,13.98209 5.000351,27.70098 0.03627,13.71888 -0.972015,27.21903 2.803444,26.38851 2.969275,-0.65317 4.812041,-13.65722 5.401709,-26.34037 0.589668,-12.68315 -0.02929,-25.04538 1.528543,-24.41492 2.092966,0.84704 2.55037,13.08637 2.482407,24.62694 -0.06803,11.55263 -0.549502,22.37031 2.562788,20.43434 2.590439,-1.61135 3.786219,-12.16592 4.231349,-22.08496 0.44383,-9.89011 0.16047,-18.98778 1.65806,-17.54069 2.10018,2.02936 2.41892,10.91269 2.44826,18.60062 0.029,7.59869 -0.18513,13.95252 1.99298,10.47671 1.85572,-2.96135 2.43687,-8.59872 2.46245,-13.59813 0.0254,-4.96792 -0.49672,-9.20336 -0.49672,-9.20336 z" + sodipodi:ry="30.238094" + sodipodi:rx="35.529762" + sodipodi:cy="216.86905" + sodipodi:cx="77.10714" + sodipodi:type="arc" + inkscape:path-effect="#path-effect3721" + id="path02" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + transform="translate(31.75,-19.654762)" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.264583" + id="path01" + transform="scale(0.5)" + inkscape:path-effect="#path-effect3725" + sodipodi:type="arc" + sodipodi:cx="77.10714" + sodipodi:cy="216.86905" + sodipodi:rx="35.529762" + sodipodi:ry="30.238094" + d="m 110.16612,205.78991 c 0,0 -0.0395,5.88159 -0.3419,11.88959 -0.30237,6.00737 -0.87548,12.13988 -1.17116,12.64045 -0.6485,1.09786 -0.57013,-5.83631 -0.74785,-13.27563 -0.17738,-7.42518 -0.65705,-15.31313 -1.23581,-16.05217 -0.72147,-0.92129 -0.72958,8.04207 -1.01122,17.34304 -0.28078,9.27239 -0.88251,18.79669 -0.93603,18.85444 -0.41058,0.44304 0.42336,-8.49758 0.27454,-18.05249 -0.14954,-9.60071 -1.28089,-19.67832 -3.9092,-21.73826 -1.953165,-1.5308 -2.30926,9.8236 -3.058175,21.72006 -0.747452,11.87322 -1.97894,24.21877 -2.621255,24.55407 -0.994981,0.51938 -0.282608,-12.26889 -0.502472,-25.29551 -0.219864,-13.02662 -1.406032,-26.29159 -2.483027,-26.72559 -1.044374,-0.42084 -0.625277,12.15054 -0.857582,24.83838 -0.232305,12.68785 -1.132413,25.49216 -1.268924,25.53718 -0.482331,0.15906 0.293156,-13.7419 -0.0096,-27.72068 -0.302729,-13.97879 -1.695578,-28.0354 -2.240107,-28.18767 -0.709959,-0.19853 0.187504,14.50871 -0.242187,29.32088 -0.42969,14.81218 -2.203522,29.7293 -3.459363,29.95054 -1.598434,0.2816 -0.742982,-14.34562 -1.340227,-29.05209 -0.597246,-14.70647 -2.660045,-29.4922 -5.344823,-29.52764 -2.039315,-0.0269 -1.844395,15.17613 -2.582459,30.36458 -0.738063,15.18846 -2.406677,30.36231 -3.11777,30.27699 -1.043498,-0.1252 0.195415,-14.89084 -0.176058,-29.44394 -0.371472,-14.5531 -2.318806,-28.89366 -5.057596,-28.16874 -2.065756,0.54678 -2.166255,14.44804 -3.005471,28.11468 -0.839216,13.66664 -2.382281,27.09867 -3.262039,26.707 -1.208774,-0.53815 -0.652066,-13.48373 -0.942162,-26.14734 -0.290096,-12.66361 -1.387864,-25.04525 -2.39813,-24.45553 -0.979675,0.57186 -0.822921,12.67447 -1.360555,24.5157 -0.537633,11.84123 -1.735945,23.4211 -2.368492,22.94747 -0.951262,-0.71228 -0.03533,-12.27886 -0.395441,-22.55596 -0.361418,-10.31442 -1.85281,-19.2274 -5.137769,-14.81907 -2.393085,3.21146 -3.359424,9.01225 -3.804784,13.9132 -0.448062,4.93069 -0.373488,9.05126 -0.373488,9.05126 0,0 0.329871,-4.3838 0.974266,-9.32053 0.640595,-4.90763 1.602496,-10.45792 3.237425,-12.64393 3.179417,-4.2511 4.577136,4.6234 4.909295,14.87244 0.331048,10.21476 -0.546341,21.70121 0.521723,22.50259 1.391256,1.04386 3.055695,-10.76129 3.630561,-22.85773 0.574866,-12.09643 0.02015,-24.48416 0.22826,-24.60544 0.891077,-0.51932 1.888408,11.83541 2.143674,24.46796 0.255266,12.63255 -0.269805,25.54293 1.05826,26.13491 1.651566,0.73618 3.653218,-12.79969 4.534462,-26.60438 0.881244,-13.80469 0.60091,-27.87821 1.882942,-28.2173 2.618082,-0.69247 4.461774,13.64067 4.792999,28.18194 0.331226,14.54128 -0.883744,29.29069 0.283129,29.43074 1.502653,0.18036 3.617302,-14.98821 4.400263,-30.19778 0.782962,-15.20957 0.227372,-30.46014 1.465774,-30.44379 2.559549,0.0338 4.520163,14.83068 5.076567,29.54315 0.556404,14.71247 -0.277693,29.3405 1.448313,29.03658 2.067981,-0.36414 4.268424,-15.16671 4.741325,-29.88589 0.4729,-14.71918 -0.768496,-29.35497 -0.877715,-29.38553 0.416202,0.11647 1.711149,14.19418 1.975557,28.19246 0.264409,13.99827 -0.489524,27.91713 0.121259,27.71589 0.95594,-0.31496 2.27034,-12.95348 2.538666,-25.49094 0.268326,-12.53747 -0.495691,-24.97388 -0.274423,-24.88462 0.947377,0.38219 2.038759,13.68108 2.222371,26.73761 0.183611,13.05654 -0.505668,25.87072 0.620892,25.28349 1.476241,-0.76952 3.104153,-12.78792 3.886886,-24.38901 0.782738,-11.60109 0.773534,-22.78486 1.919068,-21.88512 2.49319,1.95823 3.54006,12.10653 3.66198,21.7692 0.12134,9.61634 -0.68127,18.60807 -0.13612,18.02155 0.94773,-1.01963 1.87952,-9.916 2.18674,-18.73203 0.30569,-8.77244 -0.0378,-17.33379 -0.14052,-17.46545 0.44486,0.57005 0.84839,8.57083 1.00428,16.09468 0.15614,7.53595 0.11257,14.55868 0.8992,13.23312 1.17867,-1.98621 1.71675,-8.28594 1.81013,-14.22364 0.0927,-5.89642 -0.25893,-11.3064 -0.25893,-11.3064 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/RoughHatches_path_0_92_5.svg b/testfiles/lpe_tests/RoughHatches_path_0_92_5.svg new file mode 100644 index 0000000..efee85e --- /dev/null +++ b/testfiles/lpe_tests/RoughHatches_path_0_92_5.svg @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:test-threshold="5" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <metadata + id="metadata827"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview825" + showgrid="false" + inkscape:zoom="0.72693603" + inkscape:cx="240.02779" + inkscape:cy="561.25984" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect831" + is_visible="true" + direction="123.77993,186.39074 , 17.764881,0" + dist_rdm="75;1" + growth="0.7" + do_bend="true" + bender="123.77993,191.39074 , 5,0" + bottom_edge_variation="6.047619;97417894" + top_edge_variation="6.047619;3705154509" + bottom_tgt_variation="0.7;1529612775" + top_tgt_variation="0.4;3205262207" + scale_bf="1.5" + scale_bb="1" + scale_tf="1" + scale_tb="1" + top_smth_variation="0.4;2147483646" + bottom_smth_variation="0.3;1668228037" + fat_output="true" + stroke_width_top="1.5" + stroke_width_bottom="1.4" + front_thickness="1.2" + back_thickness="1.05" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect829" + is_visible="true" + direction="77.107138,211.86904 , 17.764881,0" + dist_rdm="75;1" + growth="0" + do_bend="true" + bender="77.107138,216.86904 , 5,0" + bottom_edge_variation="6.047619;1" + top_edge_variation="6.047619;50053117" + bottom_tgt_variation="0;1" + top_tgt_variation="0;1" + scale_bf="1.8" + scale_bb="1.5" + scale_tf="1.4" + scale_tb="1.4" + top_smth_variation="5;2375601532" + bottom_smth_variation="3;2147483646" + fat_output="true" + stroke_width_top="1.4" + stroke_width_bottom="1.6" + front_thickness="1.6" + back_thickness="0.25" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3725" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="75.5;3611439333" + growth="0.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="6.0476189;1" + top_edge_variation="6.0476189;1" + bottom_tgt_variation="0.5;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1.6" + scale_tb="1" + top_smth_variation="0.6;2147483646" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1.6" + back_thickness="0.25" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect3721" + is_visible="true" + direction="77.10714,211.86905 , 17.764881,0" + dist_rdm="20;2816289638" + growth="3.8" + do_bend="true" + bender="77.10714,216.86905 , 5,0" + bottom_edge_variation="7.35;3655386597" + top_edge_variation="6.45;1" + bottom_tgt_variation="0.4;1" + top_tgt_variation="0.6;3999515929" + scale_bf="1.4" + scale_bb="2" + scale_tf="1.7" + scale_tb="1.5" + top_smth_variation="0.7;680258645" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1.3" + stroke_width_bottom="1.6" + front_thickness="1.8" + back_thickness="0.65" /> + <inkscape:path-effect + effect="rough_hatches" + id="path-effect14" + is_visible="true" + direction="120.85256,65.249875 , 17.563646,0" + dist_rdm="75;2064111199" + growth="0" + do_bend="true" + bender="120.85256,70.249875 , 5,0" + bottom_edge_variation="11.413526;1" + top_edge_variation="11.413526;1" + bottom_tgt_variation="0;1" + top_tgt_variation="0;1" + scale_bf="1" + scale_bb="1" + scale_tf="1" + scale_tb="1" + top_smth_variation="0;1" + bottom_smth_variation="0;1" + fat_output="true" + stroke_width_top="1" + stroke_width_bottom="1" + front_thickness="1" + back_thickness="0.25" /> + <inkscape:path-effect + effect="bspline" + id="path-effect12" + is_visible="true" + weight="33.333333" + steps="2" + helper_size="0" + apply_no_weight="true" + apply_with_weight="true" + only_selected="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 153.71689,69.470766 c 0,0 -0.12097,6.419759 -0.32277,12.876858 -0.20214,6.468194 -0.47981,12.939737 -0.5553,13.099202 -0.26567,0.561125 -0.25391,-6.242511 -0.64588,-13.903992 -0.39324,-7.686353 -1.19098,-16.155936 -2.80064,-19.051063 -1.78414,-3.208944 -2.56294,8.62022 -3.34603,21.481875 -0.78494,12.891851 -1.58441,26.712414 -2.46739,27.637234 -1.02979,1.0786 -1.07865,-13.204405 -1.41427,-28.111525 -0.3362,-14.932723 -0.96494,-30.310893 -1.95117,-31.55064 -1.12268,-1.411279 -1.45413,14.662888 -2.06254,31.301921 -0.60855,16.643041 -1.49754,33.683974 -2.19829,34.226264 -0.82448,0.63804 -0.5922,-17.557494 -0.96641,-36.354152 -0.37485,-18.829084 -1.36265,-38.019801 -2.73622,-39.534242 -1.48856,-1.641217 -1.82007,16.585298 -2.54777,35.461717 -0.72763,18.87469 -1.85752,38.230677 -2.96198,38.839767 -1.19795,0.66064 -1.04432,-21.855992 -1.71099,-45.010843 -0.66808,-23.203942 -2.16221,-46.73897 -3.78055,-48.360567 -1.67935,-1.682725 -1.6023,23.55779 -2.11347,49.428569 -0.5106,25.841566 -1.61825,52.051981 -1.93669,52.162991 -0.42561,0.14836 0.42929,-25.470857 0.28945,-51.216135 -0.14027,-25.822006 -1.20623,-51.539891 -1.64678,-51.972505 -0.55716,-0.547119 0.20367,26.238476 -0.16247,53.200058 -0.36644,26.983372 -1.78854,54.077362 -2.48853,54.255982 -0.80425,0.20523 0.0149,-26.88163 -0.38854,-54.149829 -0.40401,-27.307779 -1.9553,-54.678143 -3.21662,-55.237824 -1.28149,-0.56863 -0.92201,27.160867 -1.33318,55.149552 -0.41063,27.952541 -1.68539,56.055831 -1.65485,56.054071 -0.15747,0.009 1.01955,-27.48959 0.85011,-54.50971 -0.16859,-26.884984 -1.58074,-53.696833 -2.54755,-51.63838 -0.9778,2.081847 -0.76777,29.422562 -1.26058,55.548891 -0.49661,26.328309 -1.69196,52.112159 -1.83167,52.090179 -0.25805,-0.0406 0.78453,-25.04654 0.79095,-49.741074 0.006,-24.570746 -0.94088,-49.201406 -1.56678,-47.872468 -0.74466,1.581093 -0.56378,23.650238 -1.219709,45.120538 C 99.156666,100.63513 97.741636,121.5599 96.487785,120.71896 95.144908,119.81831 95.133973,99.512489 94.75995,79.88257 94.386484,60.281923 93.657092,41.052133 93.007722,42.449894 92.26063,44.058001 92.136988,62.376919 91.61031,79.411535 91.081521,96.514432 90.154659,112.78845 89.401917,110.64816 88.52054,108.14212 88.348839,94.400268 88.183181,81.552757 88.016461,68.622838 87.847795,56.340031 87.847795,56.340031 c 0,0 0.107953,12.369499 0.239398,25.467765 0.130577,13.011681 0.29072,27.011884 1.283329,29.840364 1.205476,3.43505 2.431037,-13.330058 2.980731,-31.028511 0.550629,-17.72852 0.356721,-36.480581 0.677426,-37.169755 0.531854,-1.14292 1.177824,18.05082 1.534911,37.564325 0.357677,19.545701 0.420338,39.721851 1.885069,40.704741 1.7427,1.1694 3.444042,-20.25985 4.109641,-42.034214 0.66647,-21.802638 0.22763,-44.035208 0.50058,-44.613798 0.51038,-1.081895 1.36867,23.546173 1.34083,48.045801 -0.028,24.626991 -1.02201,49.507641 -0.63994,49.567741 0.64093,0.10082 2.12195,-26.17949 2.62692,-52.773992 0.50518,-26.605941 -0.0658,-53.560396 0.54796,-54.865078 0.85401,-1.815318 2.17517,25.008785 2.31946,51.829398 0.14504,26.960072 -0.98631,54.335022 -0.7035,54.318692 0.5599,-0.0323 2.01222,-28.01244 2.44732,-55.906431 0.43501,-27.888851 -0.22769,-55.676162 0.62608,-55.297192 1.13351,0.50314 2.60344,27.889815 2.98678,55.219684 0.38279,27.290379 -0.39647,54.405469 0.53441,54.167969 1.2039,-0.30715 2.88664,-27.14722 3.27907,-53.97031 0.39212,-26.801829 -0.58341,-53.522893 -0.54559,-53.48573 0.30989,0.304536 1.298,26.045704 1.41956,51.910046 0.12119,25.788203 -0.69402,51.471164 -0.14144,51.278594 0.82421,-0.28723 2.19103,-26.238834 2.72617,-51.905547 0.53582,-25.699464 0.24549,-50.845715 1.40198,-49.686013 1.48709,1.491234 2.90498,25.062084 3.55598,48.315767 0.64963,23.205024 0.53808,45.786483 1.86388,45.055643 1.61388,-0.88965 2.99662,-19.964374 3.74051,-38.626909 0.74407,-18.667116 0.853,-36.748573 1.82628,-35.674575 1.24423,1.372998 2.15836,20.613872 2.51866,39.502952 0.35968,18.856862 0.17207,37.123002 1.12571,36.385442 1.2151,-0.93977 2.3518,-17.66204 2.97261,-34.044971 0.62076,-16.381714 0.72715,-32.252498 1.33852,-31.483214 0.85808,1.07969 1.41552,16.525773 1.73965,31.532243 0.32358,14.980828 0.41984,29.344092 1.58,28.129922 1.39996,-1.46513 2.44212,-14.833979 3.23546,-27.361741 0.79183,-12.504 1.3415,-24.052246 2.61566,-21.757368 1.48172,2.6687 2.21222,11.274251 2.59818,19.087067 0.38483,7.789997 0.42778,14.701494 0.82304,13.867988 0.59946,-1.2641 0.87789,-7.978491 0.95302,-14.424996 0.0749,-6.431732 -0.0552,-12.551064 -0.0552,-12.551064 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect12;#path-effect14" + inkscape:original-d="m 107.98809,13.182247 c 25.95463,25.198149 51.909,50.39656 77.8631,75.595239 -34.77354,21.418384 -69.54735,42.837044 -104.321428,64.255954 1.764169,-31.49856 3.528042,-62.996304 5.291666,-94.494051" /> + <path + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + d="m 156.93039,178.0181 c 0,0 0.22856,5.24562 -0.003,11.02344 -0.23304,5.80616 -0.92588,12.05852 -2.3515,14.21427 -0.86671,1.31059 -0.94125,-7.5054 -1.60355,-17.27773 -0.66636,-9.83219 -1.9305,-20.38144 -3.88906,-22.83669 -1.92698,-2.41566 -1.79751,10.04075 -2.34253,23.42643 -0.54599,13.40972 -1.79624,27.55833 -3.80836,28.64729 -1.15719,0.62627 -0.86134,-14.87468 -1.40728,-30.74497 -0.54637,-15.88313 -1.93947,-31.8967 -2.80494,-32.35988 -0.81933,-0.43849 0.23447,16.29148 0.0167,33.22651 -0.21815,16.96345 -1.6411,34.04673 -3.00526,34.45692 -0.7838,0.23569 0.0186,-17.0644 -0.66065,-34.49226 -0.6798,-17.44283 -2.76126,-34.96851 -4.64069,-35.25888 -1.73245,-0.26767 -1.0061,16.93256 -1.51029,34.24642 -0.50383,17.30153 -2.24097,34.67535 -4.51447,34.69314 -1.31144,0.0103 -1.08922,-16.1904 -2.05424,-32.19769 -0.96358,-15.98339 -3.10867,-31.84126 -5.34825,-31.02593 -2.12345,0.77305 -2.07306,17.07407 -2.62945,33.01296 -0.5568,15.95073 -1.71324,31.69931 -2.58648,31.42671 -0.47679,-0.14884 0.29745,-16.10761 -0.11201,-31.84717 -0.40836,-15.69748 -1.91217,-31.30198 -3.04152,-30.53192 -1.03141,0.70328 -0.52901,14.99494 -0.92202,28.69503 -0.39379,13.72723 -1.67028,27.07771 -3.49539,26.03437 -1.0686,-0.61088 -1.03441,-13.44195 -1.59452,-25.67781 -0.56036,-12.24141 -1.70465,-24.07708 -2.900908,-22.72489 -1.14707,1.29658 -1.096225,12.98612 -1.626447,23.59501 -0.533219,10.66884 -1.628668,20.47811 -3.399707,18.31391 -1.095906,-1.33919 -1.514587,-8.80327 -1.828783,-15.84015 -0.315445,-7.06484 -0.534412,-13.78873 -0.534412,-13.78873 0,0 -0.0398,6.7927 0.13846,14.0798 0.177468,7.25474 0.575699,15.10217 2.162958,17.04908 2.33042,2.85847 3.788007,-7.28805 4.355914,-18.32293 0.568002,-11.0367 0.156534,-22.96725 0.794449,-23.68599 0.703186,-0.79228 1.527996,10.93109 2.047466,22.97947 0.51946,12.04808 0.72656,24.61997 2.30384,25.52323 2.40259,1.37588 4.04171,-12.19549 4.47548,-26.12966 0.43445,-13.95602 -0.42388,-28.34039 0.10416,-28.69974 0.62869,-0.42785 1.80738,15.12529 2.16541,30.71969 0.35847,15.61337 -0.10727,31.47514 0.80243,31.7594 1.45927,0.45598 2.97913,-15.42436 3.58338,-31.49932 0.60381,-16.06318 0.2854,-32.48075 1.82413,-33.04035 1.73068,-0.62941 3.55978,15.25734 4.47132,31.21914 0.91296,15.98659 0.90502,32.11887 2.74332,32.10448 2.87326,-0.0225 4.96341,-17.37442 5.52089,-34.67632 0.55745,-17.30118 -0.50135,-34.55019 0.70809,-34.36324 1.34862,0.20846 3.1263,17.83941 3.75225,35.36819 0.62631,17.53863 0.10456,34.85481 1.34238,34.48295 1.97747,-0.59406 3.73863,-17.53607 4.0109,-34.39475 0.27182,-16.83056 -1.01699,-33.49345 -0.82153,-33.38868 0.31917,0.17108 1.42541,16.35653 1.92491,32.41092 0.49908,16.04121 0.39762,31.71403 2.10056,30.79393 2.63209,-1.42212 4.20092,-15.19983 4.79526,-28.34847 0.59376,-13.13577 0.2341,-25.4315 1.51081,-23.82525 1.39785,1.75865 2.40147,12.7438 3.03595,22.98903 0.63016,10.17555 0.90743,19.37885 2.33815,17.22539 2.06939,-3.11477 2.77115,-9.7368 2.85454,-15.68153 0.083,-5.91358 -0.44648,-11.05618 -0.44648,-11.05618 z" + id="path02" + inkscape:path-effect="#path-effect831" + inkscape:original-d="m 159.30969,191.39075 c 0,16.70004 -15.90722,30.23809 -35.52976,30.23809 -19.62254,0 -35.529756,-13.53805 -35.529759,-30.23809 -4e-6,-16.70004 18.818979,-39.70134 38.441519,-39.70134 19.62255,1e-5 32.618,23.0013 32.618,39.70134 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <path + transform="matrix(0.5,0,0,0.5,1.0919118,40.400735)" + style="fill:#ffff00;stroke:#ff0000;stroke-width:0.26458332" + d="m 110.16612,205.78991 c 0,0 0.38212,5.06364 0.22426,10.748 -0.15892,5.72253 -0.86073,11.95056 -2.51222,14.47061 -1.67602,2.55747 -1.53187,-5.14222 -1.89065,-13.92974 -0.36155,-8.85549 -1.2625,-18.66581 -3.54346,-20.66944 -2.576251,-2.26303 -2.28425,8.85459 -2.592488,20.87159 -0.309193,12.05434 -1.258119,24.81925 -3.447242,26.03749 -1.905203,1.06023 -1.500997,-12.21647 -1.738845,-25.92887 -0.237968,-13.71933 -1.134463,-27.67336 -1.921483,-28.00236 -1.033994,-0.43225 -0.04788,13.44313 -0.174373,27.52707 -0.126761,14.11358 -1.30856,28.3468 -2.607523,28.77843 -1.230245,0.40879 -0.316426,-14.02657 -0.625522,-28.74151 -0.309,-14.71031 -1.850433,-29.56468 -3.783213,-29.9708 -2.123151,-0.44612 -1.325546,13.56608 -1.508018,27.77765 -0.182367,14.20332 -1.353061,28.54085 -3.455946,28.70415 -1.892982,0.14699 -1.295064,-13.65567 -1.731201,-27.47984 -0.435807,-13.81375 -1.905796,-27.64554 -4.184495,-27.50464 -2.465768,0.15247 -2.216178,14.3877 -2.491626,28.54405 -0.275301,14.14881 -1.073005,28.27226 -1.732116,28.16348 -0.754248,-0.12448 0.264123,-15.1855 0.01141,-30.16459 -0.252391,-14.95994 -1.67847,-29.8954 -2.66077,-29.67305 -1.229757,0.27837 -0.0593,15.5239 -0.178856,30.59318 -0.11935,15.04389 -1.419394,29.98766 -2.853524,29.53558 -1.286093,-0.40541 -0.646498,-14.5199 -0.877842,-28.34511 -0.231342,-13.82502 -1.324627,-27.52557 -2.343392,-27.10214 -1.188814,0.4941 -0.476318,14.17851 -0.659997,27.46372 -0.183751,13.2904 -1.250205,26.37565 -2.532594,25.6974 -1.225514,-0.64817 -0.608582,-13.49773 -0.923701,-25.69424 -0.315581,-12.21437 -1.541243,-23.97679 -3.483597,-22.53993 -2.177081,1.6105 -2.108915,13.02969 -2.427549,23.43456 -0.319933,10.44731 -0.996259,20.08188 -2.558972,18.3353 -1.465483,-1.63791 -1.52456,-10.67639 -1.749628,-18.79298 -0.226338,-8.16234 -0.598968,-15.5906 -1.43908,-14.23682 -1.124733,1.81243 -1.360373,7.35795 -1.464574,12.25223 -0.104747,4.91995 -0.07076,9.29756 -0.251997,8.90256 -0.390058,-0.85013 -0.402995,-5.93817 -0.528311,-10.31508 -0.126687,-4.42473 -0.356326,-8.21586 -0.801033,-6.71132 -1.511999,5.11541 -0.550941,14.56731 -0.550941,14.56731 0,0 0.192538,-3.20668 0.334139,-6.43067 0.141608,-3.22417 0.231679,-6.466 0.252869,-6.53664 0.335931,-1.11995 0.477369,2.50247 0.584168,6.70896 0.105805,4.16733 0.169378,9.00424 0.675876,10.11744 0.929237,2.04231 1.35373,-2.86027 1.485248,-8.46806 0.130335,-5.55734 -0.04775,-11.90038 0.318684,-12.48673 0.728007,-1.16491 0.996932,6.15051 1.189701,14.18082 0.191743,7.98755 0.288306,16.87787 1.866189,18.64898 2.299151,2.5807 3.454891,-7.26951 3.826575,-18.02808 0.369833,-10.70497 -0.08145,-22.50029 1.330999,-23.54178 1.828852,-1.34853 2.932607,10.33248 3.197978,22.45857 0.264994,12.10889 -0.330507,24.86331 1.013523,25.5756 2.045824,1.08422 3.588618,-12.1091 3.830018,-25.5337 0.241905,-13.45271 -0.917528,-27.22104 -0.420075,-27.42742 0.898862,-0.37292 1.863129,13.25821 2.037779,27.01111 0.174654,13.75321 -0.449714,27.79206 0.957352,28.23614 2.209902,0.69746 3.983089,-14.28366 4.166356,-29.38422 0.183566,-15.1252 -1.332899,-30.4438 -0.887393,-30.54454 0.860125,-0.19451 2.15263,14.68058 2.343382,29.57859 0.190995,14.91706 -0.816606,29.9142 0.06051,30.05905 1.446309,0.23885 2.703538,-13.85863 3.039205,-28.00263 0.335838,-14.15123 -0.253515,-28.40168 1.416312,-28.5049 2.154537,-0.13318 3.498087,13.65345 3.87683,27.41773 0.379028,13.77463 -0.206358,27.52356 1.813687,27.36675 2.906626,-0.22564 4.522194,-14.42792 4.766129,-28.52273 0.243822,-14.08821 -0.949635,-28.04914 0.429565,-27.75907 1.803465,0.37929 3.216664,15.20519 3.464993,29.88275 0.248404,14.682 -0.657729,29.08129 0.703474,28.62956 2.122075,-0.70424 3.731199,-14.71555 3.917041,-28.6242 0.18545,-13.87938 -1.113076,-27.56827 -0.905406,-27.4813 0.656299,0.27486 1.430689,14.21552 1.611969,27.91625 0.181184,13.69346 -0.213081,26.94825 1.827708,25.81498 3.024906,-1.67977 4.381895,-14.02982 4.745265,-25.7311 0.36246,-11.67214 -0.23719,-22.49609 1.4844,-20.97798 2.14185,1.8887 2.94219,11.74928 3.26571,20.63485 0.3209,8.81385 0.20405,16.52772 2.02559,13.76433 2.51688,-3.81826 3.21542,-10.39441 3.16867,-16.14356 -0.0464,-5.70989 -0.82391,-10.47505 -0.82391,-10.47505 z" + id="path01" + inkscape:path-effect="#path-effect829" + inkscape:original-d="m 112.6369,216.86905 a 35.529762,30.238094 0 0 1 -35.52976,30.23809 35.529762,30.238094 0 0 1 -35.529763,-30.23809 35.529762,30.238094 0 0 1 35.529763,-30.2381 35.529762,30.238094 0 0 1 35.52976,30.2381 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Roughen_path_1_1.svg b/testfiles/lpe_tests/Roughen_path_1_1.svg new file mode 100644 index 0000000..d677489 --- /dev/null +++ b/testfiles/lpe_tests/Roughen_path_1_1.svg @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.2-dev (7f462d36a2, 2021-04-25, custom)" + sodipodi:docname="1.svg" + inkscape:test-threshold="2" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs2"> + <inkscape:path-effect + effect="roughen" + id="path-effect1112" + is_visible="true" + method="size" + max_segment_size="10" + segments="2" + displace_x="10;1" + displace_y="10;1" + global_randomize="1;1234567891" + handles="along" + shift_nodes="true" + fixed_displacement="false" + spray_tool_friendly="false" + lpeversion="1.1" /> + <inkscape:path-effect + effect="roughen" + id="path-effect827" + is_visible="true" + method="size" + max_segment_size="10" + segments="2" + displace_x="10;1" + displace_y="10;1" + global_randomize="1;1" + handles="smooth" + shift_nodes="true" + fixed_displacement="false" + spray_tool_friendly="false" + lpeversion="1.1" /> + <inkscape:path-effect + effect="roughen" + id="path-effect822" + is_visible="true" + method="segments" + max_segment_size="10" + segments="2" + displace_x="10;1" + displace_y="10;1" + global_randomize="1;1" + handles="rand" + shift_nodes="true" + fixed_displacement="false" + spray_tool_friendly="false" + lpeversion="1.1" /> + <inkscape:path-effect + effect="roughen" + id="path-effect817" + is_visible="true" + method="segments" + max_segment_size="13" + segments="2" + displace_x="10.3;2147483646" + displace_y="10.3;1" + global_randomize="1.2;1" + handles="along" + shift_nodes="true" + fixed_displacement="false" + spray_tool_friendly="false" + lpeversion="1.1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.72693603" + inkscape:cx="0" + inkscape:cy="584.64567" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pagecheckerboard="0" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#ff00ff;stroke-width:0.861994" + id="path815" + inkscape:path-effect="#path-effect817" + sodipodi:type="arc" + sodipodi:cx="-34.477993" + sodipodi:cy="107.96002" + sodipodi:rx="48.75893" + sodipodi:ry="36.607193" + sodipodi:start="5.8708621" + sodipodi:end="5.6153539" + sodipodi:arc-type="slice" + d="m 9.8550857,93.327815 c 5.1535803,8.845985 7.9581653,15.032895 3.9468233,23.515975 -4.0113412,8.48309 -21.6611647,20.61084 -33.090573,25.03682 -11.429409,4.42599 -20.658878,2.1518 -30.400428,-0.65873 -9.741549,-2.81054 -18.447162,-7.97777 -25.059903,-16.25871 -6.612741,-8.28094 -8.633789,-17.46816 -6.481718,-25.810731 2.152071,-8.342569 6.556573,-14.76641 17.141751,-20.249595 10.585178,-5.483186 25.847557,-11.34252 38.183944,-10.270226 12.336387,1.072294 18.1007928,10.522389 26.06491418,18.103302 L -17.185075,97.367208 -36.427348,109.0373 l 23.045031,-7.77742 z" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:transform-center-x="2.7892134" + inkscape:transform-center-y="-1.8103274" + d="m 65.325646,245.72756 -18.793714,-8.68606 -7.450177,-0.72585 -17.075591,6.34757 -10.451446,13.449 -3.9135929,-22.25595 -1.4442631,-14.01132 -3.8027598,-6.48269 -21.8951062,-14.17403 15.4285801,-2.22033 14.8334869,-2.81269 3.468131,-19.46523 11.004904,-7.8771 4.02904,13.97637 -1.304365,5.04906 c 4.433361,-40.82298 11.704042,-39.91402 20.192984,-28.5496 7.413655,8.83476 16.425108,30.11512 21.918903,31.12707 l -9.22847,5.85664 -8.582108,17.09595 5.429724,16.16412 z" + id="path819" + inkscape:path-effect="#path-effect822" + inkscape:original-d="M 63.547997,244.33138 33.28723,235.19413 8.6048888,254.94218 7.9438408,223.33891 -18.464932,205.9671 l 29.852216,-10.39465 8.360822,-30.48442 9.854496,27.8447 c 8.694757,-84.6968 30.306935,-3.64473 40.832285,-4.13426 L 52.393749,214.7546 Z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:transform-center-x="-1.3064587" + inkscape:transform-center-y="-3.5501659" + d="m 150.58687,229.62773 c -1.03095,2.92112 -7.6666,-8.66599 -8.65592,-6.0602 -0.64382,1.69576 -2.00447,-0.0571 -3.56058,-0.98911 -2.89916,-1.73641 -4.19042,-2.65233 -7.05469,-4.44569 -2.16176,-1.35352 -5.67028,-3.4295 -8.42959,-5.26199 -2.33356,-1.54974 -4.93658,2.5009 -7.59216,3.39259 -2.68496,0.90157 -6.33148,-4.76531 -8.94963,-3.68499 -3.65345,1.50752 -5.44613,5.11752 -8.208653,7.94396 -1.794981,1.83652 -3.713748,4.23652 -6.287438,4.88258 -2.67146,0.67061 0.997762,-5.6016 1.925677,-8.19493 0.911144,-2.54646 3.957576,-3.43244 4.657994,-6.04473 0.837067,-3.12194 -1.237267,-13.54604 -1.036707,-16.77202 0.15336,-2.46678 2.866417,0.58382 3.435197,-0.41979 1.40599,-2.48086 -4.131308,-4.66492 -5.982287,-6.8341 -1.736786,-2.03535 -4.192184,-7.81918 -5.948419,-9.83778 -1.218919,-1.40101 5.025361,-0.74702 3.514076,-1.8262 -1.620188,-1.15694 -11.985995,-2.61763 -10.837372,-6.70786 0.708732,-2.52379 13.886773,4.62111 11.277006,4.37431 -1.219705,-0.11535 0.582445,-0.99388 1.696587,-0.4843 3.109295,1.42212 8.438749,5.07762 11.433649,6.72707 1.41469,0.77915 1.51936,-0.99452 3.00076,-0.3512 1.94296,0.84377 9.10129,5.09004 14.09589,6.37112 3.11658,0.79938 -0.1131,-7.18832 0.82149,-10.26706 0.87373,-2.87829 0.47983,-8.10374 0.87498,-11.08566 0.33284,-2.5117 -0.12144,-6.19533 0.33893,-8.68682 0.52616,-2.84758 -0.54784,-10.17319 0.15361,-12.98273 0.6431,-2.57588 3.47275,-4.74915 3.62526,-7.53102 0.16127,-2.94178 14.14445,9.07109 11.19825,9.07444 -1.47421,0.002 -1.4267,-4.51433 -0.56288,-3.31971 3.10365,4.29212 5.5336,10.26983 8.08066,14.9139 1.45039,2.64451 3.23136,5.37897 5.64179,7.28058 2.14213,1.68994 14.76898,3.4401 12.27881,4.55532 -1.38589,0.62067 -0.13604,2.98165 1.09194,3.87495 1.57256,1.14397 4.1724,3.0303 6.62762,3.42859 2.79885,0.45402 -4.37923,3.57557 -6.38729,5.57741 -2.01487,2.00863 -5.02499,2.90786 -7.13131,4.82036 -2.12512,1.92958 -3.90084,4.20766 -5.81656,6.34527 -1.61999,1.80762 -0.71356,5.68253 1.2689,6.95926 2.29186,1.476 0.85169,6.30489 -0.38448,8.73452 -1.16115,2.2822 -1.08499,5.05636 -1.46307,7.5889 -0.39942,2.67543 4.65982,6.14505 4.23843,8.8171 -0.36155,2.29259 -5.95752,3.20454 -6.98847,6.12566 z" + id="path824" + inkscape:path-effect="#path-effect827" + inkscape:original-d="m 150.86519,230.7874 -28.19425,-17.99448 -30.807167,13.02441 8.401257,-32.37493 -21.906893,-25.2746 39.221333,16.40888 11.43316,-47.06818 22.42392,24.57854 22.3879,14.1225 -25.82627,21.25373 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <g + id="g1110" + inkscape:path-effect="#path-effect1112" + transform="translate(-31.051551,41.075428)"> + <path + id="path829" + d="m 186.02329,59.000759 c 0,2.692882 -3.05496,2.674766 -3.51982,5.796848 -1.64269,1.582786 4.27625,7.430738 3.19702,11.068268 4.42409,3.915847 -5.11913,6.696583 -8.18476,9.63009 -3.54515,1.173806 -4.12632,3.113319 -6.11495,4.473951 -2.39667,1.63982 -4.69753,2.945472 -7.45257,2.945472 -2.48761,0 -2.52506,0.488649 -4.65967,-1.042496 -0.30855,-0.486688 -6.32825,-5.890983 -8.56064,-9.368074 -2.73958,-3.405699 1.11532,-4.610869 -0.0379,-7.167201 2.25703,-3.465859 -3.33492,-7.187118 -5.02318,-10.871728 -1.30027,-2.941775 -2.57715,-3.593888 -3.57256,-6.435702 -1.01677,-2.902806 -1.02275,-7.473634 -1.02275,-9.61884 0,-2.692882 0.60898,-4.066138 1.44886,-6.532091 1.07808,-1.454307 -0.41332,-6.555181 1.34286,-8.922572 -0.96317,-3.596571 1.27176,-7.357499 4.17139,-8.861491 -0.208,-4.502836 10.94943,-1.358748 14.96263,-1.130827 3.03049,0.172109 2.02239,0.620128 4.35767,0.620128 2.98513,0 6.26801,0.926823 8.30787,2.368774 2.75684,1.466359 3.89858,3.610467 5.06784,5.883998 1.67806,2.708682 4.52891,10.509556 5.05846,13.413519 2.80287,7.075626 -1.07122,-2.632786 -1.21628,-1.493611 -0.35907,2.819928 1.45053,11.319974 1.45053,15.243585 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 184.3021,57.896328 c 0,13.464407 -5.3977,35.318133 -20.32337,35.318132 -14.92566,10e-7 -23.74956,-32.025352 -23.74956,-45.489759 0,-13.464407 12.09964,-24.379465 27.0253,-24.379465 14.92566,0 17.04763,21.086685 17.04763,34.551092 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <path + id="path831" + d="m 253.91962,84.304939 c 0,3.783603 0.7859,8.21202 0.36726,11.729359 -0.30211,3.676129 2.99094,11.383242 1.96867,14.128092 2.80873,8.11367 -6.53007,3.8385 -10.21878,4.05541 -2.35666,0.13858 -4.6566,0.22726 -6.86767,0.22726 -2.25451,0 -6.50624,-1.94407 -8.8427,-2.99598 -3.64357,-2.15195 -4.10128,-2.54208 -5.66184,-3.73641 -2.79659,-2.36998 -9.0618,-7.01029 -10.59817,-9.15432 -6.52043,-5.482067 -2.27568,-4.006764 -2.07532,-5.677837 0.27004,-2.252221 1.80459,-4.358885 1.80459,-8.231183 0,-3.783603 0.33567,-11.775326 1.38153,-15.042836 0.47701,-6.647602 5.67749,-0.835219 6.82439,-2.370221 5.93756,0.689712 3.45785,-4.854316 5.26928,-6.683891 1.78265,-1.800495 5.67973,-2.574362 8.90924,-2.574361 2.81813,-10e-7 11.23612,4.119635 13.50601,5.448666 6.25293,3.628398 0.27988,0.148138 0.62657,0.400224 2.83887,2.094465 5.09196,6.454859 5.30103,11.05781 0.13424,2.955352 -1.69409,5.245933 -1.69409,9.420218 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 254.75595,84.766365 c 0,15.134413 -2.58672,29.951075 -13.85925,29.951065 -11.27253,1e-5 -26.96219,-14.816652 -26.96219,-29.951065 0,-15.134412 9.13819,-27.403277 20.41072,-27.403273 11.27253,-4e-6 20.41072,12.268861 20.41072,27.403273 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ruler_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Ruler_multi_mm_1_0_2.svg new file mode 100644 index 0000000..935ad91 --- /dev/null +++ b/testfiles/lpe_tests/Ruler_multi_mm_1_0_2.svg @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="ruler" + id="path-effect21" + lpeversion="1" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" /> + <inkscape:path-effect + effect="ruler" + id="path-effect16" + is_visible="true" + lpeversion="1" + unit="px" + mark_distance="10" + mark_length="20" + minor_mark_length="10" + major_mark_steps="8" + shift="5" + offset="0" + mark_dir="right" + border_marks="end" /> + <inkscape:path-effect + effect="ruler" + id="path-effect12" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + lpeversion="1" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-94.285714" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.676971" + id="path10" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="76.154556" + sodipodi:cy="82.845825" + sodipodi:rx="44.22995" + sodipodi:ry="38.88673" + d="m 120.38451,82.845825 c 0,10.313402 -4.65993,20.204395 -12.95466,27.497075 -8.294721,7.29267 -19.544782,11.38966 -31.275294,11.38966 -11.730512,0 -22.980573,-4.09699 -31.275297,-11.38966 -8.294725,-7.29268 -12.954653,-17.183673 -12.954653,-27.497075 0,-10.313402 4.659928,-20.204394 12.954653,-27.49707 8.294724,-7.292677 19.544785,-11.38966 31.275297,-11.38966 11.730512,0 22.980573,4.096983 31.275294,11.38966 8.29473,7.292676 12.95466,17.183668 12.95466,27.49707 h 3.70416 m -4.11231,5.270633 1.83006,0.284753 m -3.0385,4.861854 1.76588,0.558467 m -3.7293,4.350302 1.66463,0.811926 m -4.31542,3.76281 1.5333,1.03885 m -4.79039,3.12654 2.75856,2.47208 m -6.53555,1.22893 1.20924,1.40283 m -5.42037,1.79609 1.0286,1.54019 m -5.592287,1.13234 0.841333,1.64996 m -5.681687,0.48148 0.6502,1.7342 m -5.697084,-0.15218 0.913943,3.58964 m -6.10217,-2.56137 0.262707,1.83336 m -5.530769,-1.36087 0.068,1.85084 m -5.35656,-1.93484 -0.126799,1.84774 m -5.123485,-2.48813 -0.321415,1.82398 m -4.830766,-3.0197 -1.030895,3.55782 m -3.960718,-5.30629 -0.708182,1.71134 m -4.056299,-4.00723 -0.898375,1.61961 m -3.567154,-4.45297 -1.083986,1.50173 m -3.004922,-4.8553 -1.261913,1.35565 m -2.367296,-5.20153 -2.855487,2.35945 m -0.227584,-6.65509 -1.575666,0.97339 m -0.875728,-5.657877 -1.698702,0.737986 m -0.04308,-5.729594 -1.789443,0.477606 m 0.819044,-5.67429 -1.84131,0.199475 m 1.679347,-5.483387 -3.700126,-0.17296 m 4.352981,-5.073018 -1.81495,-0.369012 m 3.257249,-4.717095 -1.738924,-0.637461 m 3.917748,-4.179682 -1.627812,-0.883426 m 4.470554,-3.574714 -1.48887,-1.10158 m 4.912074,-2.928561 -2.658733,-2.579145 m 6.575669,-0.97358 -1.155626,-1.447322 m 5.481528,-1.594752 -0.97262,-1.576142 m 5.627549,-0.934255 -0.783947,-1.677987 m 5.693788,-0.288252 -0.592032,-1.754911 m 5.688256,0.339723 -0.796809,-3.61745 m 6.015487,2.756809 -0.203959,-1.840818 m 5.484403,1.536277 -0.0092,-1.85206 m 5.29241,2.104069 0.185581,-1.842762 m 5.041484,2.650952 0.380073,-1.812666 m 4.730381,3.175614 1.147617,-3.521907 m 3.782668,5.436355 0.765938,-1.686284 m 3.916134,4.145738 0.955,-1.586876 m 3.40529,4.5795 1.13868,-1.460691 m 2.82042,4.966411 1.31349,-1.305744 m 2.16003,5.292648 2.94917,-2.241263 m -0.048,6.661624 1.61577,-0.905265 m 0.62906,5.692041 1.72983,-0.661749 m -0.21536,5.726865 1.80944,-0.395108 m -1.0805,5.631069 1.8486,-0.113474 m -1.78433,2.209073 h 3.70416" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.676971" + id="path14" + sodipodi:sides="5" + sodipodi:cx="43.204727" + sodipodi:cy="176.35211" + sodipodi:r1="45.625423" + sodipodi:r2="22.81271" + sodipodi:arg1="0.56273722" + sodipodi:arg2="1.1910558" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 81.794617,200.69343 -30.133686,-3.15377 -19.681238,23.0355 -6.312414,-29.63341 -27.989895,-11.59961 26.2324,-15.16069 2.382532,-30.20444 22.524929,20.26358 29.462381,-7.06776 -12.311229,27.68427 15.82622,25.83633 0.275407,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.275407,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.550812,-5.26293 m -3.182273,4.98752 0.275406,-2.63146 m -2.906866,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.275406,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35605 0.275407,-2.63146 m -2.906867,2.35606 0.275406,-2.63146 m -2.406043,3.6109 -2.011602,-1.71869 m 0.292914,3.73029 -4.023205,-3.43737 m 2.304517,5.44897 -2.011603,-1.71868 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292915,3.73029 -2.011603,-1.71868 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292914,3.73029 -2.011602,-1.71869 m 0.292914,3.73029 -4.023205,-3.43737 m 2.304517,5.44898 -2.011602,-1.71869 m 0.406588,3.28245 2.587774,-0.55124 m -3.139013,-2.03654 2.587773,-0.55123 m -3.139012,-2.03654 2.587773,-0.55124 m -3.139012,-2.03653 2.587773,-0.55124 m -3.139012,-2.03653 2.587773,-0.55124 m -3.139012,-2.03654 2.587773,-0.55124 m -3.139013,-2.03653 5.175546,-1.10248 m -5.726785,-1.48529 2.587773,-0.55124 m -3.139012,-2.03654 2.587773,-0.55124 m -3.139012,-2.03653 2.587773,-0.55124 m -3.139012,-2.03653 2.587773,-0.55124 m -3.139013,-2.03654 2.587773,-0.55124 m -4.362001,-1.01911 1.01295,-2.44425 m -3.457202,1.4313 1.012951,-2.44425 m -3.457202,1.4313 2.0259,-4.8885 m -4.470152,3.87555 1.01295,-2.44425 m -3.457201,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.4572018,1.4313 1.0129498,-2.44425 m -3.4572014,1.4313 1.0129501,-2.44425 m -3.4572017,1.4313 1.0129501,-2.44425 m -3.4572018,1.4313 1.0129501,-2.44425 m -3.45720173,1.4313 2.02590023,-4.8885 m -3.5480538,3.81499 1.3239255,2.29078 m 0.96685067,-3.6147 1.32392543,2.29077 m 0.9668507,-3.6147 1.3239255,2.29078 m 0.9668507,-3.6147 1.3239254,2.29077 m 0.9668507,-3.6147 1.3239255,2.29078 m 0.9668507,-3.61471 1.3239251,2.29078 m 0.966851,-3.6147 1.323925,2.29077 m 0.966851,-3.6147 2.647851,4.58156 m -0.357075,-5.90548 1.323926,2.29077 m 0.96685,-3.6147 1.323926,2.29078 m 0.966851,-3.6147 1.323925,2.29077 m 0.966851,-3.6147 1.323925,2.29078 m -0.581493,-4.59135 2.63764,0.20806 m -2.429582,-2.8457 2.63764,0.20806 m -2.429583,-2.8457 2.637641,0.20806 m -2.429583,-2.8457 5.27528,0.41611 m -5.067223,-3.05375 2.637641,0.20805 m -2.429583,-2.84569 2.63764,0.20805 m -2.429583,-2.84569 2.637641,0.20805 m -2.429583,-2.84569 2.63764,0.20805 m -2.429583,-2.84569 2.637641,0.20805 m -2.429583,-2.84569 2.63764,0.20805 m -2.429583,-2.84569 2.637641,0.20805 m -1.915774,-1.55831 -3.539084,3.93403 m 5.5061,-2.16449 -1.769542,1.96701 m 3.736559,-0.19747 -1.769542,1.96702 m 3.736559,-0.19748 -1.769542,1.96702 m 3.736559,-0.19748 -1.769543,1.96702 m 3.736559,-0.19747 -1.769542,1.96701 m 3.736559,-0.19747 -1.769542,1.96702 m 3.736559,-0.19748 -1.769542,1.96702 m 3.736558,-0.19748 -3.539084,3.93404 m 5.506101,-2.1645 -1.769542,1.96702 m 3.736559,-0.19747 -1.769542,1.96701 m 3.736559,-0.19747 -1.769543,1.96702 m 4.245931,-2.20424 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955638,-3.19004 1.234402,5.14567 m 1.338436,-5.76287 0.617201,2.57283 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617202,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 0.534843,-2.00806 -2.417563,-1.0751 m 1.34247,3.49266 -4.835125,-2.15019 m 3.760032,4.56775 -2.417563,-1.07509 m 1.34247,3.49265 -2.417563,-1.07509 m 1.34247,3.49266 -2.417563,-1.0751 m 1.34247,3.49266 -2.417563,-1.07509 m 1.34247,3.49265 -2.417562,-1.07509 m 1.342469,3.49265 -2.417562,-1.07509 m 1.342469,3.49266 -2.417562,-1.0751 m 1.342469,3.49266 -4.835125,-2.15019 m 3.760032,4.56775 -2.417562,-1.07509 m 1.342469,3.49266 -2.417562,-1.0751 m 3.647667,3.34126 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38204 m 3.638233,0.87415 -2.256189,1.38204 m 3.638233,0.87415 -2.256189,1.38204 m 3.638233,0.87415 -4.512378,2.76409 m 5.894422,-0.5079 -2.256189,1.38204 m 3.638233,0.87415 -2.256189,1.38204 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 2.965385,-0.22428 -4.512377,2.76409" + inkscape:transform-center-x="3.4391707" + inkscape:transform-center-y="0.92397373" + inkscape:path-effect="#path-effect16" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.676971" + inkscape:transform-center-x="-1.2249206" + inkscape:transform-center-y="-2.0602953" + d="m 162.53655,202.47448 -26.52053,-19.88504 -31.41572,10.57385 10.71651,-31.36735 -19.764322,-26.61062 33.143692,0.49896 19.2007,-27.02011 9.76743,31.67571 31.63099,9.91127 -27.10709,19.07771 0.34834,33.14562 -2.22212,2.96362 m -2.01162,-6.13807 -1.11106,1.48181 m -3.12269,-4.65627 -1.11106,1.48182 m -3.12268,-4.65627 -1.11106,1.48181 m -3.12269,-4.65626 -1.11105,1.48181 m -3.12269,-4.65626 -2.22212,2.96362 m -2.01162,-6.13808 -1.11106,1.48181 m -3.69778,-1.0779 0.5908,1.75533 m -5.60601,-0.0673 0.5908,1.75532 m -5.60602,-0.0673 0.59081,1.75532 m -5.60602,-0.0673 1.18161,3.51065 m -6.19682,-1.82264 0.5908,1.75532 m -5.60601,-0.0673 0.5908,1.75533 m -2.43249,-3.22645 -1.75262,-0.59878 m 3.4634,-4.40871 -1.75262,-0.59877 m 3.46341,-4.40872 -3.50524,-1.19755 m 5.21603,-3.80994 -1.75263,-0.59877 m 3.46341,-4.40872 -1.75262,-0.59877 m 3.46341,-4.40872 -1.75262,-0.59877 m 2.45254,-4.25096 -1.48685,1.10431 m -1.66833,-5.35244 -2.97369,2.20863 m -0.1815,-6.45676 -1.48684,1.10432 m -1.66834,-5.35244 -1.48684,1.10431 m -1.66834,-5.35244 -1.48684,1.10432 m -1.668338,-5.35244 -1.486844,1.10431 m -1.668337,-5.35244 -2.973688,2.20863 m 7.788867,-2.37281 0.0279,-1.85188 m 5.26319,1.93153 0.0279,-1.85187 m 5.26318,1.93152 0.0279,-1.85187 m 5.26319,1.93153 0.0279,-1.85188 m 5.26319,1.93153 0.0558,-3.70374 m 5.2353,3.7834 0.0279,-1.85188 m 3.75056,-1.05393 -1.50973,-1.07282 m 4.57493,-3.24068 -1.50972,-1.07282 m 4.57493,-3.24068 -1.50973,-1.07282 m 4.57493,-3.24067 -3.01945,-2.14565 m 6.08466,-2.16785 -1.50973,-1.07282 m 4.57493,-3.24068 -1.50972,-1.07282 m 3.94923,0.65253 1.76985,-0.54574 m -0.21058,5.60246 1.76986,-0.54574 m -0.21058,5.60246 3.5397,-1.09149 m -1.98043,6.14821 1.76986,-0.54575 m -0.21058,5.60247 1.76985,-0.54575 m -0.21058,5.60246 1.76986,-0.54574 m 0.31786,5.07642 0.55379,-1.76736 m 4.49579,3.34959 1.10757,-3.5347 m 3.94201,5.11694 0.55379,-1.76735 m 4.49579,3.34959 0.55379,-1.76735 m 4.49579,3.34959 0.55379,-1.76736 m 4.49579,3.3496 0.55379,-1.76736 m 4.49579,3.34959 1.10757,-3.5347 m -4.37835,6.41539 1.06595,1.51458 m -5.39333,1.53099 1.06594,1.51458 m -5.39333,1.53099 1.06595,1.51458 m -5.39333,1.53099 1.06595,1.51458 m -5.39333,1.53099 2.1319,3.02916 m -6.45928,0.0164 1.06595,1.51458 m -2.6617,2.93065 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.79638,5.31083 3.70397,-0.0389 m -3.64836,5.3303 1.85198,-0.0195 m -1.79637,5.31083 1.85198,-0.0195 m -1.81634,3.41044 3.70396,-0.0389" + id="path18" + inkscape:path-effect="#path-effect21" + inkscape:original-d="m 162.53655,202.47448 -26.52053,-19.88504 -31.41572,10.57385 10.71651,-31.36735 -19.764322,-26.61062 33.143692,0.49896 19.2007,-27.02011 9.76743,31.67571 31.63099,9.91127 -27.10709,19.07771 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ruler_multi_px_1_0_2.svg b/testfiles/lpe_tests/Ruler_multi_px_1_0_2.svg new file mode 100644 index 0000000..83434f2 --- /dev/null +++ b/testfiles/lpe_tests/Ruler_multi_px_1_0_2.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="ruler" + id="path-effect21" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" + lpeversion="1" /> + <inkscape:path-effect + effect="ruler" + id="path-effect16" + is_visible="true" + unit="px" + mark_distance="10" + mark_length="20" + minor_mark_length="10" + major_mark_steps="8" + shift="5" + offset="0" + mark_dir="right" + border_marks="end" + lpeversion="1" /> + <inkscape:path-effect + effect="ruler" + id="path-effect12" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-94.285714" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.10163" + id="path10" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="359.96445" + sodipodi:cy="271.64886" + sodipodi:rx="202.6454" + sodipodi:ry="178.16473" + d="m 562.60985,271.64886 c 0,47.25223 -21.35008,92.56913 -59.35347,125.9815 -38.00338,33.41237 -89.54703,52.18324 -143.29193,52.18324 -53.7449,0 -105.28856,-18.77087 -143.29194,-52.18324 -38.00338,-33.41237 -59.35346,-78.72927 -59.35346,-125.9815 0,-47.25222 21.35008,-92.56912 59.35346,-125.98149 38.00338,-33.41237 89.54704,-52.183239 143.29194,-52.183239 53.7449,0 105.28855,18.770869 143.29193,52.183239 38.00339,33.41237 59.35347,78.72927 59.35347,125.98149 h 14 m -15.2739,19.94583 6.94323,0.8897 m -10.73064,18.73492 6.77626,1.75566 m -12.97838,17.24502 6.50844,2.57685 m -14.97291,15.53042 6.15338,3.33705 m -16.68926,13.64967 11.45341,8.05104 m -23.84688,7.63299 5.24402,4.63684 m -19.27205,9.60513 4.71944,5.16981 m -20.16015,7.52796 4.16484,5.6262 m -20.80422,5.45559 3.58962,6.00955 m -21.22505,3.40789 6.0016,12.64835 m -24.44304,-4.92644 2.40345,6.57446 m -21.47283,-0.5672 1.801,6.76435 m -21.33066,-2.48282 1.19573,6.89712 m -21.0261,-4.3473 0.58899,6.97518 m -20.56608,-6.15987 -0.0366,13.99995 m -19.93589,-14.91995 -0.62562,6.97199 m -19.19102,-9.62639 -1.23229,6.89068 m -18.27418,-11.27654 -1.83746,6.75454 m -17.19889,-12.86563 -2.43966,6.56111 m -15.95831,-14.38596 -6.07322,12.61412 m -11.50763,-22.133 -3.62477,5.98841 m -12.94815,-17.16927 -4.19898,5.60077 m -11.16267,-18.39401 -4.75205,5.13985 m -9.1837,-19.47206 -5.27446,4.60218 m -7.01323,-20.36917 -11.50838,7.97228 m 1.09157,-25.03221 -6.17699,3.29313 m -2.15608,-21.4612 -6.52723,2.5289 m 0.46694,-21.57525 -6.78931,1.70449 m 3.15135,-21.35734 -6.94984,0.83647 m 5.82937,-20.79149 -13.99958,-0.10784 m 15.42678,-19.82761 -6.93621,-0.94285 m 10.87271,-18.65244 -6.76283,-1.80665 m 13.10623,-17.14736 -6.48934,-2.62459 m 15.0845,-15.42107 -6.12951,-3.3807 m 16.78368,-13.53214 -11.39804,-8.12924 m 23.89648,-7.47134 -5.21342,-4.67121 m 19.33292,-9.48015 -4.68673,-5.19948 m 20.20573,-7.40256 -4.13065,-5.65135 m 20.83574,-5.33119 -3.55442,-6.03043 m 21.24374,-3.28545 -5.92992,-12.68212 m 24.41418,5.06321 -2.36722,-6.58758 m 21.46903,0.68419 -1.76455,-6.773949 m 21.3168,2.596772 -1.15915,-6.90336 m 21.0027,4.45813 -0.55236,-6.978172 m 20.53345,6.267557 0.10994,-13.999569 m 19.85749,15.024249 0.66225,-6.968602 m 19.1401,9.727582 1.26885,-6.884039 m 18.21386,11.374201 1.87389,-6.744522 m 17.1288,12.959402 2.47585,-6.54753 m 15.878,14.47525 6.14478,-12.57942 m 11.3808,22.19963 3.65987,-5.96703 m 12.84586,17.24678 4.23303,-5.57508 m 11.04877,18.46352 4.78455,-5.10961 m 9.05812,19.53169 5.30474,-4.56724 m 6.87634,20.41666 11.56293,-7.89294 m -1.26597,25.02542 6.20034,-3.24895 m 2.00065,21.47697 6.54569,-2.48072 m -0.62779,21.57175 6.80199,-1.65316 m -3.31383,21.33313 6.95605,-0.78315 m -5.97053,18.33295 h 14" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.10163" + id="path14" + sodipodi:sides="5" + sodipodi:cx="209.0004" + sodipodi:cy="700.06036" + sodipodi:r1="209.03896" + sodipodi:r2="104.51947" + sodipodi:arg1="0.56273722" + sodipodi:arg2="1.1910558" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 385.80512,811.58334 247.74362,797.13396 157.57141,902.67414 128.65024,766.90475 0.41080864,713.75959 120.59804,644.29887 l 10.91589,-138.3857 103.20097,92.84031 134.98582,-32.3819 -56.40554,126.83918 72.50994,118.37258 1.04091,-9.94568 m -10.98659,8.90478 1.04091,-9.94568 m -10.98659,8.90477 1.04091,-9.94568 m -10.98658,8.90478 1.0409,-9.94568 m -10.98658,8.90477 1.0409,-9.94568 m -10.98658,8.90478 2.08181,-19.89136 m -12.02749,18.85045 1.04091,-9.94568 m -10.98659,8.90478 1.04091,-9.94568 m -10.98659,8.90477 1.04091,-9.94568 m -10.98658,8.90477 1.0409,-9.94567 m -10.98658,8.90477 1.0409,-9.94568 m -10.98658,8.90477 1.0409,-9.94567 m -10.98658,8.90477 1.04091,-9.94568 m -10.98659,8.90477 2.08181,-19.89135 m -11.61887,19.87425 -7.60291,-6.49583 m 1.10708,14.09873 -7.60291,-6.49582 m 1.10708,14.09873 -7.60291,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 1.10708,14.09873 -7.60291,-6.49583 m 1.10708,14.09874 -15.20581,-12.99166 m 8.70998,20.59457 -7.60291,-6.49583 m 1.10708,14.09874 -7.6029,-6.49583 m 1.10707,14.09873 -7.6029,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 1.10708,14.09874 -7.60291,-6.49583 m 2.15232,9.98082 9.78056,-2.08343 m -11.86398,-7.69713 19.56111,-4.16685 m -21.64454,-5.61371 9.78056,-2.08343 m -11.86398,-7.69713 9.78056,-2.08343 m -11.86399,-7.69713 9.78056,-2.08343 m -11.86398,-7.69713 9.78056,-2.08343 m -11.86398,-7.69713 9.78056,-2.08342 m -11.86399,-7.69714 9.78056,-2.08342 m -11.86398,-7.69714 9.78056,-2.08342 m -11.86398,-7.69714 19.56111,-4.16685 m -21.64454,-5.61371 9.78056,-2.08342 m -11.86398,-7.69714 9.78056,-2.08342 m -11.86399,-7.69714 9.78056,-2.08342 m -11.86398,-7.69714 9.78056,-2.08342 m -14.40626,-5.58218 3.82847,-9.23812 m -13.06659,5.40964 3.82848,-9.23811 m -13.06659,5.40964 3.82847,-9.23811 m -13.06659,5.40964 7.65695,-18.47623 m -16.895067,14.64776 3.828473,-9.23812 m -13.066589,5.40964 3.828473,-9.23811 m -13.06659,5.40964 3.828473,-9.23812 m -13.066589,5.40965 3.828473,-9.23812 m -13.06659,5.40964 3.828473,-9.23811 m -13.066589,5.40964 3.828473,-9.23812 m -13.066589,5.40965 3.828473,-9.23812 m -13.06659,5.40965 7.656946,-18.47624 m -16.895062,14.64776 3.828473,-9.23811 m -13.0665897,5.40964 3.828473,-9.23812 m -4.5878496,4.8528 5.0038129,8.65805 m 3.6542384,-13.66186 5.003813,8.65805 m 3.654239,-13.66186 5.003813,8.65805 m 3.654238,-13.66187 5.003813,8.65805 m 3.654239,-13.66186 5.003813,8.65805 m 3.654238,-13.66186 10.007626,17.3161 m -1.349574,-22.31992 5.003813,8.65806 m 3.654238,-13.66187 5.003813,8.65805 m 3.654239,-13.66186 5.003813,8.65805 m 3.654239,-13.66186 5.003812,8.65805 m 3.654239,-13.66187 5.003813,8.65805 m 3.654239,-13.66186 5.003814,8.65805 m 3.65424,-13.66186 5.00381,8.65805 m 3.65424,-13.66187 10.00762,17.31611 m -6.01132,-25.26041 9.96903,0.78636 m -9.18267,-10.75539 9.96903,0.78636 m -9.18267,-10.7554 9.96903,0.78636 m -9.18267,-10.75539 9.96903,0.78636 m -9.18267,-10.75539 9.96903,0.78635 m -9.18267,-10.75539 9.96903,0.78636 m -9.18268,-10.75539 9.96904,0.78636 m -9.18268,-10.7554 19.93807,1.57272 m -19.15171,-11.54175 9.96904,0.78636 m -9.18268,-10.75539 9.96904,0.78635 m -9.18268,-10.75539 9.96904,0.78636 m -9.18268,-10.75539 9.96903,0.78636 m -9.18267,-10.7554 9.96903,0.78636 m -9.18267,-10.75539 9.96903,0.78636 m -4.45817,1.08213 -6.68804,7.4344 m 14.12243,-0.74636 -13.37607,14.86879 m 20.81047,-8.18076 -6.68804,7.43439 m 14.12243,-0.74636 -6.68803,7.4344 m 14.12242,-0.74636 -6.68803,7.43439 m 14.12243,-0.74636 -6.68804,7.43439 m 14.12243,-0.74636 -6.68803,7.4344 m 14.12242,-0.74636 -6.68803,7.43439 m 14.12243,-0.74636 -6.68803,7.43439 m 14.12242,-0.74636 -13.37606,14.86879 m 20.81046,-8.18075 -6.68804,7.43439 m 14.12243,-0.74636 -6.68803,7.43439 m 14.12242,-0.74636 -6.68803,7.4344 m 14.12243,-0.74636 -6.68803,7.43439 m 16.02084,-8.22551 2.33273,9.72411 m 7.39138,-12.05684 2.33273,9.72411 m 7.39138,-12.05684 2.33273,9.72411 m 7.39139,-12.05684 4.66545,19.44823 m 5.05866,-21.78096 2.33273,9.72411 m 7.39138,-12.05684 2.33273,9.72412 m 7.39139,-12.05685 2.33273,9.72412 m 7.39138,-12.05685 2.33273,9.72412 m 7.39138,-12.05684 2.33273,9.72411 m 7.39139,-12.05684 2.33272,9.72411 m 7.39139,-12.05684 2.33273,9.72411 m 7.39138,-12.05684 4.66546,19.44823 m 5.05865,-21.78096 2.33273,9.72411 m 7.39139,-12.05684 2.33273,9.72411 m -5.6729,-1.18849 -9.13724,-4.06334 m 5.0739,13.20059 -9.13724,-4.06335 m 5.0739,13.20059 -9.13725,-4.06334 m 5.0739,13.20059 -9.13724,-4.06335 m 5.0739,13.20059 -9.13725,-4.06334 m 5.07391,13.20059 -18.27449,-8.12669 m 14.21114,17.26393 -9.13724,-4.06334 m 5.0739,13.20059 -9.13725,-4.06335 m 5.07391,13.20059 -9.13725,-4.06334 m 5.0739,13.20059 -9.13724,-4.06335 m 5.0739,13.20059 -9.13725,-4.06334 m 5.07391,13.20059 -9.13725,-4.06335 m 5.0739,13.20059 -9.13724,-4.06334 m 5.68675,13.16034 -17.05466,10.44694 m 22.27813,-1.91962 -8.52733,5.22348 m 13.7508,3.30385 -8.52733,5.22348 m 13.75081,3.30385 -8.52733,5.22347 m 13.7508,3.30386 -8.52733,5.22347 m 13.7508,3.30386 -8.52733,5.22347 m 13.75081,3.30385 -8.52733,5.22348 m 13.7508,3.30385 -8.52733,5.22348 m 13.7508,3.30385 -17.05465,10.44695 m 22.27813,-1.91962 -8.52733,5.22347 m 13.7508,3.30386 -8.52733,5.22347 m 13.7508,3.30386 -8.52733,5.22347 m 13.75081,3.30385 -8.52733,5.22348 m 13.7508,3.30385 -8.52733,5.22348 m 12.78741,1.73111 -17.05466,10.44695" + inkscape:transform-center-x="17.621098" + inkscape:transform-center-y="4.2333189" + inkscape:path-effect="#path-effect16" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.10163" + inkscape:transform-center-x="-2.2219311" + inkscape:transform-center-y="-22.489753" + d="M 755.73504,819.74346 634.2277,728.6375 490.2924,777.083 539.39151,633.36931 448.83864,511.44922 l 151.85224,2.28605 87.97056,-123.79624 44.75078,145.12649 144.9216,45.4098 -124.19474,87.40707 1.59596,151.86107 -8.39855,11.20109 m -7.603,-23.19902 -4.19928,5.60054 m -11.80227,-17.59847 -4.19928,5.60054 m -11.80227,-17.59847 -4.19928,5.60054 m -11.80228,-17.59847 -4.19927,5.60054 m -11.80228,-17.59848 -8.39855,11.20109 m -7.603,-23.19902 -4.19927,5.60055 m -11.80228,-17.59848 -4.19928,5.60054 m -13.00298,-10.12738 2.23296,6.6343 m -21.1881,-0.25441 2.23296,6.63429 m -21.18809,-0.25441 4.46592,13.2686 m -23.42105,-6.88871 2.23296,6.6343 m -21.18809,-0.25441 2.23296,6.63429 m -21.1881,-0.25441 2.23296,6.6343 m -21.18809,-0.25441 2.23296,6.63429 m -21.18809,-0.25441 4.46592,13.2686 m -2.75234,-27.46371 -6.62408,-2.26309 m 13.09004,-16.66286 -6.62408,-2.26308 m 13.09004,-16.66286 -6.62408,-2.26309 m 13.09004,-16.66285 -6.62408,-2.26309 m 13.09004,-16.66286 -13.24816,-4.52617 m 19.71413,-14.39977 -6.62409,-2.26309 m 13.09005,-16.66286 -6.62408,-2.26308 m 9.05176,-16.03266 -5.61957,4.17378 m -6.30553,-20.22969 -5.61956,4.17378 m -6.30553,-20.22969 -11.23914,8.34757 m -0.68595,-24.40347 -5.61957,4.17378 m -6.30553,-20.22969 -5.61956,4.17378 m -6.30553,-20.22969 -5.61957,4.17379 m -6.30552,-20.22969 -5.61957,4.17378 M 453.29736,517.45243 442.05823,525.8 m 19.30111,-14.16229 0.10537,-6.9992 m 19.89236,7.30026 0.10537,-6.99921 m 19.89237,7.30026 0.10537,-6.99921 m 19.89236,7.30027 0.10537,-6.99921 m 19.89236,7.30026 0.21074,-13.99841 m 19.787,14.29947 0.10537,-6.99921 m 19.89236,7.30026 0.10537,-6.99921 m 19.61783,6.75842 -5.70604,-4.05476 m 17.29106,-12.24823 -5.70604,-4.05475 m 17.29107,-12.24823 -11.41209,-8.10951 m 22.99711,-8.19347 -5.70604,-4.05476 m 17.29107,-12.24822 -5.70605,-4.05476 m 17.29107,-12.24822 -5.70604,-4.05476 m 17.29107,-12.24822 -5.70605,-4.05476 m 17.29107,-12.24823 -11.41209,-8.10951 m 20.49754,7.35942 6.6892,-2.06266 m -0.79588,21.17467 6.6892,-2.06267 m -0.79588,21.17467 6.6892,-2.06266 m -0.79587,21.17467 6.6892,-2.06266 m -0.79588,21.17466 13.3784,-4.12532 m -7.48508,23.23733 6.6892,-2.06266 m -0.79588,21.17467 6.6892,-2.06267 m -0.79588,21.17467 6.68921,-2.06266 m 10.36019,10.06917 2.09304,-6.67976 m 16.99199,12.65987 4.18608,-13.35952 m 14.89895,19.33963 2.09303,-6.67976 m 16.99199,12.65988 2.09304,-6.67976 m 16.99199,12.65987 2.09304,-6.67976 m 16.99199,12.65987 2.09304,-6.67976 m 16.99199,12.65987 4.18607,-13.35952 m 5.96023,20.73457 4.02879,5.72441 m -20.38425,5.78641 4.02879,5.72441 m -20.38425,5.78641 4.02879,5.72441 m -20.38425,5.7864 4.02879,5.72441 m -20.38425,5.78641 8.05757,11.44882 m -24.41303,0.062 4.02878,5.72441 m -20.38424,5.7864 4.02878,5.72441 m -20.38424,5.78641 4.02878,5.72441 m -9.47171,11.37789 6.99962,-0.0736 m -6.78944,20.07245 13.99922,-0.14712 m -13.78905,20.14602 6.99962,-0.0736 m -6.78944,20.07246 6.99961,-0.0736 m -6.78944,20.07246 6.99962,-0.0736 m -6.78944,20.07246 6.99961,-0.0736 m -6.78944,20.07245 13.99923,-0.14712 m -13.80277,18.84064 13.99923,-0.14712" + id="path18" + inkscape:path-effect="#path-effect21" + inkscape:original-d="M 755.73504,819.74346 634.2277,728.6375 490.2924,777.083 539.39151,633.36931 448.83864,511.44922 l 151.85224,2.28605 87.97056,-123.79624 44.75078,145.12649 144.9216,45.4098 -124.19474,87.40707 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Ruler_path_0_92_5.svg b/testfiles/lpe_tests/Ruler_path_0_92_5.svg new file mode 100644 index 0000000..4db3fc0 --- /dev/null +++ b/testfiles/lpe_tests/Ruler_path_0_92_5.svg @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="ruler" + id="path-effect21" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" /> + <inkscape:path-effect + effect="ruler" + id="path-effect16" + is_visible="true" + unit="px" + mark_distance="10" + mark_length="20" + minor_mark_length="10" + major_mark_steps="8" + shift="5" + offset="0" + mark_dir="right" + border_marks="end" /> + <inkscape:path-effect + effect="ruler" + id="path-effect12" + is_visible="true" + unit="px" + mark_distance="20" + mark_length="14" + minor_mark_length="7" + major_mark_steps="5" + shift="0" + offset="0" + mark_dir="left" + border_marks="both" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-94.285714" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path10" + inkscape:path-effect="#path-effect12" + sodipodi:type="arc" + sodipodi:cx="52.538689" + sodipodi:cy="66.8125" + sodipodi:rx="56.318451" + sodipodi:ry="49.514877" + inkscape:test-ignore="1" + d="m 108.85714,66.8125 c 0,13.132162 -5.93353,25.726465 -16.495293,35.01231 -10.561758,9.28584 -24.886576,14.50257 -39.823158,14.50257 -14.936582,0 -29.261401,-5.21673 -39.823159,-14.50257 C 2.1537718,92.538965 -3.7797623,79.944662 -3.7797623,66.8125 c 0,-13.132162 5.9335341,-25.726465 16.4952923,-35.012306 10.561758,-9.28584 24.886577,-14.502571 39.823159,-14.502571 14.936582,0 29.2614,5.216731 39.823158,14.502571 10.561763,9.285841 16.495293,21.880144 16.495293,35.012306 v 0 h 3.70417 m -4.02512,5.278671 1.83846,0.224203 m -2.79347,4.977336 1.79833,0.442967 m -3.36472,4.608345 1.73374,0.65143 m -3.87629,4.18391 1.64771,0.845733 m -4.32187,3.71736 3.08755,2.046437 m -6.242888,2.19842 1.425531,1.182401 m -5.008841,2.70821 1.296324,1.322787 m -5.254076,2.18649 1.159033,1.44459 m -5.439079,1.66373 1.016004,1.54853 m -5.568574,1.14517 1.738109,3.27105 m -6.516253,-1.00116 0.719535,1.7066 m -5.67914,0.13361 0.568403,1.7627 m -5.667953,-0.3558 0.416312,1.80469 m -5.616455,-0.83317 0.263686,1.83322 m -5.526711,-1.29821 0.221585,3.69753 m -5.510839,-3.59953 -0.0422,1.8516 m -5.23708,-2.19069 -0.195152,1.84177 m -5.037773,-2.61766 -0.347924,1.81911 m -4.801486,-3.03098 -0.500296,1.78323 m -4.527053,-3.42949 -1.303847,3.4671 m -3.560954,-5.5449 -0.802265,1.6693 m -3.857084,-4.17388 -0.950508,1.58957 m -3.457726,-4.51337 -1.09549,1.49335 m -3.013098,-4.82488 -1.235611,1.37966 M 8.5916367,97.777436 5.8540996,100.27278 M 5.237752,93.687529 3.745436,94.784436 M 2.3413666,89.262055 0.73826391,90.189564 m -0.78375361,-5.647127 -1.6976114,0.740492 m -0.1321125,-5.702563 -1.7722303,0.537971 m 0.5394653,-5.680815 -3.6473032,0.646552 m 3.0401538,-5.900025 -1.8493349,0.100862 m 1.882498,-5.389169 -1.8479258,-0.124028 m 2.5205883,-5.121465 -1.8195002,-0.345878 m 3.1154271,-4.781427 -1.76555,-0.559505 M 0.17586086,48.583207 -3.201571,47.062087 M 2.6176166,43.891736 1.025258,42.945899 M 5.5636819,39.499154 4.0835855,38.385813 M 8.9617438,35.445851 7.6063246,34.183689 m 5.1518374,-2.420936 -1.22143,-1.392236 m 5.363275,-1.897881 -2.161436,-3.008163 m 6.597789,0.127182 -0.935334,-1.59855 m 5.617955,-0.862271 -0.786827,-1.676639 m 5.670348,-0.356798 -0.636321,-1.739342 m 5.678106,0.137815 -0.484595,-1.787563 m 5.644382,0.620637 -0.664337,-3.644106 m 5.903748,2.913278 -0.179369,-1.843377 m 5.461352,1.549394 -0.0264,-1.851895 m 5.314629,1.995014 0.126582,-1.847752 m 5.131662,2.427852 0.279456,-1.830879 m 4.912072,2.847402 0.864084,-3.601973 m 4.222875,5.053723 0.584056,-1.757581 m 4.358781,3.64234 0.735057,-1.699972 m 4.021891,4.013933 0.884362,-1.627303 m 3.6423,4.364287 1.030976,-1.538603 m 3.218151,4.689036 2.347012,-2.865727 m 1.574536,6.415387 1.310081,-1.309161 m 2.231541,5.237733 1.438298,-1.166839 m 1.669815,5.446375 1.55522,-1.005729 m 1.06633,5.599229 1.65748,-0.82642 m 0.42752,5.686829 3.48291,-1.261023 m -1.97819,6.331031 1.80365,-0.420786 m -0.91328,5.633769 1.84112,-0.201222 m -1.5829,4.937292 h 3.70417" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path14" + sodipodi:sides="5" + sodipodi:cx="10.583333" + sodipodi:cy="185.87502" + sodipodi:r1="58.095322" + sodipodi:r2="29.047659" + sodipodi:arg1="0.56273722" + sodipodi:arg2="1.1910558" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 59.720238,216.86906 -38.369533,-4.01572 -25.0603242,29.33134 -8.0376618,-37.73252 -35.639821,-14.76991 33.401985,-19.30426 3.033703,-38.45963 28.681224,25.80183 37.514752,-8.99946 -15.676013,35.25067 20.151689,32.89766 0.275406,-2.63146 m -2.906867,2.35606 0.275406,-2.63146 m -2.906867,2.35605 0.275407,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.275406,-2.63146 m -2.906867,2.35605 0.550813,-5.26292 m -3.182273,4.98752 0.275406,-2.63147 m -2.906867,2.35606 0.275406,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.275407,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35605 0.275406,-2.63146 m -2.906867,2.35606 0.275407,-2.63146 m -2.906867,2.35605 0.550812,-5.26292 m -3.182273,4.98752 0.275406,-2.63146 m -2.524486,3.31413 -2.011603,-1.71869 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292915,3.73029 -2.011603,-1.71868 m 0.292915,3.73029 -2.011603,-1.71869 m 0.292914,3.73029 -2.011602,-1.71869 m 0.292914,3.73029 -2.011602,-1.71869 m 0.292914,3.73029 -4.0232051,-3.43737 m 2.3045172,5.44898 -2.0116027,-1.71869 m 0.2929145,3.73029 -2.0116026,-1.71869 m 0.2929145,3.73029 -2.0116026,-1.71869 m 0.2929145,3.73029 -2.0116027,-1.71868 m 0.2929145,3.73029 -2.01160259,-1.71869 m 0.29291451,3.73029 -2.01160262,-1.71869 m 0.2929145,3.73029 -2.0116026,-1.71869 m 0.2929145,3.7303 -4.0232053,-3.43738 m 3.2826587,1.59541 2.5877731,-0.55124 m -3.1390123,-2.03653 2.5877731,-0.55124 m -3.1390123,-2.03653 2.587773,-0.55124 m -3.1390122,-2.03654 2.587773,-0.55124 m -3.1390123,-2.03653 2.5877731,-0.55124 m -3.1390123,-2.03653 2.5877731,-0.55124 m -3.1390123,-2.03654 2.587773,-0.55123 m -3.1390122,-2.03654 5.1755461,-1.10248 m -5.7267853,-1.48529 2.587773,-0.55124 m -3.1390123,-2.03653 2.5877731,-0.55124 m -3.1390123,-2.03654 2.5877731,-0.55124 m -3.1390125,-2.03653 2.5877732,-0.55124 m -3.1390122,-2.03653 2.587773,-0.55124 m -3.139012,-2.03654 2.5877728,-0.55124 m -3.6250768,-1.63217 1.012951,-2.44425 m -3.457202,1.4313 2.0259,-4.8885 m -4.470152,3.87555 1.01295,-2.44425 m -3.457201,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.457201,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.012951,-2.44425 m -3.457202,1.4313 2.0259,-4.8885 m -4.470152,3.87555 1.01295,-2.44425 m -3.457201,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.457202,1.4313 1.01295,-2.44425 m -3.457201,1.4313 1.01295,-2.44425 m -0.257788,1.22118 1.323925,2.29077 m 0.966851,-3.6147 1.323926,2.29078 m 0.96685,-3.6147 2.647851,4.58155 m -0.357075,-5.90548 1.323926,2.29078 m 0.96685,-3.6147 1.323926,2.29077 m 0.966851,-3.6147 1.323925,2.29078 m 0.966851,-3.6147 1.323925,2.29077 m 0.966851,-3.6147 1.323925,2.29078 m 0.966851,-3.61471 1.323925,2.29078 m 0.966851,-3.6147 1.323926,2.29077 m 0.96685,-3.6147 2.647851,4.58156 m -0.357075,-5.90548 1.323926,2.29077 m 0.96685,-3.6147 1.323926,2.29078 m 0.966851,-3.6147 1.323925,2.29077 m 0.769799,-3.73899 2.63764,0.20805 m -2.429583,-2.84569 2.637641,0.20805 m -2.429583,-2.84569 2.63764,0.20805 m -2.429583,-2.84569 2.637641,0.20805 m -2.429583,-2.84569 5.2752805,0.41611 m -5.0672225,-3.05375 2.63764,0.20805 m -2.429583,-2.84569 2.63764,0.20805 m -2.429582,-2.84569 2.6376399,0.20805 m -2.4295829,-2.8457 2.6376405,0.20806 m -2.4295825,-2.8457 2.63764,0.20806 m -2.429583,-2.8457 2.6376405,0.20806 m -2.4295825,-2.8457 2.6376401,0.20806 m -2.4295831,-2.8457 5.2752809,0.41612 m -5.0672229,-3.05376 2.6376402,0.20806 m -2.4295832,-2.8457 2.6376407,0.20806 m -1.5262939,-0.58245 -1.7695418,1.96702 m 3.7365585,-0.19748 -1.7695421,1.96702 m 3.7365588,-0.19748 -1.7695421,1.96702 m 3.7365589,-0.19747 -1.7695421,1.96701 m 3.7365588,-0.19747 -1.7695421,1.96701 m 3.73655882,-0.19747 -3.53908422,3.93403 m 5.506101,-2.16449 -1.76954213,1.96702 m 3.73655883,-0.19748 -1.7695421,1.96702 m 3.7365588,-0.19747 -1.7695421,1.96701 m 3.7365589,-0.19747 -1.7695421,1.96702 m 3.7365588,-0.19748 -1.7695421,1.96702 m 3.736559,-0.19748 -1.7695423,1.96702 m 3.7365593,-0.19748 -1.769543,1.96702 m 3.736559,-0.19747 -3.539084,3.93403 m 5.506101,-2.16449 -1.769542,1.96702 m 4.301462,-2.42302 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617202,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955638,-3.19004 1.234402,5.14567 m 1.338436,-5.76288 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617202,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617201,2.57284 m 1.955637,-3.19004 0.617202,2.57284 m 0.673822,-2.12368 -4.835125,-2.15019 m 3.760032,4.56775 -2.417563,-1.07509 m 1.34247,3.49265 -2.417563,-1.07509 m 1.34247,3.49265 -2.417562,-1.07509 m 1.342469,3.49266 -2.417562,-1.0751 m 1.342469,3.49266 -2.417562,-1.07509 m 1.342469,3.49265 -2.417562,-1.07509 m 1.342469,3.49265 -2.417562,-1.07509 m 1.34247,3.49266 -4.835126,-2.15019 m 3.760033,4.56775 -2.417563,-1.07509 m 1.34247,3.49265 -2.417563,-1.07509 m 1.34247,3.49265 -2.417563,-1.07509 m 1.34247,3.49266 -2.417563,-1.0751 m 1.34247,3.49266 -2.417563,-1.07509 m 1.34247,3.49265 -2.417563,-1.07509 m 3.235211,3.36835 -2.256189,1.38204 m 3.638233,0.87415 -4.512378,2.76409 m 5.894422,-0.5079 -2.256189,1.38204 m 3.638233,0.87415 -2.256189,1.38204 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38205 m 3.638233,0.87414 -2.256189,1.38204 m 3.638233,0.87415 -4.512378,2.76409 m 5.894422,-0.5079 -2.256189,1.38204 m 3.638232,0.87415 -2.256188,1.38204 m 3.638232,0.87415 -2.256189,1.38204 m 3.638233,0.87414 -2.256189,1.38205 m 3.376714,0.44721 -4.512378,2.76409" + inkscape:transform-center-x="4.4167652" + inkscape:transform-center-y="1.1764985" + inkscape:path-effect="#path-effect16" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:transform-center-x="-3.1165423" + inkscape:transform-center-y="-3.0283904" + d="m 162.52977,219.13691 -33.76887,-25.31983 -40.001954,13.46379 13.645434,-39.94036 -25.16611,-33.88358 42.20221,0.63533 24.44844,-34.404992 12.43697,40.333012 40.27607,12.62012 -34.51574,24.29185 0.44355,42.20466 -2.22212,2.96362 m -2.01162,-6.13807 -1.11106,1.48181 m -3.12269,-4.65627 -1.11106,1.48182 m -3.12268,-4.65627 -1.11106,1.48181 m -3.12269,-4.65626 -1.11105,1.48181 m -3.12269,-4.65626 -2.22212,2.96362 m -2.01162,-6.13808 -1.11106,1.48182 m -3.12269,-4.65627 -1.11106,1.48181 m -3.14134,-4.54017 0.59081,1.75533 m -5.60602,-0.0673 0.5908,1.75533 m -5.60601,-0.0673 1.18161,3.51065 m -6.19683,-1.82263 0.59081,1.75532 m -5.60602,-0.0673 0.59081,1.75532 m -5.60602,-0.0673 0.5908,1.75532 m -5.606011,-0.0673 0.590804,1.75533 m -5.606017,-0.0673 1.181608,3.51065 m -5.875646,-2.14235 -1.752621,-0.59878 m 3.463406,-4.40871 -1.752622,-0.59878 m 3.463407,-4.40871 -1.752622,-0.59878 m 3.463407,-4.40871 -1.752622,-0.59878 m 3.463407,-4.40871 -3.505243,-1.19755 m 5.216028,-3.80994 -1.752622,-0.59878 m 3.463407,-4.40871 -1.752622,-0.59877 m 3.463404,-4.40872 -1.752619,-0.59877 m 3.114879,-4.35433 -1.48685,1.10431 m -1.668335,-5.35243 -2.973688,2.20862 m -0.181492,-6.45675 -1.486844,1.10431 m -1.668336,-5.35244 -1.486844,1.10432 m -1.668337,-5.35244 -1.486844,1.10431 m -1.668336,-5.35244 -1.486844,1.10432 m -1.668336,-5.35244 -2.973688,2.20862 m -0.181492,-6.45675 -1.486844,1.10431 m -0.861701,-4.93912 0.02788,-1.85188 m 5.263188,1.93153 0.02788,-1.85187 m 5.263188,1.93153 0.02788,-1.85188 m 5.263188,1.93153 0.05576,-3.70375 m 5.235309,3.7834 0.02788,-1.85187 m 5.263184,1.93153 0.0279,-1.85188 m 5.26319,1.93153 0.0279,-1.85187 m 5.26319,1.93152 0.0279,-1.85187 m 4.99747,1.40708 -3.01945,-2.14564 m 6.08465,-2.16785 -1.50972,-1.07282 m 4.57492,-3.24068 -1.50972,-1.07282 m 4.57493,-3.24068 -1.50973,-1.07282 m 4.57493,-3.24068 -1.50972,-1.07282 m 4.57492,-3.24068 -3.01944,-2.14564 m 6.08465,-2.16785 -1.50973,-1.07282 m 4.57493,-3.24068 -1.50972,-1.07282 m 4.35919,-1.89836 1.76985,-0.545741 m -0.21057,5.602461 1.76985,-0.54574 m -0.21058,5.60246 3.53971,-1.09149 m -1.98043,6.14821 1.76985,-0.54575 m -0.21058,5.60247 1.76985,-0.54575 m -0.21057,5.60247 1.76985,-0.54575 m -0.21058,5.60246 1.76985,-0.54574 m -0.21057,5.60246 3.5397,-1.09149 m -1.39709,5.56752 0.55378,-1.76735 m 4.4958,3.34959 0.55378,-1.76736 m 4.4958,3.34959 0.55378,-1.76735 m 4.4958,3.34959 0.55378,-1.76735 m 4.4958,3.34959 1.10756,-3.53471 m 3.94202,5.11695 0.55378,-1.76736 m 4.4958,3.34959 0.55378,-1.76735 m 4.4958,3.34959 0.55378,-1.76735 m 2.70473,3.6291 1.06595,1.51458 m -5.39334,1.53099 2.1319,3.02917 m -6.45928,0.0164 1.06595,1.51458 m -5.39333,1.53099 1.06595,1.51458 m -5.39333,1.53099 1.06595,1.51458 m -5.39333,1.53099 1.06595,1.51458 m -5.39334,1.53099 2.1319,3.02917 m -6.45928,0.0164 1.06595,1.51458 m -4.4515,2.01358 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.79637,5.31084 3.70396,-0.0389 m -3.64835,5.3303 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.79637,5.31083 1.85198,-0.0195 m -1.79637,5.31084 1.85198,-0.0195 m -1.80965,4.04748 3.70396,-0.0389" + id="path18" + inkscape:path-effect="#path-effect21" + inkscape:original-d="m 162.52977,219.13691 -33.76887,-25.31983 -40.001954,13.46379 13.645434,-39.94036 -25.16611,-33.88358 42.20221,0.63533 24.44844,-34.404992 12.43697,40.333012 40.27607,12.62012 -34.51574,24.29185 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ShowHandles_multi_mm_1_0_2.svg b/testfiles/lpe_tests/ShowHandles_multi_mm_1_0_2.svg new file mode 100644 index 0000000..657d059 --- /dev/null +++ b/testfiles/lpe_tests/ShowHandles_multi_mm_1_0_2.svg @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="show_handles" + id="path-effect68" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + lpeversion="1" + scale_nodes_and_handles="10" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect19" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + lpeversion="1" + scale_nodes_and_handles="20" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect14" + is_visible="true" + nodes="true" + handles="true" + lpeversion="1" + original_path="true" + scale_nodes_and_handles="10" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-375.5839" + inkscape:cy="793.90105" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.227368;stroke-linecap:butt" + id="path12" + sodipodi:sides="5" + sodipodi:cx="64.314735" + sodipodi:cy="108.37452" + sodipodi:r1="78.526527" + sodipodi:r2="39.263264" + sodipodi:arg1="0.67990885" + sodipodi:arg2="1.3082274" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 125.37932,157.74589 74.505998,146.29209 36.22977,181.70698 31.402258,129.78416 -14.107314,104.32511 33.782443,83.688835 43.932209,32.539382 l 34.42501,39.168906 51.782471,-6.15305 -26.61393,44.843992 z m 0,-1.60774 1.60774,1.60774 -1.60774,1.60773 -1.60773,-1.60773 z m -50.873322,-11.4538 1.607734,1.60774 -1.607734,1.60773 -1.607735,-1.60773 z m -38.276228,35.4149 1.607735,1.60773 -1.607735,1.60774 -1.607734,-1.60774 z m -4.827512,-51.92283 1.607734,1.60774 -1.607734,1.60773 -1.607735,-1.60773 z m -45.509572,-25.45905 1.607735,1.60774 -1.607735,1.60773 -1.607734,-1.60773 z m 47.889757,-20.636269 1.607734,1.607734 -1.607734,1.607735 -1.607735,-1.607735 z m 10.149766,-51.149454 1.607735,1.607735 -1.607735,1.607734 -1.607735,-1.607734 z m 34.42501,39.168906 1.607734,1.607735 -1.607734,1.607734 -1.607735,-1.607734 z m 51.782471,-6.153049 1.60773,1.607734 -1.60773,1.607735 -1.60773,-1.607735 z m -26.61393,44.843986 1.60773,1.60774 -1.60773,1.60773 -1.60773,-1.60773 z" + inkscape:transform-center-x="6.2985483" + inkscape:transform-center-y="-1.2513373" + inkscape:path-effect="#path-effect14" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.227368;stroke-linecap:butt" + inkscape:transform-center-x="5.6032103" + inkscape:transform-center-y="-0.83639922" + d="M 120.18233,288.96979 76.629034,279.67618 44.282149,310.28566 39.662186,265.99212 C 8.6305322,285.35515 2.4930891,268.10905 0.55510474,244.68726 9.9273968,219.36909 23.220944,190.72878 41.253112,205.24604 l 8.177379,-22.41669 29.772714,33.11868 44.160975,-5.75057 -22.29745,38.54976 z m 0,-3.21547 3.21547,3.21547 -3.21547,3.21547 -3.21547,-3.21547 z m -43.553296,-9.29361 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m -32.346885,30.60948 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m -4.619963,-44.29354 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m -29.440078,22.5785 a 1.591576,1.591576 0 0 1 -1.5915758,1.59158 1.591576,1.591576 0 0 1 -1.591576,-1.59158 1.591576,1.591576 0 0 1 1.591576,-1.59158 1.591576,1.591576 0 0 1 1.5915758,1.59158 z M 39.662186,265.99212 9.9808066,284.51261 M 4.0846651,268.10905 a 1.591576,1.591576 0 0 1 -1.591576,1.59158 1.591576,1.591576 0 0 1 -1.59157598,-1.59158 1.591576,1.591576 0 0 1 1.59157598,-1.59158 1.591576,1.591576 0 0 1 1.591576,1.59158 z M 0.55510474,244.68726 2.3618462,266.52289 m -1.80674146,-25.0511 3.21546906,3.21547 -3.21546906,3.21547 -3.21546904,-3.21547 z M 11.518973,219.36909 a 1.591576,1.591576 0 0 1 -1.5915762,1.59158 1.591576,1.591576 0 0 1 -1.591576,-1.59158 1.591576,1.591576 0 0 1 1.591576,-1.59158 1.591576,1.591576 0 0 1 1.5915762,1.59158 z M 0.55510474,244.68726 9.3748689,220.86168 M 24.81252,190.72878 a 1.591576,1.591576 0 0 1 -1.591576,1.59158 1.591576,1.591576 0 0 1 -1.591576,-1.59158 1.591576,1.591576 0 0 1 1.591576,-1.59158 1.591576,1.591576 0 0 1 1.591576,1.59158 z m 16.440592,14.51726 -16.792431,-13.51918 m 16.792431,10.30371 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m 8.177379,-22.41669 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m 29.772714,33.11868 3.215469,3.21547 -3.215469,3.21547 -3.215469,-3.21547 z m 44.160975,-5.75057 3.21547,3.21547 -3.21547,3.21547 -3.21547,-3.21547 z m -22.29745,38.54976 3.21547,3.21547 -3.21547,3.21547 -3.215469,-3.21547 z" + id="path16" + inkscape:path-effect="#path-effect19" + inkscape:original-d="M 120.18233,288.96979 76.629034,279.67618 44.282149,310.28566 39.662186,265.99212 C 8.6305322,285.35515 2.4930891,268.10905 0.55510474,244.68726 9.9273968,219.36909 23.220944,190.72878 41.253112,205.24604 l 8.177379,-22.41669 29.772714,33.11868 44.160975,-5.75057 -22.29745,38.54976 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <g + id="g66" + inkscape:path-effect="#path-effect68" + style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + transform="matrix(0.85934414,0,0,0.85934414,53.920765,75.320462)"> + <path + id="path54" + d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z m 0,-1.87088 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -42.42744,-22.60381 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -42.67325,22.13627 1.87088,1.87088 -1.87088,1.87088 -1.870884,-1.87088 z m 8.3867,-47.335865 1.87088,1.870884 -1.87088,1.870881 -1.87088,-1.870881 z M 75.066016,62.841512 76.9369,64.712396 75.066016,66.58328 73.195132,64.712396 Z m 47.610704,-6.651358 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 21.51201,-42.991319 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 21.03834,43.225092 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 47.53475,7.174086 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m -34.6083,33.365934 1.87088,1.870884 -1.87088,1.870889 -1.87088,-1.870889 z" + inkscape:transform-center-y="-6.7958377" + inkscape:transform-center-x="-0.12289915" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + inkscape:original-d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z" /> + <path + id="path56" + d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z m 0,-1.87088 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -53.12184,-11.38813 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -39.49685,37.3044 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -5.5848,-54.041 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -47.683786,-26.03605 1.870884,1.87088 -1.870884,1.87088 -1.870884,-1.87088 z m 49.670246,-22.01104 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m 10.02665,-53.395565 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 36.2827,40.437425 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m 43.41491,-13.80993 a 0.92604047,0.92604047 0 0 1 -0.92604,0.92604 0.92604047,0.92604047 0 0 1 -0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,0.92604 z m -43.41491,15.68081 41.62011,-15.36019 m 18.71898,-1.14809 a 0.92604047,0.92604047 0 0 1 -0.92604,0.92604 0.92604047,0.92604047 0 0 1 -0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,0.92604 z m -33.7048,56.54681 32.31434,-55.74564 m -32.31434,53.87476 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z" + inkscape:transform-center-y="-1.044344" + inkscape:transform-center-x="6.8124963" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + inkscape:original-d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ShowHandles_multi_px_1_0_2.svg b/testfiles/lpe_tests/ShowHandles_multi_px_1_0_2.svg new file mode 100644 index 0000000..81f7e4d --- /dev/null +++ b/testfiles/lpe_tests/ShowHandles_multi_px_1_0_2.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="show_handles" + id="path-effect68" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="10" + lpeversion="1" + show_center_node="false" + original_d="false" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect19" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="20" + lpeversion="1" + show_center_node="false" + original_d="false" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect14" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="10" + lpeversion="1" + show_center_node="false" + original_d="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-375.5839" + inkscape:cy="793.90105" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.812249;stroke-linecap:butt" + id="path12" + sodipodi:sides="5" + sodipodi:cx="270.59686" + sodipodi:cy="308.00208" + sodipodi:r1="280.52811" + sodipodi:r2="140.26405" + sodipodi:arg1="0.67990885" + sodipodi:arg2="1.3082274" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 488.74394,484.37631 307.00412,443.45877 170.26615,569.97491 153.02035,384.48586 -9.5580054,293.53596 161.52332,219.81496 197.78234,37.088687 320.76222,177.01566 505.74988,155.03451 410.6743,315.23514 Z m 0,-5.74347 5.74347,5.74347 -5.74347,5.74347 -5.74346,-5.74347 z m -181.73982,-40.91754 5.74347,5.74347 -5.74347,5.74347 -5.74347,-5.74347 z m -136.73797,126.51614 5.74347,5.74347 -5.74347,5.74347 -5.74346,-5.74347 z m -17.2458,-185.48905 5.74347,5.74347 -5.74347,5.74346 -5.74347,-5.74346 z m -162.5783554,-90.9499 5.7434678,5.74347 -5.7434678,5.74347 -5.7434676,-5.74347 z m 171.0813254,-73.721 5.74347,5.74347 -5.74347,5.74346 -5.74346,-5.74346 z m 36.25902,-182.726271 5.74347,5.743468 -5.74347,5.743468 -5.74347,-5.743468 z m 122.97988,139.926971 5.74347,5.74347 -5.74347,5.74347 -5.74347,-5.74347 z m 184.98766,-21.98115 5.74347,5.74347 -5.74347,5.74347 -5.74347,-5.74347 z m -95.07558,160.20063 5.74346,5.74347 -5.74346,5.74346 -5.74347,-5.74346 z" + inkscape:transform-center-x="22.500921" + inkscape:transform-center-y="-4.4702712" + inkscape:path-effect="#path-effect14" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.812249;stroke-linecap:butt" + inkscape:transform-center-x="20.016903" + inkscape:transform-center-y="-2.9879292" + d="M 470.1782,953.16046 314.58844,919.95997 199.03246,1029.3093 182.52811,871.07505 C 71.670655,940.24752 49.745259,878.63757 42.822005,794.96559 76.303573,704.51898 123.79343,602.20436 188.21153,654.06581 l 29.21286,-80.08137 106.36002,118.31315 157.76063,-20.54334 -79.65539,137.71513 z m 0,-11.48694 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m -155.58976,-33.20049 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m -115.55598,109.34937 11.48694,11.4869 -11.48694,11.4869 -11.48694,-11.4869 z m -16.50435,-158.23429 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z M 77.356398,940.24752 a 5.685743,5.685743 0 0 1 -5.685743,5.68574 5.685743,5.685743 0 0 1 -5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,5.68574 z M 182.52811,871.07505 76.494373,937.23763 M 55.431002,878.63757 a 5.685743,5.685743 0 0 1 -5.685743,5.68574 5.685743,5.685743 0 0 1 -5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,5.68574 z m -12.608997,-83.67198 6.454402,78.0056 m -6.454402,-89.49254 11.486936,11.48694 -11.486936,11.48694 -11.486936,-11.48694 z m 39.167311,-78.95967 a 5.685743,5.685743 0 0 1 -5.685743,5.68574 5.685743,5.685743 0 0 1 -5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,-5.68574 5.685743,5.685743 0 0 1 5.685743,5.68574 z M 42.822005,794.96559 74.329723,709.85111 M 129.47917,602.20436 a 5.685743,5.685743 0 0 1 -5.68574,5.68574 5.685743,5.685743 0 0 1 -5.68574,-5.68574 5.685743,5.685743 0 0 1 5.68574,-5.68574 5.685743,5.685743 0 0 1 5.68574,5.68574 z m 58.73236,51.86145 -59.98927,-48.2959 m 59.98927,36.80896 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m 29.21286,-80.08137 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m 106.36002,118.31315 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m 157.76063,-20.54334 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z m -79.65539,137.71513 11.48694,11.48694 -11.48694,11.48694 -11.48694,-11.48694 z" + id="path16" + inkscape:path-effect="#path-effect19" + inkscape:original-d="M 470.1782,953.16046 314.58844,919.95997 199.03246,1029.3093 182.52811,871.07505 C 71.670655,940.24752 49.745259,878.63757 42.822005,794.96559 76.303573,704.51898 123.79343,602.20436 188.21153,654.06581 l 29.21286,-80.08137 106.36002,118.31315 157.76063,-20.54334 -79.65539,137.71513 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <g + id="g66" + inkscape:path-effect="#path-effect68" + style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + transform="matrix(3.0699203,0,0,3.0699203,233.46544,189.91978)"> + <path + id="path54" + d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z m 0,-1.87088 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -42.42744,-22.60381 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -42.67325,22.13627 1.87088,1.87088 -1.87088,1.87088 -1.870884,-1.87088 z m 8.3867,-47.335865 1.87088,1.870884 -1.87088,1.870881 -1.87088,-1.870881 z M 75.066016,62.841512 76.9369,64.712396 75.066016,66.58328 73.195132,64.712396 Z m 47.610704,-6.651358 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 21.51201,-42.991319 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 21.03834,43.225092 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 47.53475,7.174086 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m -34.6083,33.365934 1.87088,1.870884 -1.87088,1.870889 -1.87088,-1.870889 z" + inkscape:transform-center-y="-6.7958377" + inkscape:transform-center-x="-0.12289915" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + inkscape:original-d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z" /> + <path + id="path56" + d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z m 0,-1.87088 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -53.12184,-11.38813 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -39.49685,37.3044 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -5.5848,-54.041 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m -47.683786,-26.03605 1.870884,1.87088 -1.870884,1.87088 -1.870884,-1.87088 z m 49.670246,-22.01104 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m 10.02665,-53.395565 1.87088,1.870884 -1.87088,1.870884 -1.87088,-1.870884 z m 36.2827,40.437425 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z m 43.41491,-13.80993 a 0.92604047,0.92604047 0 0 1 -0.92604,0.92604 0.92604047,0.92604047 0 0 1 -0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,0.92604 z m -43.41491,15.68081 41.62011,-15.36019 m 18.71898,-1.14809 a 0.92604047,0.92604047 0 0 1 -0.92604,0.92604 0.92604047,0.92604047 0 0 1 -0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,-0.92604 0.92604047,0.92604047 0 0 1 0.92604,0.92604 z m -33.7048,56.54681 32.31434,-55.74564 m -32.31434,53.87476 1.87088,1.87088 -1.87088,1.87088 -1.87088,-1.87088 z" + inkscape:transform-center-y="-1.044344" + inkscape:transform-center-x="6.8124963" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt" + inkscape:original-d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/ShowHandles_path_0_92_5.svg b/testfiles/lpe_tests/ShowHandles_path_0_92_5.svg new file mode 100644 index 0000000..07a4778 --- /dev/null +++ b/testfiles/lpe_tests/ShowHandles_path_0_92_5.svg @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="show_handles" + id="path-effect68" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="10" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect19" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="20" /> + <inkscape:path-effect + effect="show_handles" + id="path-effect14" + is_visible="true" + nodes="true" + handles="true" + original_path="true" + scale_nodes_and_handles="10" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.49497475" + inkscape:cx="-289.24727" + inkscape:cy="670.84354" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:0.26458333;stroke-linecap:butt" + id="path12" + sodipodi:sides="5" + sodipodi:cx="12.095238" + sodipodi:cy="38.464287" + sodipodi:r1="91.379601" + sodipodi:r2="45.6898" + sodipodi:arg1="0.67990885" + sodipodi:arg2="1.3082274" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 83.154759,95.916665 23.954587,82.588132 -20.586621,123.79967 -26.204292,63.378216 -79.162784,33.752075 -23.434522,9.7380969 l 11.81106,-59.5214999 40.05963,45.579999 60.258128,-7.160169 -30.970048,52.183967 z m 0,-1.870886 1.870887,1.870886 -1.870887,1.870887 -1.870886,-1.870887 z M 23.954587,80.717245 25.825473,82.588132 23.954587,84.459018 22.0837,82.588132 Z m -44.541208,41.211535 1.870886,1.87089 -1.870886,1.87089 -1.870887,-1.87089 z m -5.617671,-60.421451 1.870886,1.870887 -1.870886,1.870886 -1.870887,-1.870886 z m -52.958492,-29.626141 1.870887,1.870887 -1.870887,1.870887 -1.870886,-1.870887 z m 55.728262,-24.0139777 1.870886,1.8708866 -1.870886,1.8708861 -1.870887,-1.8708861 z m 11.81106,-59.5214993 1.8708866,1.870886 -1.8708866,1.870887 -1.870887,-1.870887 z m 40.05963,45.5799984 1.870887,1.8708866 -1.870887,1.8708866 -1.870886,-1.8708866 z m 60.258128,-7.1601684 1.870887,1.870886 -1.870887,1.8708868 -1.870886,-1.8708868 z m -30.970048,52.183966 1.870887,1.870887 -1.870887,1.870886 -1.870886,-1.870886 z" + inkscape:transform-center-x="7.3294815" + inkscape:transform-center-y="-1.4561542" + inkscape:path-effect="#path-effect14" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt" + inkscape:transform-center-x="6.520331" + inkscape:transform-center-y="-0.97330164" + d="m 77.107142,248.61905 -50.682025,-10.81477 -37.641364,35.61958 -5.376149,-51.54342 c -36.110858,22.53233 -43.252867,2.46342 -45.508057,-24.792 10.906332,-29.4622 26.375742,-62.79031 47.359382,-45.89689 l 9.5158375,-26.08581 34.6458565,38.53948 51.389169,-6.69181 -25.947065,44.85952 z m 0,-3.74177 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m -50.682025,-10.81477 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m -37.641364,35.61958 3.7417732,3.74177 -3.7417732,3.74177 -3.741773,-3.74177 z m -5.376149,-51.54342 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m -34.258775,26.2741 a 1.8520832,1.8520832 0 0 1 -1.852083,1.85208 1.8520832,1.8520832 0 0 1 -1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,1.85208 z m 34.258775,-22.53233 -34.539572,21.55188 m -6.861212,-19.08846 a 1.8520832,1.8520832 0 0 1 -1.852083,1.85208 1.8520832,1.8520832 0 0 1 -1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,1.85208 z m -4.107273,-27.25542 2.102465,25.40964 m -2.102465,-29.15141 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m 12.758415,-25.72043 a 1.8520832,1.8520832 0 0 1 -1.852083,1.85208 1.8520832,1.8520832 0 0 1 -1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,1.85208 z m -12.758415,29.4622 10.263367,-27.7253 m 17.964458,-35.06501 a 1.8520832,1.8520832 0 0 1 -1.852083,1.85208 1.8520832,1.8520832 0 0 1 -1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,-1.85208 1.8520832,1.8520832 0 0 1 1.852083,1.85208 z m 19.131557,16.89342 -19.540985,-15.73197 m 19.540985,11.9902 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m 9.5158375,-26.08581 3.7417732,3.74177 -3.7417732,3.74177 -3.7417732,-3.74177 z m 34.6458565,38.53948 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m 51.389169,-6.69181 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z m -25.947065,44.85952 3.741773,3.74177 -3.741773,3.74177 -3.741773,-3.74177 z" + id="path16" + inkscape:path-effect="#path-effect19" + inkscape:original-d="m 77.107142,248.61905 -50.682025,-10.81477 -37.641364,35.61958 -5.376149,-51.54342 c -36.110858,22.53233 -43.252867,2.46342 -45.508057,-24.792 10.906332,-29.4622 26.375742,-62.79031 47.359382,-45.89689 l 9.5158375,-26.08581 34.6458565,38.53948 51.389169,-6.69181 -25.947065,44.85952 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <g + id="g66" + inkscape:path-effect="#path-effect68" + style="stroke:black;stroke-width:0.26458333;stroke-linecap:butt;fill:none"> + <path + id="path54" + d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z m 0,-1.87089 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -42.42744,-22.60381 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -42.67325,22.13627 1.87089,1.87089 -1.87089,1.87089 -1.870887,-1.87089 z m 8.3867,-47.335858 1.87089,1.870887 -1.87089,1.870891 -1.87089,-1.870891 z m -34.239594,-33.744183 1.870887,1.870887 -1.870887,1.870887 -1.870887,-1.870887 z m 47.610704,-6.651358 1.87089,1.870887 -1.87089,1.870887 -1.87089,-1.870887 z m 21.51201,-42.991319 1.87089,1.870887 -1.87089,1.870887 -1.87089,-1.870887 z m 21.03834,43.225092 1.87089,1.870887 -1.87089,1.870887 -1.87089,-1.870887 z m 47.53475,7.174086 1.87089,1.870887 -1.87089,1.870887 -1.87089,-1.870887 z m -34.6083,33.365934 1.87089,1.870887 -1.87089,1.870889 -1.87089,-1.870889 z" + inkscape:transform-center-y="-6.7958377" + inkscape:transform-center-x="-0.12289915" + style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:0.26458333;stroke-linecap:butt" + inkscape:original-d="m 186.0196,146.25998 -42.42744,-22.60381 -42.67325,22.13627 8.3867,-47.335861 -34.239594,-33.744183 47.610704,-6.651358 21.51201,-42.991319 21.03834,43.225092 47.53475,7.174086 -34.6083,33.365934 z" /> + <path + id="path56" + d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z m 0,-1.87089 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -53.12184,-11.38813 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -39.49685,37.3044 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -5.5848,-54.041 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m -47.683786,-26.03605 1.870887,1.87089 -1.870887,1.87089 -1.870887,-1.87089 z m 49.670246,-22.01104 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m 10.02665,-53.395558 1.87089,1.870887 -1.87089,1.870887 -1.87089,-1.870887 z m 36.2827,40.437418 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z m 43.41491,-13.80992 a 0.92604162,0.92604162 0 0 1 -0.92604,0.92604 0.92604162,0.92604162 0 0 1 -0.92604,-0.92604 0.92604162,0.92604162 0 0 1 0.92604,-0.92604 0.92604162,0.92604162 0 0 1 0.92604,0.92604 z m -43.41491,15.68081 41.6201,-15.36019 m 18.71899,-1.14809 a 0.92604162,0.92604162 0 0 1 -0.92604,0.92604 0.92604162,0.92604162 0 0 1 -0.92604,-0.92604 0.92604162,0.92604162 0 0 1 0.92604,-0.92604 0.92604162,0.92604162 0 0 1 0.92604,0.92604 z m -33.7048,56.54681 32.31434,-55.74564 m -32.31434,53.87475 1.87089,1.87089 -1.87089,1.87089 -1.87089,-1.87089 z" + inkscape:transform-center-y="-1.044344" + inkscape:transform-center-x="6.8124963" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt" + inkscape:original-d="m 218.09195,221.09547 -53.12184,-11.38813 -39.49685,37.3044 -5.5848,-54.041 -47.683786,-26.03605 49.670246,-22.01104 10.02665,-53.395561 36.2827,40.437421 c 42.48887,-15.68081 59.41305,-16.50828 26.63429,40.03853 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Simplify_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Simplify_multi_mm_1_0_2.svg new file mode 100644 index 0000000..ba779ac --- /dev/null +++ b/testfiles/lpe_tests/Simplify_multi_mm_1_0_2.svg @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 296.99999" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="simplify" + id="path-effect37" + is_visible="true" + steps="1" + threshold="0.05" + smooth_angles="70" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + <inkscape:path-effect + effect="simplify" + id="path-effect17" + is_visible="true" + steps="1" + threshold="0.05" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + <inkscape:path-effect + effect="simplify" + id="path-effect12" + is_visible="true" + steps="1" + threshold="0.2" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.24748737" + inkscape:cx="-332.71058" + inkscape:cy="723.97691" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="mm" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.89863" + id="path10" + sodipodi:sides="5" + sodipodi:cx="228.92471" + sodipodi:cy="-145.62271" + sodipodi:r1="321.31464" + sodipodi:r2="160.65732" + sodipodi:arg1="0.64508339" + sodipodi:arg2="1.2734019" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 485.67105,47.572557 c -976.33842,270.368333 3.43346,820.677343 -43.057,-85.34293 0,0 43.057,85.34293 43.057,85.34293 z" + inkscape:transform-center-x="-1.5951224" + inkscape:transform-center-y="178.40481" + inkscape:path-effect="#path-effect12" + transform="matrix(0.26449453,0,0,0.55672514,-62.931993,-82.13639)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.766672" + inkscape:transform-center-x="-9.024773" + inkscape:transform-center-y="12.747568" + d="m 151.07926,339.21572 c -21.0985,-4.57186 -43.75843,-17.64222 -63.894085,-16.97355 -13.939867,17.543 -63.810985,38.79138 -47.768954,34.05961 -2.158559,-20.33763 3.284632,-44.78738 -3.561099,-62.5895 -20.992136,-7.83662 -56.611279,-48.70053 -47.154022,-34.90601 18.675206,-8.33757 43.610348,-10.71616 58.425731,-22.72799 0.96604,-22.38615 28.823226,-68.89017 18.626158,-55.63268 13.700471,15.18472 23.668047,38.16441 39.670191,48.54282 21.58893,-5.99897 74.42546,6.12425 58.66562,0.52304 -10.20785,17.72228 -28.98266,34.30314 -33.90818,52.72919 6.96621,18.99169 13.93243,37.98338 20.89864,56.97507 z" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="m 151.07926,339.21572 -61.20225,-19.0875 -50.42025,39.596 -0.75933,-64.1051 -53.23874,-35.7167 60.73295,-20.5317 17.51689,-61.67011 38.29436,51.41581 64.06477,-2.3976 -37.0657,52.3085 z" /> + <g + id="g35" + inkscape:path-effect="#path-effect37" + transform="matrix(0.88941651,0,0,0.88941651,86.924193,-123.73781)"> + <path + id="path19" + d="m 191.25594,159.41665 c -27.3194,-31.41565 -87.35937,14.47393 -83.88519,-1.12386 8.68331,-38.98493 -7.487318,-70.822268 -19.97529,-75.62626 43.3593,20.08525 66.6708,-74.1473817 62.97914,-36.337608 -4.52511,46.345883 92.79122,20.084036 47.42914,47.893821 -28.24384,17.315237 -9.74878,39.500047 -6.5478,65.193907 z" + inkscape:transform-center-y="-5.746647" + inkscape:transform-center-x="1.1785038" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 191.25594,159.41665 -43.45028,-19.98194 -41.09328,24.46523 5.57709,-47.49843 -35.966346,-31.521863 46.897106,-9.373701 18.86486,-43.946814 23.40692,41.705169 47.62547,4.361234 -32.43084,35.148915 z" /> + <path + id="path21" + d="m 177.64881,248.61904 c -33.3683,-21.17938 -64.35061,-20.90404 -92.048597,8.90385 0.73997,-25.54806 -31.369468,-38.00227 -34.816994,-79.72709 -1.247757,-15.10139 39.389493,-14.77776 58.688631,-55.91189 13.61097,-29.010383 20.44658,34.8093 67.59235,33.04132 48.58482,-1.82194 -19.11816,25.33402 -6.45803,69.25898 2.34755,8.14494 4.69509,16.28989 7.04264,24.43483 z" + inkscape:transform-center-y="-5.0438939" + inkscape:transform-center-x="2.7598212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 177.64881,248.61904 -49.96309,-19.56673 -44.443449,30.06571 3.169627,-53.56417 -42.327973,-32.97742 51.922024,-13.53775 18.283321,-50.44687 28.91995,45.19738 53.62769,1.79954 -34.04851,41.47126 z" /> + <path + id="path23" + d="m 208.64287,308.33928 c -40.46469,-12.30734 -68.63831,59.91171 -74.12605,43.77026 -13.29784,-39.11383 -45.19052,-57.67164 -58.029737,-55.65312 48.057867,-5.96834 19.661972,-99.033 35.752417,-65.79354 20.7231,42.80955 91.35521,-30.51546 67.58387,16.4272 -15.41415,30.43922 11.84866,40.32582 28.8195,61.2492 z" + inkscape:transform-center-y="6.3957149" + inkscape:transform-center-x="0.69036649" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 208.64287,308.33928 -48.74659,5.58415 -23.0351,43.32202 -20.37437,-44.63517 -48.319919,-8.52045 36.154539,-33.17019 -6.828251,-48.58794 42.719101,24.13486 44.09983,-21.50856 -9.75269,48.08636 z" /> + <path + id="path25" + d="m 234.34523,208.93155 c -18.46451,121.60561 -106.90001,-94.96182 -19.85317,-41.44448 13.97189,8.59007 19.81414,25.83934 19.85317,41.44448 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 234.34523,208.93155 a 32.505951,44.979168 0 0 1 -32.50595,44.97917 32.505951,44.979168 0 0 1 -32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Simplify_multi_px_1_0_2.svg b/testfiles/lpe_tests/Simplify_multi_px_1_0_2.svg new file mode 100644 index 0000000..a6ea9a8 --- /dev/null +++ b/testfiles/lpe_tests/Simplify_multi_px_1_0_2.svg @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="simplify" + id="path-effect37" + is_visible="true" + steps="1" + threshold="0.05" + smooth_angles="70" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + <inkscape:path-effect + effect="simplify" + id="path-effect17" + is_visible="true" + steps="1" + threshold="0.05" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + <inkscape:path-effect + effect="simplify" + id="path-effect12" + is_visible="true" + steps="1" + threshold="0.2" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-97.142857" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.89863" + id="path10" + sodipodi:sides="5" + sodipodi:cx="228.92471" + sodipodi:cy="-145.62271" + sodipodi:r1="321.31464" + sodipodi:r2="160.65732" + sodipodi:arg1="0.64508339" + sodipodi:arg2="1.2734019" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 485.67105,47.572557 c -976.32528,270.378213 3.41735,820.585083 -43.07481,-85.378225 0,0 43.07481,85.378225 43.07481,85.378225 z" + inkscape:transform-center-x="27.341886" + inkscape:transform-center-y="-120.25863" + inkscape:path-effect="#path-effect12" + transform="matrix(1,0,0,2.1048645,-207.37653,-418.96435)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.89863" + inkscape:transform-center-x="-34.120645" + inkscape:transform-center-y="48.195994" + d="M 548.08444,1087.9707 C -138.67797,1077.3896 -173.3864,756.08332 -39.270495,814.14887 167.28003,658.26156 827.61707,897.69424 509.16065,666.22054 713.92129,631.75992 322.60336,922.65597 548.08444,1087.9707 Z" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="M 548.08444,1087.9707 316.6912,1015.8051 126.06251,1165.5095 123.19164,923.14104 -78.093216,788.10358 151.52571,710.47723 l 66.2278,-233.16215 144.78318,194.39274 242.21589,-9.06473 -140.138,197.76765 z" /> + <g + id="g35" + inkscape:path-effect="#path-effect37" + transform="matrix(3.3627029,0,0,3.3627029,437.23469,-514.27732)"> + <path + id="path19" + d="m 191.25594,159.41665 c -27.32188,-31.40634 -87.36081,14.48396 -83.88541,-1.12198 8.68269,-38.98871 -7.499976,-70.823482 -19.978787,-75.627397 43.355437,20.074847 66.667527,-74.1267991 62.980067,-36.343308 -4.52284,46.34325 92.77479,20.092518 47.43707,47.893207 -28.24344,17.318628 -9.75889,39.501508 -6.55294,65.199478 z" + inkscape:transform-center-y="-5.746647" + inkscape:transform-center-x="1.1785038" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 191.25594,159.41665 -43.45028,-19.98194 -41.09328,24.46523 5.57709,-47.49843 -35.966346,-31.521863 46.897106,-9.373701 18.86486,-43.946814 23.40692,41.705169 47.62547,4.361234 -32.43084,35.148915 z" /> + <path + id="path21" + d="m 177.64881,248.61904 c -33.36196,-21.1679 -64.34137,-20.91198 -92.034471,8.89429 0.692987,-25.48129 -31.219977,-37.98781 -34.819162,-79.70821 -1.304284,-15.11877 39.392387,-14.76233 58.672153,-55.90874 13.61054,-29.047283 20.44465,34.80186 67.58551,33.02847 48.60415,-1.82844 -19.10671,25.33459 -6.44929,69.25025 2.34842,8.14798 4.69684,16.29596 7.04526,24.44394 z" + inkscape:transform-center-y="-5.0438939" + inkscape:transform-center-x="2.7598212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 177.64881,248.61904 -49.96309,-19.56673 -44.443449,30.06571 3.169627,-53.56417 -42.327973,-32.97742 51.922024,-13.53775 18.283321,-50.44687 28.91995,45.19738 53.62769,1.79954 -34.04851,41.47126 z" /> + <path + id="path23" + d="m 208.64287,308.33928 c -40.46188,-12.29798 -68.63455,59.92162 -74.12526,43.77198 -13.29992,-39.11858 -45.203656,-57.66484 -58.03332,-55.65228 48.04939,-5.97498 19.670068,-99.01403 35.75026,-65.7989 20.72354,42.80639 91.346,-30.49949 67.59032,16.42258 -15.41233,30.44234 11.84075,40.33194 28.818,61.25662 z" + inkscape:transform-center-y="6.3957149" + inkscape:transform-center-x="0.69036649" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 208.64287,308.33928 -48.74659,5.58415 -23.0351,43.32202 -20.37437,-44.63517 -48.319919,-8.52045 36.154539,-33.17019 -6.828251,-48.58794 42.719101,24.13486 44.09983,-21.50856 -9.75269,48.08636 z" /> + <path + id="path25" + d="m 234.34523,208.93155 c -18.46451,121.60561 -106.90001,-94.96182 -19.85317,-41.44448 13.97189,8.59007 19.81414,25.83934 19.85317,41.44448 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + inkscape:original-d="m 234.34523,208.93155 a 32.505951,44.979168 0 0 1 -32.50595,44.97917 32.505951,44.979168 0 0 1 -32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Simplify_path_0_92_5.svg b/testfiles/lpe_tests/Simplify_path_0_92_5.svg new file mode 100644 index 0000000..9301952 --- /dev/null +++ b/testfiles/lpe_tests/Simplify_path_0_92_5.svg @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="simplify" + id="path-effect37" + is_visible="true" + steps="7" + threshold="0.01" + smooth_angles="70" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" /> + <inkscape:path-effect + effect="simplify" + id="path-effect17" + is_visible="true" + steps="3" + threshold="0.05" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" /> + <inkscape:path-effect + effect="simplify" + id="path-effect12" + is_visible="true" + steps="1" + threshold="0.2" + smooth_angles="0" + helper_size="5" + simplify_individual_paths="false" + simplify_just_coalesce="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-97.142857" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path10" + sodipodi:sides="5" + sodipodi:cx="-21.922619" + sodipodi:cy="38.464287" + sodipodi:r1="95.552498" + sodipodi:r2="47.776249" + sodipodi:arg1="0.64508339" + sodipodi:arg2="1.2734019" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 54.428569,95.916666 C -59.441148,98.70858 -32.089142,127.28252 -108.84592,41.295713 -50.491299,-9.1658611 -60.94788,-59.488976 33.451831,-12.868901 81.878401,-27.015301 -9.2712258,60.957124 54.428569,95.916666 Z" + inkscape:transform-center-x="8.6523977" + inkscape:transform-center-y="-0.49499898" + inkscape:path-effect="#path-effect12" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:transform-center-x="6.0612798" + inkscape:transform-center-y="-4.4298032" + d="M -9.8273869,249.37498 C -44.066014,205.05236 -149.0589,269.37406 -132.88626,259.10689 c 18.18119,-46.11161 -57.0837,-101.88392 -49.72481,-100.70204 49.47304,3.04207 79.25755,-85.773681 80.40752,-78.409754 16.183173,48.319014 102.42885612,48.739704 99.5934429,53.903444 -34.3995849,30.78447 -30.0230149,79.18789 -7.2172798,115.47644 z" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="m -9.8273869,249.37498 -68.8116791,-21.46059 -56.689124,44.51907 -0.85374,-72.07548 -59.85806,-40.15741 68.28404,-23.0845 19.69481,-69.337724 43.055596,57.808474 72.0301198,-2.69566 -41.6742168,58.81211 z" /> + <g + id="g35" + inkscape:path-effect="#path-effect37"> + <path + id="path19" + d="m 191.25594,159.41665 c -18.48766,-6.95696 -41.36237,-26.8838 -60.48607,-8.06902 -13.10783,12.89609 -22.46967,7.75066 -18.80176,-13.41435 3.84698,-22.19831 -17.22862,-36.45558 -29.666503,-51.458763 15.437041,-10.54604 46.313973,-2.449765 47.993713,-28.644643 0.76887,-11.990193 14.90952,-27.847479 21.01629,-7.844831 7.26545,23.797878 43.64957,10.414682 53.22788,27.788853 8.20802,14.888595 -18.39745,20.287566 -20.74398,39.508194 -1.77041,14.50159 3.499,28.47868 7.46043,42.13456 z" + inkscape:transform-center-y="-5.746647" + inkscape:transform-center-x="1.1785038" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 191.25594,159.41665 -43.45028,-19.98194 -41.09328,24.46523 5.57709,-47.49843 -35.966346,-31.521863 46.897106,-9.373701 18.86486,-43.946814 23.40692,41.705169 47.62547,4.361234 -32.43084,35.148915 z" /> + <path + id="path21" + d="m 177.64881,248.61904 c -19.76792,-3.90285 -45.5149,-32.75483 -58.99174,-13.64229 -7.22546,10.24698 -42.567633,28.01699 -33.868633,3.29428 7.985039,-22.69362 -13.228695,-35.8789 -28.921696,-53.59637 -12.432592,-14.03645 6.567999,-15.69761 18.971313,-18.18354 20.012341,-4.01096 20.898617,-28.59919 32.559616,-44.18956 13.59578,-18.17711 21.61055,10.54849 26.67655,20.28302 11.96273,22.98689 72.29586,5.30619 56.441,21.63767 -12.27172,12.64063 -26.3798,24.85632 -24.19487,46.06884 1.38414,13.43799 8.4146,25.26874 11.32846,38.32795 z" + inkscape:transform-center-y="-5.0438939" + inkscape:transform-center-x="2.7598212" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 177.64881,248.61904 -49.96309,-19.56673 -44.443449,30.06571 3.169627,-53.56417 -42.327973,-32.97742 51.922024,-13.53775 18.283321,-50.44687 28.91995,45.19738 53.62769,1.79954 -34.04851,41.47126 z" /> + <path + id="path23" + d="m 208.64287,308.33928 c -18.45909,4.56079 -52.3219,-3.5329 -55.93707,21.41976 -2.6221,18.09828 -16.24869,25.47673 -24.84657,3.08418 -7.5262,-19.60144 -30.670383,-27.74917 -50.230727,-26.30664 -8.372361,-20.73048 30.282957,-21.45045 26.178707,-45.0754 -1.73214,-9.97057 -10.296233,-45.03995 8.4141,-29.88924 17.51084,14.17942 35.77187,3.46915 57.92601,-0.7378 23.93264,-4.54468 5.65722,18.32112 6.00811,30.15259 0.56626,19.09316 15.61358,32.81295 29.44714,43.7738 0,0 1.55678,1.75804 1.55678,1.75804 0,0 1.48352,1.82071 1.48352,1.82071 z" + inkscape:transform-center-y="6.3957149" + inkscape:transform-center-x="0.69036649" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 208.64287,308.33928 -48.74659,5.58415 -23.0351,43.32202 -20.37437,-44.63517 -48.319919,-8.52045 36.154539,-33.17019 -6.828251,-48.58794 42.719101,24.13486 44.09983,-21.50856 -9.75269,48.08636 z" /> + <path + id="path25" + d="m 234.34523,208.93155 c 1.72408,20.71298 -13.82545,50.62725 -35.82949,44.74695 -25.97148,-6.94055 -31.03197,-38.30462 -27.30855,-62.2095 3.28968,-21.12023 32.89522,-36.2639 49.48701,-19.27655 9.43605,9.66101 13.65663,23.44761 13.65103,36.7391 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 234.34523,208.93155 a 32.505951,44.979168 0 0 1 -32.50595,44.97917 32.505951,44.979168 0 0 1 -32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,-44.97917 32.505951,44.979168 0 0 1 32.50595,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Sketch_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Sketch_multi_mm_1_0_2.svg new file mode 100644 index 0000000..13ad52e --- /dev/null +++ b/testfiles/lpe_tests/Sketch_multi_mm_1_0_2.svg @@ -0,0 +1,192 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="sketch" + id="path-effect35" + is_visible="true" + lpeversion="1" + nbiter_approxstrokes="4" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="0.3" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect29" + is_visible="true" + nbiter_approxstrokes="5" + lpeversion="1" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="1" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect17" + is_visible="true" + nbiter_approxstrokes="3" + lpeversion="1" + strokelength="100" + strokelength_rdm="0.7;1" + strokeoverlap="0.6" + strokeoverlap_rdm="1;1" + ends_tolerance="0.5;1" + parallel_offset="6.5;1" + tremble_size="7.3;1" + tremble_frequency="3" + nbtangents="11" + tgt_places_rdmness="1;1" + tgtscale="10.8" + tgtlength="107" + tgtlength_rdm="1;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect12" + is_visible="true" + nbiter_approxstrokes="5" + lpeversion="1" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="0.3" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-95.714286" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path10" + sodipodi:sides="5" + sodipodi:cx="-39.309525" + sodipodi:cy="19.565475" + sodipodi:r1="95.099884" + sodipodi:r2="47.549942" + sodipodi:arg1="0.63873167" + sodipodi:arg2="1.2670502" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 33.671155,82.982525 C 15.933542,78.964144 -2.8983721,75.666218 -22.029339,72.467571 c -5.832156,5.701256 -11.717139,11.42005 -17.595907,17.110263 M -27.0935,65.63095 c -14.206646,13.553495 -27.620503,27.611361 -40.656545,41.83913 -0.40569,-4.21784 -0.79289,-8.427359 -1.166091,-12.632188 m -3.017757,16.876468 c -0.611103,0.56444 -1.220297,1.12871 -1.827646,1.6928 -3.625515,-21.233253 -6.023216,-42.589957 -8.270546,-64.486787 -2.587206,-1.497927 -5.171379,-3.006749 -7.755605,-4.52766 m 14.625521,14.465562 c -0.225723,-2.461602 -0.465949,-4.932947 -0.718558,-7.412498 -18.037386,-8.952435 -36.904983,-18.454966 -55.439163,-27.663335 7.36815,-3.379766 14.78531,-6.716291 22.31706,-9.961995 m -27.37891,2.903989 c -0.89349,-0.461687 -1.78343,-0.922668 -2.66988,-1.383004 18.49354,-9.6079167 38.6334,-18.9116561 59.675348,-28.542769 1.57367,-6.312535 3.226489,-12.653793 4.939115,-19.040187 m -5.967986,26.1778146 c 0.826391,-0.3847693 1.655971,-0.7731506 2.488667,-1.1650783 2.726219,-20.3665813 6.983172,-42.4751963 11.987757,-65.6106583 2.725184,2.155564 5.471274,4.282414 8.234609,6.383895 m -15.59542,3.270243 c 0.292283,-2.312758 0.602605,-4.627992 0.92994,-6.945696 14.23482,15.19011 29.84456,30.180652 46.083953,44.976988 1.605928,-0.269405 3.215068,-0.5398 4.827147,-0.811184 m -8.052362,-12.089849 c 2.896473,2.907688 5.750734,5.851995 8.566419,8.831196 19.1003862,-2.919321 37.332116,-5.052921 55.083678,-6.585358 m -15.631632,3.525018 c 6.741886,-0.930853 13.392569,-1.964171 19.973783,-3.085424 C 28.56034,-17.048463 17.932554,0.39075899 7.2983205,17.40952 c 1.2841156,2.46931 2.5680986,4.929976 3.8539835,7.38336 M 18.021429,1.1157986 C 15.315276,6.1857159 12.677621,11.208834 10.099448,16.20579 19.773903,35.629025 30.328277,54.665249 41.249558,74.488716 37.748042,74.003897 34.258492,73.544752 30.777886,73.118195 M 27.858675,74.49597 C 11.117459,71.542989 -6.5584,68.241167 -24.413574,64.807421 c -6.812792,6.603853 -13.675841,13.170732 -20.477075,19.732822 m 9.342369,-19.386025 c -12.052495,13.465914 -25.099851,26.107736 -38.357638,38.356822 -1.772631,-12.056407 -3.630925,-24.272692 -5.371139,-36.536815 m 2.111477,31.876524 c -1.669938,-17.147112 -3.687924,-33.578764 -5.506637,-49.154944 -8.969734,-3.665546 -17.868863,-7.028002 -26.581973,-10.057841 m 22.531532,2.189355 c -16.412962,-7.110545 -32.503812,-14.371407 -48.836272,-21.063066 5.95472,-2.475241 11.87287,-4.864325 17.72126,-7.12488 m -12.26995,0.930029 c 17.77264,-9.0227683 34.95861,-17.4341671 51.688223,-25.780964 0.720197,-6.620307 1.386235,-13.232947 2.003441,-19.860274 M -78.6192,-9.8094442 c 2.821269,-19.7230808 6.574877,-39.7649158 10.872254,-59.4718448 7.465961,7.532488 15.061085,15.144527 22.740387,22.911788 m -17.930417,-19.719394 c 13.804876,14.465076 27.182196,27.725132 40.523664,40.183576 12.771708,-3.1351 25.5274056,-6.628176 38.383986,-10.35884 m -29.63839,5.646445 c 17.3590123,-2.365088 34.826065,-4.670053 52.452202,-6.566727 -6.907581,14.094768 -13.696408,28.4943165 -20.33356,43.4231951 M 29.815263,-25.711051 C 22.538523,-11.916121 15.604793,1.5562751 9.0746635,14.798147 15.131061,25.055511 21.424223,35.177641 27.981376,45.205879 M 6.894631,36.36668 C 14.698418,50.182939 22.441538,64.180861 30.49635,78.117063 17.299525,75.37572 4.3480883,72.585786 -8.0978531,69.577248 m 34.0659761,6.60999 C 8.2801018,72.705843 -9.7540666,69.114329 -27.917704,65.21656 c -9.53272,8.948211 -19.134099,17.734012 -28.720459,26.281657 M -34.318576,73.62672 c -12.268667,11.020029 -23.831228,23.057405 -35.046156,35.48724 -1.585089,-15.257252 -2.852886,-30.156299 -4.115973,-45.242031 m 0.790312,30.05483 C -74.611749,79.105161 -76.558772,63.925534 -78.510898,48.23887 -93.559182,39.320056 -108.6142,29.732109 -123.64477,19.249132 m 17.96904,19.760428 c -11.96581,-6.077662 -23.61075,-12.062223 -35.04861,-18.018333 18.45768,-8.687778 37.39463,-17.3097102 56.410165,-26.093436 m -25.522115,3.583332 c 10.17967,-4.2688399 20.110034,-8.581328 29.892986,-12.783998 2.788764,-17.801169 5.134842,-35.272546 7.568523,-51.615473 m 0.129668,26.155083 c 1.368188,-10.032638 2.776077,-19.981074 4.170942,-29.850707 9.18345,10.053097 18.343377,20.248535 27.351794,30.57321 m -7.419861,-8.251218 c 8.817662,8.67108 17.56421,17.587004 26.317657,26.591805 16.5896703,-2.699269 33.19156,-5.241131 49.989545,-7.993197 M 2.6568348,-24.356988 C 14.111237,-26.040307 25.792344,-27.939568 37.524354,-29.966418 31.211886,-18.715262 24.957887,-7.6106587 18.54593,3.4561631 M 25.734456,-9.7506373 C 19.206878,2.6214993 12.889117,14.393603 6.779052,25.702737 c 6.939516,11.884746 14.1031,23.270029 21.488377,34.309435 M 12.790033,34.38658 C 18.800401,46.255801 25.17325,58.690385 31.750641,71.458627 13.210567,68.638312 -4.93516,66.461277 -23.109345,64.307254 M 32.06802,82.257227 C 11.632282,79.49364 -8.0676271,75.753888 -27.335049,72.066872 c -4.531976,4.853572 -9.015642,9.713035 -13.462322,14.616802 m 23.821145,-22.901725 c -14.546491,15.017134 -29.422595,29.926523 -44.355534,44.940901 -0.946937,-6.58006 -1.899691,-13.149383 -2.849331,-19.700993 M -64.424594,111.517 c -0.119423,0.12334 -0.238925,0.24671 -0.358507,0.37013 -2.410112,-20.869561 -5.97381,-41.185031 -10.179765,-60.973394 -8.909006,-3.726262 -17.943252,-7.349739 -27.058704,-10.872754 m 23.153898,3.569369 c -18.287764,-9.320426 -36.144958,-18.232807 -53.929988,-26.968543 10.19697,-4.650127 20.41627,-9.2455965 30.59622,-13.8262362 m -19.09712,5.8541301 c 17.6615,-7.94264058 34.345611,-15.4641067 50.81531,-22.4122029 1.449994,-10.022725 2.828169,-19.853393 4.282437,-29.462501 m -13.578069,34.2962643 c 2.586987,-17.5362113 5.698165,-35.4106963 9.15304,-53.3408173 9.258782,9.150196 18.688007,18.272801 28.224643,27.466521 M -61.06611,-69.042181 c 10.925003,11.412185 22.594025,23.659259 34.464302,36.146491 6.986156,-0.987572 14.006806,-1.933982 21.0234372,-2.881431 M -17.449956,-22.366665 C 2.0467217,-25.592768 19.94405,-28.869943 36.784154,-32.370756 28.81705,-20.687919 20.315632,-9.1181068 11.474682,2.2766791 M 38.180439,-18.165985 C 30.676343,-2.8053722 22.705038,12.308774 14.753675,27.40814 21.67539,40.664183 28.612143,53.90908 35.882943,67.294549 M 13.717683,26.384414 C 20.73728,40.237 28.092953,54.330455 35.780552,68.769467 27.319164,67.590463 18.971233,66.529574 10.73593,65.607723 M 32.904703,83.90625 C 13.081997,80.790496 -5.1150767,76.896534 -22.468536,72.578019 c -6.344147,6.825674 -12.451115,13.531987 -18.437482,20.171658 m 11.27795,-22.075395 c -13.676131,12.491516 -26.283652,26.283049 -38.28509,40.674218 -0.899254,-11.874914 -1.51519,-23.469522 -1.995635,-35.007671 m 6.027271,28.969041 c -2.5084,-17.06287 -4.78911,-34.085923 -7.012368,-51.10399 -7.091556,-3.603554 -14.170702,-7.206032 -21.254529,-10.810929 m 13.435063,3.276926 c -17.517634,-7.791238 -34.321634,-16.393905 -51.157474,-25.14133 6.05381,-3.022425 12.1035,-6.063605 18.11429,-9.09245 m -19.45258,6.695308 c 17.28675,-8.968608 35.738977,-17.5722809 54.382306,-26.0844175 0.696005,-3.8279585 1.399227,-7.6524585 2.102515,-11.4755095 m -7.562539,18.51993525 c 1.165811,-0.52068109 2.334087,-1.0462475 3.504803,-1.57650955 3.241286,-20.2725687 7.123265,-41.7780887 11.541447,-63.7093917 5.369145,4.816935 10.800918,9.584139 16.291149,14.333832 m -17.578674,-14.806991 c 0.103737,-0.653812 0.207572,-1.30745 0.311505,-1.960916 14.599841,15.229259 29.300574,30.633774 44.17097,46.216179 11.187979,-1.582083 22.4235771,-3.114239 33.7170185,-4.596076 m -34.6547255,0.994509 c 19.9375479,-3.51337 39.855163,-6.558717 60.337787,-9.540434 -4.506175,9.566057 -8.841634,19.151341 -12.909225,28.6886867 M 34.462374,-28.980559 C 25.635151,-12.772949 15.901478,3.4970595 5.2540418,19.684418 10.50206,32.602724 15.180856,45.469544 19.286834,58.213562 M 14.105363,34.448173 C 22.295364,48.563812 29.411066,62.65072 35.988497,76.40168 20.504476,73.006902 4.5708898,69.331539 -11.403116,65.141098 M -100.46567,-105.44684 10.610506,10.905307 M -12.56425,-20.527902 52.893093,107.19082 M 59.310244,-74.676509 -11.461864,56.602715 M 13.443847,26.224469 -120.69816,161.00326 m 30.911337,-90.907677 26.12396,-167.506368" + inkscape:transform-center-x="8.7897054" + inkscape:transform-center-y="-0.30601065" + inkscape:path-effect="#path-effect12" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:transform-center-x="5.3539721" + inkscape:transform-center-y="-3.0699032" + d="m -11.228897,243.4881 c -6.466234,-3.60199 -15.796205,-5.30736 -25.206431,-7.3174 -2.49147,1.8028 -4.991021,3.57492 -7.409704,5.24601 -6.331206,4.3743 -12.007373,8.32438 -18.091197,11.79987 m 13.701049,-17.90052 c -6.750114,5.93685 -19.506994,13.50116 -32.501244,19.51855 -0.303466,0.14053 -0.601935,0.28101 -0.895572,0.42139 m 0.512659,4.7713 c -1.400213,1.89662 -2.972853,3.67868 -4.645909,5.39754 0.501283,-8.02707 -0.271406,-16.85602 0.935905,-24.16634 0.340624,-2.06249 0.437997,-4.34595 0.353558,-6.79365 m 10.004812,-0.81426 c -2.137353,-7.79118 -3.167149,-15.95289 -7.059195,-20.9993 -2.0603,-0.13102 -4.212015,-0.16253 -6.477805,-0.0747 l -2e-6,0 c -14.948627,0.57978 -15.984617,-15.79721 -19.917717,-29.29632 l 0,0 c -2.30412,-7.90814 -9.85729,-10.38933 -19.38938,-11.95451 0.24666,-0.0281 0.46511,-0.0431 0.66091,-0.0528 m 24.11688,15.68729 c -8.27265,-5.3724 -18.20095,-10.71359 -26.63997,-14.06414 -2.21372,-0.87892 -4.69837,-1.94432 -7.4066,-3.05092 6.36088,-1.30959 11.25516,-2.88944 15.47851,-2.29862 m -3.55216,8.49965 c 11.7652,-2.83928 20.16195,-9.41625 29.256355,-17.12282 3.272012,-2.7727 6.792793,-4.714 10.375222,-6.38339 m -2.386904,12.81381 c 5.667163,-2.77355 10.383151,-4.27223 14.693012,-5.16518 0.998821,-4.86829 1.419358,-8.87409 2.187709,-13.15437 0.322691,-1.79763 0.79909,-3.91242 1.376258,-6.24333 m -5.272268,-12.6345 c 4.725284,-8.67904 5.44836,-20.68575 7.383233,-33.145482 m -12.040071,-4.808447 c 0.787189,-1.728678 1.522113,-3.349867 2.231152,-4.856813 6.79986,8.786478 12.966271,20.368812 21.693131,35.564662 9.505538,16.55174 13.739756,13.97575 20.992219,13.3542 1.158825,-0.95076 2.350292,-1.88037 3.583727,-2.76514 5.901237,-4.23309 10.574591,-4.09606 14.572368,-2.00205 m -24.006934,1.02178 c 3.828495,4.03201 6.932547,8.81879 9.460168,13.73934 4.118983,-0.13957 7.82209,-0.18264 11.200025,-0.50973 7.357021,-0.71241 22.8998006,-2.55052 35.448824,-5.84788 l 3e-6,0 c 3.491813,-0.9175 6.909006,-1.30298 10.346373,-1.33035 -0.451814,0.87712 -0.901499,1.79203 -1.345803,2.73879 m -26.3480082,3.42169 c 10.8774464,0.34854 20.2530432,-3.51121 30.2651772,-9.41902 -0.604676,0.31454 -1.202084,0.6057 -1.789618,0.87611 -4.586943,2.11115 -10.087281,11.73544 -16.287527,20.66195 m 8.922329,-2.99319 c -8.098831,8.58921 -16.4238473,16.04363 -30.512493,20.57983 -4.440558,1.42975 -7.043,3.6526 -8.540063,6.2334 3.782342,6.41661 12.7874286,14.52445 19.48983723,19.85425 2.96545157,2.35814 4.62189607,5.26178 5.44917847,8.49688 M -4.4258026,190.82001 c 3.2552127,10.62472 6.710185,24.58428 8.0543403,42.70409 0.9044157,12.19193 4.0469,16.60071 6.9862083,20.29739 -1.8481755,-1.42969 -3.7107733,-2.90994 -5.6339635,-4.307 m 1.2437897,-18.31394 c 0.8468088,2.58307 2.1212746,5.79057 3.6852076,9.37251 -6.6593912,-1.63751 -12.0618738,-1.64918 -17.457801,-2.29705 -1.1693656,-0.1404 -2.4978558,-0.31699 -3.9602978,-0.50929 m -2.716722,-15.86477 c -9.091294,-3.94966 -19.933789,-1.68584 -27.910354,4.28501 -0.02162,0.0586 -0.0432,0.11718 -0.06474,0.17584 -3.155792,8.59419 -7.477915,11.97563 -11.765416,14.26928 m 29.063488,-16.96488 c -3.006357,-0.33269 -6.36997,-0.72812 -9.946224,-0.96782 -6.029122,6.33806 -12.972295,13.34548 -19.540682,22.96919 -9.739392,14.26973 -16.284143,13.034 -22.983098,18.04109 l -2e-6,0 c -0.421926,0.31536 -0.863922,0.65137 -1.32454,1.0065 0.341931,-4.43225 0.0926,-8.25745 -0.489216,-11.74774 m 12.2185,-4.68175 c -5.483455,3.85432 -11.320708,8.92961 -16.794203,13.78746 0.117178,-3.40689 0.305368,-6.85623 0.626463,-10.47208 l 0,-1e-5 c 1.048138,-11.8031 -0.09956,-21.38474 0.763543,-30.86585 0.372042,-4.08684 0.09804,-8.88018 -0.534754,-13.99387 -3.985385,-2.57942 -8.25046,-5.40856 -12.597533,-8.22166 m 4.172375,47.55036 c -0.352632,-10.13659 1.095843,-25.42411 4.299798,-43.00439 0.49667,-2.72526 0.77283,-5.16023 0.868127,-7.37709 -7.088928,-7.79053 -19.555472,-9.09568 -30.971672,-15.61489 -11.62992,-6.64125 -16.38049,-9.56187 -22.25241,-11.9989 m 55.978346,33.47457 c -9.96137,-3.8543 -17.082706,-11.46537 -23.273596,-16.40379 -3.92729,-3.13277 -10.15217,-7.86573 -16.2742,-13.37763 1.2097,-0.76575 2.42303,-1.55904 3.65595,-2.37441 m -5.88438,16.66776 c -3.45643,-1.84908 -6.70795,-3.80285 -9.92075,-5.8596 6.47994,-3.04741 13.15504,-6.61384 18.1449,-10.67994 l 0,0 c 7.21468,-5.87906 18.614857,-5.54493 24.533349,-5.43397 0.270908,0.005 0.562016,-0.0138 0.872021,-0.0555 -0.224712,-2.09806 0.186168,-4.96465 0.978381,-8.38266 m -16.100441,-3.1284 c 7.689333,-3.85157 15.837008,-5.83766 25.382248,-7.76609 2.238313,-3.29787 4.82707,-6.58128 7.884205,-10.07723 9.164962,-10.48049 5.398333,-18.72996 7.607227,-23.8996 l 0,0 c 0.892019,-2.08766 1.393614,-5.85479 1.381323,-10.20241 0.828611,1.8486 1.517032,3.53883 2.047672,5.2273 m -9.699302,36.77669 c 4.603746,-11.482 4.627625,-26.27519 5.435893,-46.53067 0.05664,-1.419336 0.133749,-2.744034 0.229265,-3.983892 4.949625,1.702557 13.142744,18.357042 19.734518,27.042612 5.723451,7.54143 13.210887,15.57509 22.896168,24.97972 0.869853,0.11964 1.749318,0.24528 2.638521,0.37717 M -63.340824,96.551676 c 9.076326,7.230744 16.407704,20.397504 28.771965,34.798714 6.793171,7.91231 10.499989,12.53996 13.891233,16.66358 4.71898,-0.85601 9.225434,-2.05148 15.0507023,-2.0496 8.1568815,0.003 13.6215383,-1.95023 17.7741467,-5.39312 m -51.122107,-3.6893 c 1.818369,1.55148 3.40945,3.31786 4.821281,5.24484 8.381438,-0.47875 14.48863,1.08005 20.492599,2.22242 7.359841,1.40035 23.808457,-2.46156 40.440601,-6.14886 0.0014,0.25668 0.0031,0.51372 0.0044,0.77162 0.0286,5.73148 -15.041929,16.85728 -28.5273545,24.93683 m -0.019506,-21.02726 c 7.1815617,-2.0269 16.6065126,-2.01433 26.6322346,-2.531 -0.985842,2.37918 -1.896347,4.69199 -2.804459,6.82436 l -10e-7,0 c -3.473585,8.15648 -12.479712,18.39212 -18.6572818,27.54537 l -1.4e-6,1e-5 c -1.71999,2.54849 -3.53247527,4.95734 -5.4305874,7.22317 M 12.50962,155.49298 c -4.8229707,6.7226 -11.57196561,17.39669 -16.0167009,25.0951 m 5.4802722,2.90647 c -0.6720657,1.48588 -1.4095459,2.95358 -2.20530612,4.41782 3.60565672,10.8337 4.59582922,21.51172 5.11539072,36.45686 0.5181822,14.90546 7.6822951,18.38677 14.7657901,23.76123 -0.863272,-0.96405 -1.728424,-1.88397 -2.619395,-2.71235 -0.824445,-0.76654 -1.783213,-1.45072 -2.854554,-2.06988 M 8.4113567,229.91465 c 1.9611433,3.88202 3.4630963,8.6923 4.5007273,13.62014 -6.4444282,-1.71336 -13.40714178,-3.29549 -20.8941898,-5.70246 -3.5691442,-1.14743 -6.5049452,-2.1082 -8.9806652,-2.94933 m 20.1853305,-1.84204 c -10.6843154,-3.51153 -25.6220095,-6.72574 -44.8773175,-10.8773 -1.960571,-0.42272 -3.698745,-0.79554 -5.241828,-1.1217 -10.25987,5.42583 -8.979078,13.61209 -8.580973,23.09148 m 28.508878,-22.30639 c -5.473548,-0.7606 -10.40882,-2.16445 -15.131647,-3.75619 -4.314277,3.58621 -8.349698,6.92581 -12.596265,10.70359 -7.955511,7.07729 -17.944554,14.31213 -28.058879,21.86218 l -3e-6,0 c -2.059366,1.53726 -3.941837,3.1533 -5.685639,4.86123 -0.212702,-7.19976 1.402668,-13.18818 3.016418,-17.33817 m 26.113978,2.73081 c -6.381035,4.99127 -19.394178,13.72677 -33.072871,20.92457 -0.123893,-0.23365 -0.248114,-0.46805 -0.372598,-0.70327 -4.27521,-8.07823 -2.335852,-14.50591 -0.849262,-18.96044 m 6.940385,6.92569 c -0.181629,-10.51399 1.371838,-21.69978 5.155113,-31.88295 1.483536,-3.99313 1.751093,-8.4015 1.546664,-13.05762 -3.911427,-2.78892 -8.340738,-5.84968 -12.432818,-8.98977 m 7.841708,12.17119 c 0.01164,-0.68115 0.01793,-1.35105 0.01916,-2.01043 -8.493272,-6.73025 -18.53984,-10.2359 -28.67797,-14.35902 -8.48789,-3.45197 -14.72638,-7.7327 -20.75536,-10.40218 2.53728,-0.22944 5.08906,-0.34739 7.6182,-0.30944 4.97501,0.0747 9.33406,-1.59019 13.42784,-4.17762 m -0.34658,10.14975 c -4.81989,-3.32714 -8.76341,-6.25194 -12.30356,-9.19363 6.59073,-2.72849 13.94298,-5.48886 20.82975,-9.3686 l 0,0 c 11.9025,-6.70541 16.567553,-5.02101 18.316945,-3.78006 0.277802,0.19706 1.004945,0.1411 2.076562,-0.108 -0.368506,-3.6222 1.708841,-8.61568 4.248075,-13.84733 m -18.151209,9.10118 c 6.70025,-3.11239 15.25927,-7.25064 22.019279,-12.48348 0.119038,-2.44376 0.148421,-4.94207 0.04745,-7.49569 -0.553407,-13.99679 3.581344,-18.15068 2.189258,-22.13163 l 0,0 c -0.273397,-0.78183 -0.136123,-2.11088 0.315283,-3.8335 m -2.584493,27.08875 c 3.086124,-10.66351 6.181314,-22.4909 10.056793,-35.18219 0.667176,-2.18485 1.317136,-4.24352 1.966171,-6.206054 6.39979,6.728244 12.778178,15.681074 20.948851,23.513644 4.609861,4.41911 7.146485,8.20406 8.553448,11.56126 M -65.293211,94.057027 c 6.949047,8.160843 14.233324,20.378873 22.500444,34.683813 0.0574,0.0993 0.114706,0.19815 0.171931,0.29651 m -8.655613,2.29913 c 3.599664,5.13544 8.69849,10.82328 15.029965,17.18859 6.601743,0.74924 13.899955,1.88127 21.781443,3.44921 18.3722146,3.65494 21.8984647,-0.59147 32.426168,0.1404 l 3e-6,0 c 3.246834,0.22572 6.492028,0.21339 9.684873,0.0811 -4.095788,5.48472 -8.38009,10.53762 -13.199434,15.96597 M 3.3084717,150.80536 c 12.7023913,-2.66795 19.4723603,-0.4446 25.2287963,0.54203 0.362233,0.0621 0.770524,0.10974 1.220877,0.14415 -9.550884,9.69644 -9.768329,16.45372 -13.866129,24.18292 -3.118703,5.88244 -7.1616606,11.99418 -10.0709994,17.32982 M 17.842853,136.81654 c -5.287206,9.63466 -12.5874362,18.45678 -18.9947125,27.93592 -0.7805403,1.15476 -1.5055903,2.31011 -2.1757483,3.46762 m 6.8424027,9.72294 c -1.8916236,4.92043 -4.32682459,9.05551 -6.7863189,12.91546 2.62580317,5.53166 5.2128649,10.62457 8.8069595,16.30632 l 1.7e-6,10e-6 c 6.4420928,10.18403 10.5479938,20.03487 19.5775788,28.96911 l 3e-6,1e-5 c 1.620723,1.60361 2.879858,3.4234 3.864367,5.43497 -0.381812,-0.0941 -0.778313,-0.1779 -1.188428,-0.25176 M 18.25793,219.62613 c 3.289402,8.81061 6.052424,16.69792 8.48085,24.68759 -2.364424,-0.69951 -4.750637,-1.39237 -7.155452,-2.06151 l -4e-6,0 C 7.7511934,238.95989 -4.3213605,235.70435 -20.056729,231.94205 l -4e-6,0 c -8.405107,-2.00964 -13.0228,-4.11144 -16.178992,-6.59122 -0.279042,0.39763 -0.531237,0.78831 -0.762375,1.17134 M -69.919832,91.933581 -24.395704,150.77813 m 25.7379392,53.55286 4.5326673,11.69115 M 21.190948,149.29777 2.8316912,176.23844 M 0.85112605,192.50989 -137.79624,305.55308 M -92.813017,199.90968 -65.892012,98.080051 M -6.6582575,141.86867 40.081645,139.26259 M 22.700281,147.08295 3.8702733,174.7144 m 10.0670227,62.10315 0.604356,1.55882 m -97.841468,67.03995 -4.760744,-157.92044 m 64.214118,97.09336 -125.764108,-81.07631 m 71.868383,-20.60926 22.220512,-84.049852" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="m 15.874998,241.81548 -55.593044,-16.22838 -44.885096,36.59611 -1.745088,-57.88698 -48.67522,-31.37944 54.514519,-19.54774 14.802156,-55.989665 35.436915,45.805805 57.823455,-3.22407 -32.6133019,47.85728 z" /> + <g + id="g33" + inkscape:path-effect="#path-effect35"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + id="path23" + cx="156.78354" + cy="118.22446" + rx="45.775078" + ry="65.168915" + d="m 205.37639,132.63289 c -0.39441,14.44877 -5.10635,28.40578 -12.8098,39.08936 -4.39039,6.08883 -9.63998,10.96118 -15.40214,14.30335 -5.49083,3.18479 -11.35222,4.92671 -17.28011,5.12627 m 17.06459,-16.10632 c -0.52615,0.32503 -1.05575,0.63704 -1.58861,0.93583 -5.66839,3.17842 -11.63783,4.8224 -17.62085,4.81601 -5.97824,-0.006 -11.83859,-1.66267 -17.23748,-4.87582 -5.39773,-3.21245 -10.22323,-7.91581 -14.17615,-13.8354 -2.14156,-3.20703 -4.00933,-6.74446 -5.57003,-10.5539 m 1.43626,18.95117 c -0.65864,-0.80312 -1.29976,-1.63024 -1.92267,-2.48052 -9.17102,-12.51859 -13.92887,-29.37923 -13.56304,-47.3635 0.16284,-8.00533 1.33661,-16.0128 3.41958,-23.666074 m 2.96133,19.217044 c 1.69699,-14.61308 6.52397,-28.538127 14.17992,-39.147437 4.31564,-5.980441 9.39469,-10.716534 15.00716,-13.918303 5.60832,-3.199405 11.63209,-4.798482 17.75418,-4.675911 4.50057,0.09011 9.00172,1.109499 13.38266,3.045138 m -34.5109,-8.785757 c 4.17391,-1.983094 8.60853,-3.027095 13.13059,-3.113425 6.03155,-0.115149 12.11643,1.47228 17.94079,4.642312 5.82591,3.170879 11.27636,7.86112 16.11008,13.772762 6.49563,7.944158 11.69416,17.873711 15.12361,28.591545 m -7.13706,-13.98551 c 4.90967,11.213131 7.89663,23.969456 8.49559,36.371506 0.60036,12.43089 -1.21549,24.02568 -5.36416,33.39197 m 0.427,-23.70222 c -1.83169,13.90386 -6.11208,26.67168 -12.56472,36.46733 -3.93238,5.9697 -8.56059,10.66426 -13.6651,13.82946 -4.04644,2.50911 -8.32871,4.01605 -12.67664,4.45978 m 20.37131,-9.77545 c -0.54938,0.36432 -1.10524,0.71336 -1.66716,1.04684 -5.44885,3.23365 -11.39298,4.96208 -17.47688,5.07698 -6.08754,0.11497 -12.17682,-1.38573 -17.96943,-4.38457 -5.78954,-2.99725 -11.1599,-7.42738 -15.85021,-12.97854 -2.20113,-2.60511 -4.23809,-5.44023 -6.08728,-8.46139 m 6.83305,13.67811 c -0.81073,-1.01556 -1.59764,-2.07883 -2.35916,-3.18781 -8.24705,-12.00998 -13.20433,-28.94419 -13.59816,-47.04125 -0.31137,-14.30786 2.25622,-28.495288 7.48214,-40.543182 m -4.35684,23.048864 c 1.61707,-11.65377 6.02398,-22.539387 12.51183,-31.089974 4.44127,-5.853314 9.75221,-10.475345 15.59963,-13.547092 5.84781,-3.071949 12.12888,-4.540416 18.49365,-4.266889 5.9054,0.253785 11.79839,2.003222 17.41047,5.229721 m -28.90356,-2.329753 c 2.67557,-0.581526 5.36091,-0.862949 8.03488,-0.839545 6.2209,0.05445 12.29226,1.759289 17.9011,5.024394 5.60844,3.264873 10.63564,8.02125 14.81461,13.996996 6.19431,8.857623 10.27245,20.022161 11.94923,32.22125 M 191.62467,79.774272 c 4.61014,10.267627 6.9438,21.591338 6.91132,32.916848 -0.0485,16.90238 -5.3622,32.71864 -14.21053,44.08243 -1.55191,1.9931 -3.20214,3.83527 -4.93671,5.51227 m 16.68871,-35.79177 c -0.76757,14.35557 -5.05814,28.22737 -11.86267,39.32415 -4.06257,6.62521 -8.91416,12.08912 -14.25134,16.10981 -5.3426,4.02479 -11.03905,6.50552 -16.7623,7.41921 -1.35085,0.21566 -2.69754,0.3431 -4.03524,0.38404 m 24.09394,-11.11633 c -5.34226,3.0042 -10.93877,4.64805 -16.56849,4.90774 -6.19278,0.28565 -12.30377,-1.10894 -18.04025,-4.02708 -5.73935,-2.9196 -10.97357,-7.29674 -15.48831,-12.78898 -3.45088,-4.19804 -6.42592,-8.97957 -8.87244,-14.1303 m 9.6139,8.35753 c -7.96103,-12.48851 -12.70366,-28.64153 -13.33547,-45.20953 -0.41304,-10.83109 0.94583,-21.445284 3.96007,-30.942122 m -3.96063,20.861632 c 1.58455,-12.160072 6.07525,-23.423091 12.74171,-32.223044 4.4669,-5.896467 9.80518,-10.548559 15.68056,-13.652505 5.87662,-3.104599 12.18786,-4.607613 18.58898,-4.383822 5.91459,0.206782 11.81828,1.88411 17.4582,4.998578 m -24.92561,-4.682919 c 2.74627,-0.636476 5.51915,-0.953155 8.29248,-0.943374 6.09806,0.02151 12.0887,1.621843 17.67089,4.695585 5.57814,3.071513 10.61937,7.544373 14.84932,13.107112 8.54917,11.24286 13.23469,26.176721 13.26456,41.251959 7.2e-4,0.36607 -0.001,0.73187 -0.006,1.09737 m -5.61624,-26.861036 c 2.68429,8.616551 4.11434,17.963216 4.209,27.482346 0.17733,17.83325 -4.3406,35.22851 -12.52001,48.56813 -4.05331,6.61048 -8.87892,12.01541 -14.20611,15.95904 -0.41075,0.30407 -0.82408,0.59916 -1.23986,0.88521 m 27.2263,-65.88195 c -0.20392,16.85182 -4.50491,32.54688 -12.01883,43.96829 -3.84948,5.85132 -8.43535,10.41677 -13.48684,13.44134 -3.92934,2.35269 -8.08697,3.73984 -12.2981,4.10077 m 6.49165,1.18341 c -1.4808,1.18535 -3.01276,2.24535 -4.58686,3.17358 -5.33928,3.14851 -11.09228,4.73929 -16.8874,4.65139 -5.79294,-0.0879 -11.51486,-1.85237 -16.77289,-5.21805 -5.25532,-3.36394 -9.9529,-8.26872 -13.72153,-14.45718 -4.28772,-7.04085 -7.28084,-15.59301 -8.58159,-25.08977 m 10.13669,22.89882 c -7.54498,-12.17642 -11.86581,-28.16181 -12.03458,-44.94119 -0.17695,-17.59236 4.22531,-34.724877 12.39008,-47.878805 m -7.19744,25.543467 c 1.98526,-9.818296 5.68713,-18.44044 10.68929,-25.379498 4.32547,-6.000342 9.55279,-10.643174 15.30803,-13.701354 5.75865,-3.059991 11.96349,-4.491439 18.24248,-4.212248 6.28533,0.279473 12.53556,2.266413 18.43016,5.863159 3.85851,2.354369 7.52124,5.372106 10.90498,8.976508 m -27.94529,-11.67876 c 5.06823,0.355311 10.04086,1.858217 14.72867,4.421191 5.5662,3.043219 10.61677,7.518929 14.87505,13.095538 8.59747,11.259169 13.4215,26.277052 13.44222,40.975382 0.004,2.77185 -0.1631,5.50799 -0.49938,8.18149 M 107.10687,92.551785 147.53412,44.146786 m 43.64494,14.472254 18.15567,78.40068 m -43.30177,-92.872934 40.42725,48.404999 m -1.90268,57.055825 -42.1372,43.0917 m -52.60991,-35.36667 2.47724,-83.703206" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + id="path25" + sodipodi:sides="5" + sodipodi:cx="232.40736" + sodipodi:cy="155.6778" + sodipodi:r1="88.721275" + sodipodi:r2="44.360641" + sodipodi:arg1="1.2316773" + sodipodi:arg2="1.8599958" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 251.84126,238.41646 c -13.17272,-12.72359 -25.7472,-25.27359 -38.01312,-37.81461 -14.41557,2.93538 -28.61002,5.8772 -42.75911,8.72563 m 30.2894,-15.00079 c -13.6395,3.38991 -27.70683,6.70491 -41.97293,10.29002 6.6724,-13.07328 13.11028,-25.82787 19.60723,-37.82163 m -6.8446,23.94495 c 5.13728,-10.88151 10.33127,-21.64274 15.49196,-32.2929 -5.87527,-9.96544 -11.78129,-19.82828 -17.79801,-29.59671 m 10.53739,16.09054 c -6.18241,-11.81093 -12.44254,-23.3543 -18.69126,-34.80828 16.06078,2.27713 32.13881,4.68944 48.39979,6.90563 m -25.55873,-2.62077 c 10.6765,1.83309 21.54905,3.47944 32.47626,5.0101 9.15575,-10.20101 18.39392,-20.576446 27.4528,-30.994762 m -12.25235,13.964682 c 7.80662,-8.195411 15.75981,-16.809999 23.85834,-25.763735 3.19872,15.534177 6.69846,30.365955 10.49552,44.733865 m -9.37941,-27.656097 c 1.4912,9.697687 3.1782,19.700767 4.9983,29.917237 18.02794,8.61449 36.55195,18.02433 55.12086,27.56767 -2.75261,1.72388 -5.50399,3.45141 -8.25618,5.1796 m -9.2386,-4.92524 c 5.89405,3.06069 11.86407,6.02059 17.89999,8.91384 -17.21852,9.50346 -33.85142,18.41467 -50.16522,27.63775 -0.0727,1.12697 -0.14428,2.25498 -0.21488,3.38419 m 24.86102,-19.76139 c -4.9045,2.65387 -9.83264,5.30002 -14.77918,7.94252 -2.27836,19.62815 -4.78254,39.2116 -7.28729,58.92602 -1.72733,-1.63987 -3.45467,-3.27781 -5.18161,-4.9135 m -3.76384,2.49677 c -11.85209,-11.91094 -24.46236,-23.4589 -37.55985,-34.65817 -13.94853,3.16377 -28.20243,6.54609 -42.62726,10.13986 m 25.39243,-12.66489 c -14.49419,2.65523 -28.76405,5.52305 -42.94437,8.51645 7.54008,-14.85761 15.19983,-29.54741 22.77101,-44.20383 m -6.94536,18.14049 c 5.68366,-10.37011 10.98591,-20.57586 16.09274,-30.58016 -8.78981,-14.86528 -18.03544,-29.26064 -27.07429,-43.05391 m 1.49764,31.59755 c -4.80446,-8.25155 -9.45962,-16.59946 -13.99292,-25.00074 19.77073,2.8759 40.04688,5.53039 60.59671,8.32634 1.11401,-1.11178 2.22964,-2.22272 3.34679,-3.33265 m -24.91619,-15.45548 c 6.65012,0.68772 13.42931,1.52027 20.29835,2.45469 11.24381,-12.523413 23.00299,-24.462579 34.73883,-36.40778 m -7.15409,22.227363 c 5.62501,-5.893725 10.97639,-11.796188 16.0925,-17.719602 2.61595,19.100669 3.79109,38.073039 4.10688,56.732029 3.96491,2.01856 7.8684,4.01472 11.72157,5.98494 m -3.64198,-14.60089 c 0.90887,4.46159 1.78617,8.90653 2.64047,13.33889 18.2869,8.46529 36.12504,16.68517 54.25122,25.01007 -6.85535,3.69314 -13.66432,7.40318 -20.37931,11.15277 m 7.7665,-29.00449 c 1.19453,0.56627 2.39152,1.13431 3.59097,1.70418 -17.31502,9.38146 -34.08336,19.16972 -50.31365,29.58232 -0.20625,3.6329 -0.39605,7.28489 -0.56946,10.95711 m 6.93509,1.46638 c -1.77732,0.92773 -3.53864,1.8478 -5.28473,2.76055 -2.80835,19.70643 -4.0234,38.64801 -4.4617,57.19402 -4.99062,-6.02315 -9.8503,-12.11299 -14.63556,-18.24396 m 5.83827,5.71926 c -12.48867,-12.42885 -24.11065,-23.80332 -35.20378,-34.635 -13.52997,3.63314 -26.66003,7.67674 -39.61234,11.79441 m 28.67499,-2.68448 c -13.82424,2.66638 -27.49919,5.35886 -41.11523,8.05895 5.01524,-10.08506 10.06903,-20.16513 15.11351,-30.25002 m -9.40232,10.88132 c 5.658,-12.10952 11.71799,-24.67612 17.8648,-37.41795 -5.64917,-10.0802 -11.2411,-20.27593 -16.9445,-30.43629 m 4.96626,14.43357 c -7.46853,-12.44651 -14.36969,-24.71536 -21.03443,-36.89942 10.04037,1.51508 20.20052,3.07311 30.3611,4.64062 m -17.7249,2.95948 c 14.63123,2.62448 29.58426,4.61108 44.82246,6.24283 10.53839,-11.28573 21.3564,-22.919404 32.41846,-34.626183 m -18.39345,16.125173 c 8.73465,-9.387362 17.50578,-18.710012 26.32883,-27.967354 3.4976,19.550223 7.11752,39.254304 10.91558,59.114374 0.40153,0.19188 0.80315,0.38384 1.20485,0.57588 m -11.72962,-31.65035 c 1.83347,8.96872 3.66247,18.04238 5.54911,27.17805 18.50242,8.20344 37.26241,16.68397 56.86665,25.03598 -1.17185,0.69314 -2.33895,1.38554 -3.50103,2.07705 M 302.23159,144.8771 c 6.20889,2.81901 12.29483,5.64648 18.25747,8.47517 -18.10306,8.99502 -37.2212,18.00007 -57.36304,26.84402 -1.75553,6.62527 -3.63276,13.23139 -5.63205,19.81135 m 19.30731,-21.79912 c -2.67302,1.39684 -5.3868,2.7926 -8.13738,4.18499 -1.92747,18.96544 -5.2569,37.80284 -9.05673,55.97833 -6.6703,-6.46561 -13.42754,-13.05353 -20.19771,-19.80619 m 15.17622,7.9909 c -12.00686,-11.99972 -23.81965,-23.3738 -35.67315,-34.55038 -14.64545,3.0685 -29.32421,6.29865 -44.21015,9.37342 m 33.72235,-0.67549 c -13.13013,2.94003 -26.32867,5.34648 -39.50676,7.37808 6.67255,-13.84405 13.36918,-28.12915 20.20329,-42.65274 m -18.46437,17.31578 c 4.86494,-11.41602 10.13424,-22.11535 15.60903,-32.31634 -7.6864,-13.1376 -15.01233,-25.40106 -22.43974,-37.29765 m 2.49915,26.05578 c -5.19474,-9.23956 -10.26606,-18.52735 -15.20286,-27.82461 15.67365,2.32977 31.62501,4.64 47.88701,7.04572 m -14.85314,-10.85579 c 10.29865,1.40894 20.49172,2.81937 30.58828,4.20633 13.03165,-14.611251 25.7175,-29.306583 38.11909,-44.255284 0.3046,2.431076 0.60446,4.857921 0.89969,7.280168 m -10.13467,13.558118 c 4.47159,-4.987065 9.08861,-9.974625 13.8133,-14.943923 3.21333,19.814713 7.27458,39.773221 11.34987,60.289951 0.34805,0.17614 0.69611,0.35248 1.04416,0.52901 m -8.06783,-24.09677 c 0.88652,5.82186 1.89612,11.78486 3.01286,17.85971 18.05385,8.14646 37.18402,17.41666 56.88209,26.87762 -1.10968,0.73965 -2.21646,1.48028 -3.32052,2.22155 m -4.60553,-13.81501 c 4.79762,2.11619 9.51677,4.30614 14.15834,6.56252 -17.92404,9.2826 -36.92407,19.48671 -56.95348,30.23375 -0.35242,1.49474 -0.71,2.9922 -1.07271,4.49225 m 4.29524,-10.68169 c -4.11762,2.29883 -8.23532,4.56258 -12.34258,6.79446 -1.62859,19.43427 -3.08479,38.34308 -3.66296,56.94239 -3.34476,-3.97635 -6.62455,-7.97562 -9.82515,-11.99344 m -6.73851,-108.95062 138.96123,64.31984 m -16.1488,-50.25411 -132.25835,69.43068 m 38.68147,-35.11858 -16.72362,139.46968 M 137.2352,259.61219 218.89821,94.395689 M 232.1679,235.82754 143.5046,76.9384" + inkscape:transform-center-x="-7.8187404" + inkscape:transform-center-y="-0.68423687" /> + <path + id="path27" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + d="m 259.62756,32.80099 c -1.08604,8.203029 -5.52345,16.107877 -12.66133,22.342246 -7.90097,6.900871 -18.48927,11.217469 -29.63096,12.136546 -11.13013,0.918124 -21.89275,-1.625969 -30.18285,-6.922188 m 19.49078,11.4212 c -7.7068,-1.341165 -14.87838,-4.757361 -20.54252,-9.809124 -7.57081,-6.752297 -11.90156,-15.926503 -11.99889,-25.577329 -0.0974,-9.654279 4.04331,-18.997762 11.5158,-26.153175 3.64564,-3.4909378 7.97931,-6.359478 12.76463,-8.4696424 M 180.89811,20.663401 c 1.88929,-3.580727 4.44045,-6.825236 7.54948,-9.61118 7.58316,-6.7951327 18.05115,-10.48450723 29.12571,-10.34498389 11.07307,0.13950363 21.84466,4.09225969 29.96853,10.90592089 0.55347,0.464211 1.09307,0.940383 1.61823,1.427983 m -18.3799,-16.4664359 c 4.83207,1.742295 9.25812,4.33594373 12.99967,7.6266937 7.49058,6.5880772 11.76786,15.5459612 11.82193,24.9191832 0.0541,9.370461 -4.11643,18.381401 -11.61577,25.074542 -0.23821,0.212605 -0.47947,0.422583 -0.72372,0.629888 M 258.5368,42.252877 c -1.18375,8.4191 -5.47035,16.263572 -12.1929,22.252521 -7.55845,6.733628 -17.58135,10.571796 -27.88921,10.774521 -10.30469,0.202663 -20.06608,-3.244078 -27.13827,-9.475325 -0.93716,-0.825732 -1.8212,-1.695339 -2.64828,-2.604872 m 18.36709,6.428962 c -7.19743,-1.512736 -13.62659,-4.617753 -18.62365,-8.978314 -7.30445,-6.374059 -11.08689,-15.036637 -10.37636,-23.948107 0.5812,-7.289559 4.14545,-14.325972 10.33516,-19.905455 m -3.36031,17.436962 c 1.55968,-6.940077 5.32179,-13.220475 10.80092,-18.112801 7.48161,-6.6803461 17.62915,-10.3004357 28.14233,-10.1422394 8.23081,0.1238517 16.21818,2.5583672 22.80496,6.9260084 M 231.38203,1.3804495 c 8.51374,0.88341 16.13547,4.1651111 21.89173,9.2754945 7.39187,6.56248 11.22648,15.706866 10.60285,25.263766 -0.4259,6.526673 -2.91293,12.976326 -7.26906,18.667603 m -1.46701,-6.351222 c -1.18289,7.451291 -4.94117,14.190025 -10.67607,19.306549 -7.34494,6.552968 -17.39609,9.971532 -27.7846,9.518258 -8.52146,-0.37181 -16.75048,-3.328859 -23.32627,-8.41436 m 13.47624,-0.703696 c -8.08622,-1.153785 -15.61998,-4.525265 -21.51432,-9.625771 -7.5741,-6.554032 -11.88645,-15.474476 -11.95256,-24.783858 -0.0571,-8.042278 3.06064,-15.845208 8.83868,-22.083119 m -3.5035,18.934637 c 1.30042,-6.833345 4.98066,-13.163055 10.49096,-18.173564 7.29774,-6.6358272 17.27923,-10.4859442 27.55839,-10.7283134 10.27866,-0.2423581 20.00326,3.143847 26.83532,9.3850304 3.16499,2.891263 5.62062,6.317074 7.21168,10.094574 M 235.79975,-3.5757528 c 4.56344,1.6495046 8.80658,4.1086703 12.46199,7.2282061 7.55987,6.4516037 12.09871,15.2758857 12.58889,24.5170867 0.4896,9.230095 -3.10188,18.08027 -9.815,24.529116 -2.63993,2.536006 -5.70375,4.641883 -9.06804,6.232 M 264.4423,41.156942 c -0.88746,7.894232 -4.98351,15.316769 -11.56743,20.909893 -7.50401,6.374754 -17.66223,9.882318 -28.18087,9.60789 -5.60077,-0.146122 -11.11892,-1.361473 -16.18292,-3.589837 m 5.9197,3.406609 c -10.65776,0.289504 -20.85352,-3.240932 -28.5506,-9.631442 -7.94435,-6.595811 -12.59002,-15.692125 -13.09642,-25.209999 -0.41714,-7.840276 1.99528,-15.490334 6.70413,-21.789141 m 1.34933,14.767898 c 1.11818,-8.526005 5.2406,-16.273569 11.65901,-21.9578438 7.26708,-6.4358634 16.87798,-9.6870853 26.58396,-9.0111088 9.69433,0.67516436 18.72233,5.2204489 24.8844,12.6681626 0.73153,0.884156 1.41881,1.804837 2.05891,2.759062 M 226.76208,0.10101606 c 6.85732,1.35394504 13.25333,4.36293844 18.42483,8.66123304 7.54936,6.2746579 11.94442,14.8351759 12.15803,23.6869419 0.21316,8.833194 -3.76677,17.212631 -11.04466,22.973683 -3.60082,2.850347 -7.90368,4.97258 -12.66517,6.196333 M 168.39556,34.119264 200.07164,-4.0217285 M 223.30561,78.049371 173.12805,55.102391 M 170.42387,46.313768 186.81003,2.9414036 M 226.97391,-6.046336 265.43999,28.13893 M 177.77162,9.3194391 232.64698,-5.3289816" + inkscape:original-d="M 257.70934,35.538723 A 40.550583,35.102173 0 0 1 217.15875,70.640896 40.550583,35.102173 0 0 1 176.60817,35.538723 40.550583,35.102173 0 0 1 217.15875,0.43655014 40.550583,35.102173 0 0 1 257.70934,35.538723 Z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Sketch_multi_px_1_0_2.svg b/testfiles/lpe_tests/Sketch_multi_px_1_0_2.svg new file mode 100644 index 0000000..4d24ec6 --- /dev/null +++ b/testfiles/lpe_tests/Sketch_multi_px_1_0_2.svg @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="sketch" + id="path-effect35" + is_visible="true" + lpeversion="1" + nbiter_approxstrokes="4" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="0.3" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect29" + is_visible="true" + nbiter_approxstrokes="5" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="1" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" + lpeversion="1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect17" + is_visible="true" + nbiter_approxstrokes="3" + strokelength="100" + strokelength_rdm="0.7;1" + strokeoverlap="0.6" + strokeoverlap_rdm="1;1" + ends_tolerance="0.5;1" + parallel_offset="6.5;1" + tremble_size="7.3;1" + tremble_frequency="3" + nbtangents="11" + tgt_places_rdmness="1;1" + tgtscale="10.8" + tgtlength="107" + tgtlength_rdm="1;1" + lpeversion="1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect12" + is_visible="true" + nbiter_approxstrokes="5" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="0.3" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-95.714286" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0995" + id="path10" + sodipodi:sides="5" + sodipodi:cx="119.3777" + sodipodi:cy="199.46474" + sodipodi:r1="231.62856" + sodipodi:r2="115.81428" + sodipodi:arg1="0.63873167" + sodipodi:arg2="1.2670502" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 301.97077,344.27713 c -25.19257,-5.70727 -52.5926,-9.96122 -79.92165,-14.54155 m 17.9339,-6.71213 c -24.00783,-4.69026 -46.83331,-8.6283 -69.23222,-12.4233 m 8.71707,8.4988 c -10.25761,-1.96225 -20.22948,-3.94865 -30.03065,-6.00368 -10.45471,10.14589 -20.53097,20.13961 -30.60855,29.83428 m 17.36274,-9.05533 c -20.90901,23.5275 -44.021919,45.57443 -65.367857,69.02179 m 10.981736,-28.12037 c -14.202107,13.21135 -26.990121,26.7031 -38.938471,39.9878 -0.418851,-9.05137 -0.65751,-18.14718 -0.773083,-27.33588 m 2.360079,27.82337 C 40.25022,390.67558 38.348392,363.49241 37.352941,334.97578 m -4.873268,21.39593 c -4.052065,-24.66338 -6.065122,-49.60673 -7.271949,-74.82117 m 7.075627,12.62125 c -1.19251,-10.5439 -2.66719,-20.843 -4.361204,-30.92717 C 16.084138,257.86253 3.9185152,252.8015 -8.4600176,248.00703 m 12.1807751,7.86258 C -22.852999,242.56507 -51.374233,227.07257 -79.698478,210.82574 m 25.932089,10.34503 c -19.246754,-8.56401 -37.475061,-17.82385 -55.201851,-26.59631 8.79169,-3.66084 17.679121,-7.22862 26.619181,-10.60466 m -27.256641,11.77746 c 26.039607,-11.47223 49.893024,-23.76042 74.262337,-36.08858 m -23.216905,3.75553 c 28.17055,-12.08388 53.7294901,-26.33108 80.013179,-40.90695 0.04511,-0.34141 0.0903,-0.68286 0.135586,-1.02435 M -0.73528514,140.33538 C 6.5720756,137.03786 13.81038,133.8823 21.027999,130.88107 24.652042,111.99035 28.138258,94.127938 32.318609,77.506663 m 0.599803,13.429625 c 2.838216,-23.016054 6.29794,-46.322143 8.868319,-67.989843 m -0.155101,9.9262 c 3.051009,-19.368988 5.545871,-38.1584098 7.604861,-56.872929 4.681744,5.306093 9.300252,10.623054 13.862169,15.9229936 M 50.846027,-18.875929 C 71.435302,4.0878724 94.087167,26.346502 117.52304,50.05081 M 99.592625,30.331416 c 19.949625,20.903688 39.006355,39.290865 58.352335,56.378985 4.27491,-1.188276 8.55672,-2.407525 12.84978,-3.653266 m -25.0709,-7.928226 c 3.55823,3.832665 7.1257,7.670481 10.70371,11.522177 27.38256,-3.61411 55.06876,-6.828177 83.25663,-8.291469 m -30.76114,-2.009056 c 27.1984,-4.103824 55.46647,-9.213459 85.13788,-14.822216 m -31.8515,12.412067 c 12.96756,-2.298609 25.89654,-4.481712 38.97574,-6.672703 -7.49313,15.037241 -14.70563,30.059743 -21.15541,44.752411 m 12.27744,-20.934027 c -14.52844,27.356017 -30.09074,54.383147 -45.56845,80.068947 m 16.13469,-22.46424 c -9.80503,16.18603 -18.65049,33.7546 -27.10427,51.71576 6.55124,12.29378 13.28217,24.76768 20.01633,37.11404 M 239.58597,213.372 c 14.48788,27.54459 28.85725,53.43606 43.31214,76.19606 m -18.32305,-16.36021 c 10.98005,22.05746 23.12875,44.454 35.65514,66.74026 -7.57587,-1.45575 -15.11278,-2.92287 -22.63695,-4.41625 m 15.71328,-6.616 c -28.53592,-4.07578 -58.93392,-8.47757 -89.11404,-10.07278 m 27.58871,6.63853 c -23.83271,-4.29769 -47.4473,-8.13275 -71.52275,-11.57471 m 18.10735,5.5104 c -7.36822,-1.59144 -14.76272,-3.09247 -22.16596,-4.53807 -14.99157,15.04139 -30.05353,30.52831 -44.78674,45.66285 m 13.33742,-15.57242 c -18.5439,18.1788 -36.114746,35.43073 -54.27583,52.54148 m 11.076812,-10.31946 c -12.710663,13.12245 -25.061141,25.21485 -37.056201,36.58547 -0.94248,-10.69743 -1.775097,-21.61796 -2.49867,-32.70862 m -2.978485,14.25026 C 33.882351,371.48354 30.81451,340.87368 27.662459,310.33191 m 4.008966,37.15222 c -3.674208,-23.76095 -6.245463,-48.9851 -8.270441,-73.78426 -1.891425,-1.01128 -3.778446,-2.01913 -5.661468,-3.02219 m 17.392968,7.80071 c -0.551017,-4.40323 -1.117143,-8.81141 -1.695701,-13.22244 -20.54838,-10.3016 -41.4283979,-20.67926 -62.271209,-30.84533 m 15.094141,12.2698 C -40.35978,232.86509 -69.413124,220.21499 -99.341911,208.64787 m 23.153901,3.56937 c -11.675771,-5.9506 -23.176035,-11.73488 -34.59406,-17.41305 16.73382,-7.81757 33.637591,-15.41587 50.434205,-22.9738 m -19.097113,5.85413 c 27.883225,-12.5395 53.33033,-24.02924 79.3436494,-33.87031 m -31.1410564,21.25444 c 17.770686,-8.29553 36.1809039,-17.00376 54.987423,-25.74382 2.113647,-10.75701 4.344096,-21.5234 6.65243,-32.23822 m -4.930495,9.5584 c 2.659112,-24.664165 6.805828,-47.659035 10.90565,-70.666032 m 0.915679,26.137304 c 5.534139,-30.16806 7.093597,-60.463043 6.802294,-91.561025 1.359009,1.762497 2.704553,3.519151 4.03795,5.269544 m 4.265582,20.6664946 c 1.352548,-6.90775189 2.624231,-13.8581625 3.850127,-20.8345486 17.608762,18.1702153 34.659522,36.023865 52.644675,54.27072 M 80.256178,3.6141082 C 97.096759,21.502208 114.78126,39.995155 133.29318,59.509529 m -10.48033,2.753454 c 10.78565,12.300713 22.76458,24.030186 35.44499,35.410834 13.83691,-2.553982 28.10725,-5.323498 42.57215,-8.200524 m -28.8268,-1.52124 C 202.22751,81.6924 235.48122,79.118135 269.5566,76.886261 m -23.92045,6.730638 c 22.98706,-3.790027 46.40292,-7.505069 69.80761,-11.235145 -0.74549,1.399156 -1.49103,2.798244 -2.23675,4.197237 m -11.7444,-6.687721 c 3.89056,-0.502069 7.81539,-1.043114 11.76666,-1.616119 -10.72886,19.260529 -20.74165,37.655249 -31.14508,56.173859 m 4.74198,-16.40216 c -12.47746,20.91019 -23.29242,42.34095 -34.1049,63.82649 m 5.18757,-8.55649 c -8.0698,15.39377 -15.72413,29.96397 -23.01673,44.12585 6.31669,10.76652 12.83771,21.30239 19.54023,31.78388 m -13.11852,-22.1296 c 15.07942,29.23439 30.39948,58.89575 46.22186,88.99408 m -19.1633,-29.58793 c 11.30407,20.26845 22.58,41.1974 34.80849,62.10887 -6.49493,-1.2207 -12.90154,-2.44302 -19.19217,-3.6861 m 12.7789,1.14973 c -32.72986,-6.23539 -68.36171,-12.271 -106.93742,-18.93772 m 37.81309,8.16126 c -23.59843,-5.15668 -49.74245,-10.38143 -76.4769,-16.79484 -4.80213,3.87307 -9.63922,7.67576 -14.4831,11.39192 m 25.00325,-14.33817 c -2.68685,-0.5774 -5.36849,-1.13797 -8.04595,-1.68362 -20.50986,19.45455 -40.54833,40.59214 -61.353788,61.15447 M 118.80744,350.8936 c -19.572875,20.70594 -39.443093,39.09301 -58.805451,56.59914 m 6.36155,-17.38211 c -7.817952,6.94211 -15.334674,14.41814 -22.678025,22.28768 -2.301143,-16.78759 -4.105329,-32.44719 -6.03306,-47.66018 m -5.085132,28.5812 c -3.408205,-25.59531 -6.083564,-51.47705 -7.86542,-77.08415 m 5.874544,10.10148 C 27.876524,305.63392 24.7559,284.93713 21.286739,264.04777 10.319841,258.48815 -0.76101134,252.86557 -11.942327,247.14291 m 30.946093,18.59625 C -6.1941151,254.09515 -29.226786,242.44378 -52.26243,231.86261 m 13.62989,3.58624 c -24.990909,-13.56392 -47.602597,-24.39966 -69.19172,-34.99682 m 23.890764,3.84171 c -7.085681,-3.74778 -14.35035,-7.32732 -21.790894,-10.76386 15.75382,-7.57109 30.575002,-14.38389 44.501498,-20.74666 m -25.882098,8.29409 c 27.887913,-12.60297 55.772663,-26.53984 86.1240123,-41.05475 m -17.4887463,7.58509 c 14.8870468,-7.90609 30.160028,-14.7842 45.210827,-20.94592 1.442795,-10.89027 2.779838,-21.43956 3.811437,-31.75019 m -4.894297,24.75337 C 31.309166,88.362889 35.38465,55.966697 39.961689,22.508497 m -1.058328,28.915375 c 3.338831,-25.084098 7.836944,-48.5889055 12.846274,-72.115136 0.784555,0.789575 1.570072,1.57911 2.356497,2.368474 m -7.970274,4.412255 c 0.606319,-4.731935 1.250232,-9.453598 1.923836,-14.166197 13.295931,14.186485 27.094509,28.52642534 40.845267,42.935795 M 80.628489,13.108484 C 100.35713,35.816446 123.23777,57.981701 145.91871,81.215423 M 125.23707,57.472885 c 10.11616,10.818548 20.85888,21.867521 32.14198,33.188724 9.88454,-1.129802 19.98339,-2.151642 30.27502,-3.05508 m -11.72276,6.046183 c 25.10246,-5.071684 50.06362,-8.521901 74.49845,-12.137491 m -16.31619,-2.72536 c 24.40947,-4.806343 46.72275,-7.886928 68.19081,-10.792314 m -21.89173,8.219779 c 8.86259,-1.038399 17.67427,-2.322168 26.4909,-3.780722 -7.96533,15.473337 -15.91004,30.218716 -23.35929,44.836066 m 4.88516,-23.930243 c -11.67329,22.842583 -24.16545,45.361723 -36.56588,68.001463 m 13.26357,-12.23232 c -10.16772,17.87188 -20.16529,35.27666 -30.70116,52.42706 5.04767,10.75065 9.88853,21.40358 14.35389,32.00945 m -6.77696,-31.85975 c 11.45746,24.25595 26.28418,49.20595 41.75885,73.54138 m -9.03813,-8.59981 c 11.13297,20.99878 22.60107,42.48882 34.41836,63.3303 m -17.08393,-13.95534 c 3.64179,7.87038 7.26589,15.52536 10.83761,23.04099 -19.15628,-3.28439 -38.57762,-7.27403 -58.65881,-11.10336 m 63.55313,6.58504 c -28.87543,-6.71592 -61.65707,-9.8792 -95.94821,-12.65716 m 26.6543,2.16454 c -29.39861,-5.85862 -56.44694,-11.89222 -83.75444,-19.68913 -1.63776,1.49751 -3.27739,2.98235 -4.92046,4.45357 m 19.71871,2.0163 c -5.97319,-0.98107 -12.04126,-2.01779 -18.18217,-3.09464 -12.2073,12.50083 -24.97701,24.69188 -37.83646,36.90629 m 6.01503,-5.63011 c -16.5505,17.24054 -32.150612,33.89405 -46.556,50.63753 m 12.116011,-16.90914 c -15.190601,15.00551 -28.664705,29.15306 -41.413042,43.14793 -0.230532,-4.05075 -0.43255,-8.10751 -0.61377,-12.16476 m 9.539133,11.26545 c -0.917774,0.91352 -1.837306,1.82506 -2.758644,2.73465 -3.711009,-25.57575 -8.145616,-51.93777 -13.689829,-79.02222 m -6.531445,20.95832 c -4.183847,-33.27594 -6.596389,-61.98621 -6.983521,-90.25339 -0.80212,-0.35544 -1.602111,-0.71042 -2.399963,-1.06508 m 7.02375,24.71754 c -1.397807,-8.93229 -2.633665,-17.6625 -3.754074,-26.22604 -14.3851296,-6.97563 -28.3804041,-13.38845 -42.274365,-19.45819 m 20.7678741,2.70436 C -17.715744,238.5802 -39.812774,229.12489 -62.584575,220.34665 m 8.810824,10.25389 c -20.733214,-9.25636 -40.482541,-20.43473 -60.475509,-32.51249 1.66557,-0.97914 3.32943,-1.96461 4.99084,-2.95582 m 6.694,9.47242 c -2.99944,-1.54088 -6.00735,-3.07638 -9.02394,-4.60725 21.027977,-10.30937 41.627486,-20.39036 61.719821,-30.50264 m -21.128879,3.00447 c 23.062057,-11.30467 46.412825,-22.35556 70.95413063,-33.93877 m -19.01615163,2.85151 c 13.0284474,-6.01981 26.6603139,-12.15503 40.676908,-18.15431 1.760149,-8.60823 3.660796,-17.16681 5.653678,-25.62029 m -1.666753,16.63764 C 29.299105,88.967782 34.247428,64.762266 40.236492,40.424476 M 36.946123,64.77401 c 2.58152,-23.9255 7.393472,-48.195201 12.544792,-72.4673478 M 45.482993,2.7003145 c 1.458766,-8.6704197 2.740432,-17.4554155 3.859361,-26.2944825 13.678055,15.2354448 26.50354,30.1876105 38.648691,45.582019 M 81.06716,8.6308874 C 97.258355,25.327902 113.94332,41.84703 130.98589,57.640402 m -23.21033,-7.778686 c 13.77516,14.250288 28.2079,28.536322 43.29951,42.651246 9.63874,-1.601397 19.41608,-3.238789 29.33215,-4.932131 m -26.29627,-5.015876 c 24.29547,-2.948031 50.43204,-6.410483 76.46181,-8.335178 m -15.9289,8.296036 c 28.49004,-3.613165 60.14599,-9.715815 92.27993,-15.540714 -0.0729,0.157955 -0.14587,0.31592 -0.21877,0.473898 M 293.1393,63.189444 c 8.03436,-1.639705 15.94291,-3.055863 23.74922,-4.312713 -8.02965,14.553406 -16.49376,29.78375 -25.1859,45.128379 m 4.50618,-8.295107 c -14.523,29.217897 -30.13881,55.526277 -44.87558,81.684627 m 14.34315,-27.01178 c -7.99233,15.16331 -15.95035,31.24038 -23.6684,48.13288 4.46093,9.02287 8.98899,18.27383 13.61459,27.73832 m -16.47055,-15.02707 c 13.83462,30.2352 30.17469,58.23686 45.61436,86.90591 m -21.52475,-26.6797 c 10.4663,21.45921 22.1795,43.12763 33.95991,64.38699 m -0.91905,-6.22409 c 3.01597,5.74778 5.96869,11.34426 8.87943,16.81632 -26.06433,-4.88805 -52.93038,-12.15173 -78.82412,-19.54808 m 77.75789,6.01123 c -26.03173,-6.05644 -52.83112,-9.40018 -78.54823,-12.38326 m 20.24592,1.35926 c -27.05695,-4.57841 -56.37423,-10.04199 -84.72209,-14.9795 -0.0962,0.0984 -0.1923,0.19679 -0.28842,0.2952 m 18.13684,8.87898 c -7.38827,-1.52059 -14.84868,-3.07789 -22.38683,-4.69958 -16.126,14.81145 -32.9305,29.06097 -50.55777,42.03535 m 21.66552,-11.51411 c -16.65201,17.47806 -33.574033,32.18901 -51.019588,45.48325 M 87.09788,380.31111 C 73.570763,394.00947 60.242946,407.45425 46.739991,421.13114 44.782989,408.87937 42.744288,396.73588 40.504592,384.8554 m 8.020285,28.10158 C 44.017319,384.83469 41.223514,358.65654 38.34991,331.81764 m 0.223553,14.44435 c -3.268149,-27.31569 -6.51025,-53.83151 -9.109814,-80.78617 -4.477223,-2.41836 -8.930152,-4.85331 -13.354254,-7.31397 m 8.703661,22.5403 c -0.368738,-3.9385 -0.744119,-7.90125 -1.118216,-11.88386 -24.05284172,-12.40216 -48.043767,-25.76145 -69.319429,-38.60407 m 20.830627,5.73793 C -45.640564,225.30965 -67.0753,215.06877 -88.972158,205.14353 m 20.992331,11.74348 c -12.990558,-6.11204 -25.841519,-12.38236 -38.855493,-18.7235 14.851897,-7.56911 29.451266,-15.24792 43.214646,-22.86774 M -80.9077,189.62678 c 26.164727,-14.24231 52.748349,-26.33461 77.1284365,-39.15756 m -22.7329465,9.20506 c 18.8120129,-9.2832 36.863478,-18.10098 54.294708,-26.78595 0.32621,-3.40208 0.634812,-6.80039 0.926477,-10.19652 m -6.138894,9.23364 c 1.576014,-0.77913 3.160913,-1.55476 4.754367,-2.32692 3.48257,-24.05572 8.553259,-47.469005 14.377105,-70.333375 M 33.60943,72.650899 C 37.836874,44.131352 42.321225,17.528836 46.790434,-8.4074075 M 44.335122,12.287741 c 1.670231,-11.72783486 3.686982,-23.493411 5.985753,-35.265117 11.503694,11.478928 23.498878,22.94717433 35.837166,34.477467 M 65.83195,-3.7442728 C 82.404546,13.631811 100.92993,33.792216 119.29134,54.54309 m -8.88373,-12.039923 c 14.93214,16.762963 30.7591,33.531257 46.51435,50.845612 8.35468,-0.990277 16.69946,-1.905113 24.9847,-2.716742 m -33.10469,-0.891561 c 0.17553,0.200776 0.35125,0.401325 0.52714,0.601646 30.37311,-4.321305 63.26567,-11.854166 95.50843,-20.374081 m -22.64911,7.565972 c 29.62344,-4.712012 55.57388,-10.311253 80.76152,-17.121769 -2.37001,3.253851 -4.75529,6.483454 -7.1476,9.687889 m -1.49464,-1.379272 c 5.57386,-0.730655 11.12841,-1.478715 16.66782,-2.230619 -9.53999,18.309133 -19.27818,36.567908 -29.01581,55.419248 m 6.10835,-21.934671 c -16.23681,28.309761 -31.08854,55.593261 -47.8973,83.171281 m 11.47798,-17.65876 c -7.19078,13.37808 -13.64279,25.60325 -19.54971,37.06525 8.47,13.08277 17.63313,25.19507 27.21163,36.89577 m -7.45136,-16.53684 c 14.29789,27.61197 25.61599,54.22194 35.47405,82.0239 m -6.12567,-22.0552 c 9.1418,19.86749 18.54308,38.24442 27.31827,55.98077 -7.22272,-1.72828 -14.51116,-3.5238 -21.89543,-5.35765 M 50.156075,-21.499987 161.23225,94.852157 m 70.27357,98.638463 65.45735,127.71872 M 308.77797,64.160201 238.00586,195.43943 M 151.57619,312.43015 17.434186,447.20894 M 15.185682,202.29865 41.309642,34.792283" + inkscape:transform-center-x="36.062723" + inkscape:transform-center-y="-10.64718" + inkscape:path-effect="#path-effect12" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0995" + inkscape:transform-center-x="11.69553" + inkscape:transform-center-y="-17.883123" + d="m 226.68313,742.45714 c -8.5182,-4.74504 -22.00608,-6.19871 -34.10036,-9.39338 -7.62626,-2.01446 -14.59747,-4.45312 -21.97635,-7.36638 m 15.79669,-7.56231 c -8.8039,-4.1949 -23.61457,-6.76233 -38.6626,-10.87669 -0.35143,-0.0961 -0.69787,-0.19222 -1.03947,-0.28845 m 0.73433,5.86483 c -8.24136,-1.44457 -19.90296,-5.16152 -28.62319,-6.61416 -0.16296,0.2048 -0.32419,0.41094 -0.4836,0.61847 -1.4821,1.92954 -3.20745,3.63812 -5.11461,5.18245 m 12.7736,-6.87831 c -10.79359,8.93831 -20.04838,17.36181 -34.265572,30.97913 l -2e-6,10e-6 c -14.221458,13.62141 -14.530284,10.28606 -17.736223,9.82858 -2.102355,-0.3 -10.781965,6.20017 -21.452025,13.17327 m 25.365493,-35.94623 c -7.545701,7.66532 -16.747048,15.36186 -24.45912,25.04903 -7.204418,9.04951 -17.844877,15.73396 -29.782459,26.61501 m 29.116585,-9.95262 c -7.299667,7.92912 -17.967786,12.12056 -27.938248,15.18239 -3.587202,1.10159 -6.925635,3.03457 -10.20242,5.23947 m 7.820703,7.04825 c -1.540803,1.08799 -3.328341,2.50667 -5.290603,4.16766 -0.135062,-8.42191 -2.1802,-14.19506 -3.532663,-20.51484 -0.402494,-1.88077 -0.651279,-4.07872 -0.799296,-6.49278 M 8.6560315,757.01078 C 10.471984,747.99816 8.2857299,735.65786 7.3112709,722.86455 m -11.9991576,-4.80376 c 1.5076391,-10.64434 1.1668301,-17.48712 4.52624749,-19.10783 l 2.3e-7,-10e-6 C 3.1987851,697.33176 0.13448283,672.39752 1.7995592,652.51758 l 6e-7,-10e-6 c 0.7309934,-8.72758 0.2969005,-13.30855 -0.7917951,-15.97331 -0.13408606,-0.0115 -0.2686352,-0.0216 -0.40363777,-0.0304 M 7.1631623,686.76295 C 7.1120376,674.33144 4.5831336,664.4814 0.51268797,653.28486 0.21109822,652.45527 -0.04558106,651.61952 -0.26189299,650.77745 -11.302928,644.96 -16.035879,638.15623 -23.335516,630.1014 c -2.906355,-3.20703 -5.943695,-5.48017 -8.891556,-7.22388 m 29.85165,22.18149 c -8.386787,-5.01443 -18.61351,-15.18448 -27.780485,-27.58087 -6.908701,-9.34256 -14.730797,-11.17197 -23.2528,-13.69916 m 12.872861,16.49558 c -11.179511,-6.60841 -22.585207,-14.3516 -39.754533,-25.01303 -17.174476,-10.66463 -15.835094,-13.34092 -19.40444,-21.93929 l -1e-6,-10e-6 c -1.08163,-2.6056 -3.47228,-4.66571 -6.69208,-6.39436 m 26.811354,29.15013 c -10.095987,-5.75052 -19.992214,-8.16619 -31.999254,-6.42162 -2.70643,0.39323 -5.1617,-0.087 -7.45758,-1.17482 6.02033,-1.60242 13.27283,-7.90215 19.784775,-13.18525 m -16.379505,-4.24887 c 9.05199,-6.14029 22.170871,-6.34238 35.30411,-7.93781 1.923202,-0.23363 3.687278,-0.50346 5.317403,-0.78899 m -7.823777,-15.7108 c 11.994219,-4.60072 22.224447,-2.94256 35.358492,2.44048 6.988628,2.86433 12.810926,0.51589 18.667846,-2.92032 m -3.854325,-5.61215 c 11.879225,-1.6591 20.384106,-3.91077 29.7125012,-0.41372 7.3538878,2.75684 16.6919598,-4.11672 26.3750038,-9.97522 0.989054,-3.05678 2.003048,-6.04018 3.010118,-8.74326 1.985968,-5.33054 3.08851,-9.75248 3.730084,-13.71008 M 5.6240467,530.77762 c 4.6709053,-2.18132 9.2129373,-3.91789 13.7838453,-5.52595 1.920334,-6.29732 3.896378,-12.3467 6.350847,-18.9955 l 1e-6,0 c 4.222855,-11.43909 6.249872,-20.65672 10.287693,-29.77381 l 10e-7,0 c 3.277211,-7.39969 4.26399,-17.30416 4.877835,-27.13568 m -20.72962,51.68028 c 2.821134,-9.77268 7.443374,-24.6963 13.821094,-41.91267 l 0,-10e-6 c 6.379633,-17.22154 3.577509,-22.35612 2.246289,-34.79256 -1.145977,-10.70588 4.587384,-17.69113 9.1994,-24.19279 m -2.565051,56.17189 c 2.213606,-8.57455 7.267242,-20.90587 13.251328,-30.56453 4.509913,-7.27927 5.77693,-16.81711 7.826204,-27.23639 m -14.414451,23.5329 c 0.757803,-8.47236 2.863272,-17.63324 3.513428,-27.45381 1.002477,1.48847 1.902485,2.93049 2.647654,4.32661 3.554494,6.65952 11.294487,19.53223 13.552794,32.18178 l 0,0 c 0.70287,3.93702 2.339679,6.76618 4.50066,8.83736 M 61.835193,396.1855 c 7.880696,6.75458 16.793704,17.71069 29.913668,26.75774 l 10e-7,0 c 13.123898,9.04977 13.316208,20.33055 19.484038,34.69116 l 1e-5,0 c 3.79169,8.82823 6.67861,13.76442 8.22521,18.68561 M 97.053583,450.4192 c 8.561497,8.04239 12.543127,12.7736 17.309147,12.04251 4.76745,-0.73131 13.70745,17.82321 20.79576,27.16304 l 0,0 c 2.18962,2.88512 4.63741,5.84227 7.36766,8.92068 7.24896,0.30841 15.3997,1.00391 24.59082,2.36716 m -48.62434,-33.84501 c 9.07633,7.23074 16.4077,20.39751 28.77197,34.79872 0.62719,0.73052 1.22807,1.43304 1.80483,2.10975 14.87384,3.73797 21.29261,-1.56879 33.56089,-1.56483 8.15688,0.003 13.62154,-1.95023 17.77414,-5.39312 m -53.94572,2.49483 c 12.58909,-2.32612 20.44795,-0.17996 28.1375,1.28313 l 0,0 c 7.69185,1.46352 25.31098,-2.82071 42.69178,-6.64632 l 1e-5,0 c 16.67314,-3.66985 18.24715,-1.94537 21.40626,-3.26715 m -52.19994,8.4458 c 9.72468,-2.74466 23.56292,-1.74968 37.43617,-3.39306 l 0,0 c 13.87741,-1.64388 22.22228,-1.2086 33.3957,-1.85569 l 0,0 c 3.11096,-0.18017 6.12943,-0.49999 9.06227,-0.96282 m -32.15954,-0.0774 c 12.35858,-2.98205 22.79114,-2.01261 35.52796,-4.01884 m 4.15138,3.65706 c 4.72607,0.63777 8.86752,1.11308 12.61498,1.81895 -4.70687,7.1052 -10.3916,14.78263 -16.30892,24.56905 l 0,0 c -9.6763,16.00324 -10.52237,16.82756 -12.84009,22.86881 l 0,0 c -0.28408,0.74045 -0.70247,1.56326 -1.23344,2.45108 m 5.84561,-21.12241 c -6.2374,6.80581 -14.41683,17.53749 -24.58292,25.14394 -2.48972,1.86285 -4.34609,3.91236 -5.74239,6.08152 m 18.56496,-6.36089 c -6.27679,8.78011 -16.80697,17.85754 -31.65475,25.99762 -13.13941,7.20349 -9.47949,18.1755 -6.94672,30.79876 m 3.32359,-24.76629 c -5.59463,8.12818 -9.74833,14.53444 -13.88818,21.21318 1.14972,2.35969 2.30078,4.74581 3.41008,7.21861 l 0,0 c 4.67253,10.4158 7.31152,20.98915 9.82524,31.87771 l 0,0 c 2.37013,10.26659 8.53371,22.22271 14.69466,37.16939 m -20.58707,-54.67147 c 6.10164,8.43952 5.27361,20.79127 3.8885,31.41387 -1.03253,7.91856 4.14951,17.48769 8.87878,29.02996 m 1.44163,-20.20078 c 4.16836,10.94539 10.07181,21.21899 18.20508,32.49521 6.53007,9.0535 7.96247,16.3662 10.68333,23.37583 m -9.31587,-11.48716 c 4.56532,8.85759 7.30142,21.56415 9.9352,33.58068 0.28344,1.2932 0.60842,2.5711 0.96982,3.83983 -10.10508,-1.49992 -17.70447,-3.63153 -25.71942,-2.90057 -3.67938,0.33557 -7.97471,-1.06839 -12.53531,-3.39492 m 3.72446,-5.43608 c -12.76931,-4.99271 -20.59946,-7.71782 -29.81919,-13.78456 -9.22249,-6.06857 -25.68242,-3.74732 -45.05802,-1.86953 l -1e-5,0 c -11.27544,1.09276 -16.5165,-1.21245 -20.88394,-3.96813 m 50.78707,-2.14403 c -12.92265,-3.17054 -23.06399,-7.87609 -37.11905,-14.24245 -6.72893,-3.04793 -12.38395,-3.84116 -18.08498,-3.43985 -5.13943,5.72134 -10.33346,12.86029 -17.02993,20.04624 -2.522398,2.70677 -4.63412,4.86633 -6.431709,6.63231 m 25.942239,-13.34642 c -0.99457,-0.29003 -1.98905,-0.59066 -2.98278,-0.90165 -7.55553,6.21846 -15.04338,11.50814 -21.892846,16.09102 l -3e-6,0 c -7.57482,5.0682 -15.730932,14.39647 -21.272158,22.0903 l -2e-6,0 c -2.58829,3.59377 -7.249816,6.55338 -13.041004,9.08525 m 20.499351,-33.93299 c -8.456732,6.39442 -16.578234,16.84603 -23.716894,29.38455 -0.04956,0.087 -0.09921,0.17362 -0.148941,0.25971 m -7.237653,2.46172 c -9.100332,7.22921 -13.600681,16.15337 -14.9335,27.44473 -1.318468,11.1698 -17.156219,14.6121 -26.3829728,22.78379 -0.011653,-0.10914 -0.022478,-0.21768 -0.032446,-0.32561 -0.8051716,-8.71821 -1.624109,-19.43513 -3.6905676,-29.27665 m 33.3486653,11.28317 c -5.201378,3.69418 -13.680905,10.09119 -23.418067,16.67386 -1.238195,-2.37818 -2.626294,-4.73423 -4.081149,-7.17174 l 0,0 c -5.6705241,-9.50058 0.297716,-22.64715 1.847136,-34.68695 l 0,0 c 1.105031,-8.58667 1.285807,-16.94404 2.600202,-26.07751 M 3.3818722,761.68698 C 4.015196,751.03987 2.6354965,739.58021 2.1487506,728.77759 c -0.059296,-1.31599 -0.063101,-2.63138 -0.012015,-3.94462 m 5.5815032,14.04236 c 1.640111,-9.14766 0.4968928,-22.31671 2.5870652,-33.59511 l 1e-6,-10e-6 c 2.090799,-11.28179 1.845406,-22.89677 6.523697,-35.42834 l 1e-6,-10e-6 c 1.033918,-2.76952 1.519648,-5.21129 1.619521,-7.37088 m -0.420816,30.59409 c -0.221178,-10.40043 -1.271662,-22.2555 -2.772196,-33.53696 -0.351463,-2.6424 -0.716107,-5.28278 -1.137872,-7.92812 -8.2750581,-4.75724 -17.161147,-9.56755 -28.195546,-14.67508 -8.739254,-4.04518 -12.59487,-8.20918 -14.972453,-12.9105 M 1.2521095,654.59885 C -8.9183456,648.03043 -16.305633,643.63707 -23.275987,639.8514 c -1.993052,-1.08244 -4.325193,-2.75715 -6.827485,-4.86721 m 4.473907,-5.00013 c -7.760878,-4.89868 -19.438008,-12.09089 -30.176362,-18.17082 -3.863476,-2.18746 -7.49095,-4.30965 -11.07924,-6.37802 m 6.845114,5.76217 c -9.925968,-5.08861 -21.35784,-12.27908 -35.877536,-18.91206 -0.815662,-0.37261 -1.590943,-0.74212 -2.328577,-1.10888 m 10.292461,-0.0241 c -7.737911,-4.74826 -16.565605,-10.72053 -27.103575,-17.81326 1.33582,-1.3519 2.55975,-2.77711 3.66142,-4.27389 5.41054,-7.35098 19.589406,-7.26488 27.384913,-10.45271 l 2e-6,-1e-5 c 1.594936,-0.65222 3.542546,-1.23644 5.773924,-1.73901 m -19.201002,12.81906 c 9.260613,-4.67798 21.875355,-5.16449 34.220329,-4.2321 l 2e-6,0 c 12.348675,0.93266 20.277657,-9.78247 29.381002,-18.03788 l 4e-6,0 c 8.209968,-7.44524 16.833268,-5.74328 22.840297,-4.83427 m -48.356153,16.81993 c 8.443337,-2.04263 20.118513,-10.40337 28.97419,-20.03214 l 2e-6,0 c 8.858332,-9.63165 20.8973797,-5.96571 31.32006518,-6.63162 l 3.72e-6,0 c 4.0134185,-0.25643 7.8169183,-1.4251 11.4084921,-2.97402 m -33.851967,12.78407 c 11.4636,-4.66109 23.6835946,-8.66338 39.750376,-14.72587 0.479974,-0.18111 0.947297,-0.35872 1.40242,-0.53302 7.392759,-12.445 1.910546,-21.39767 -1.039908,-33.23391 -2.992296,-12.0041 7.373464,-19.35215 14.285474,-26.18774 m -21.568508,52.40284 c 2.574967,-12.20046 8.441318,-21.50892 16.843972,-32.27221 8.405175,-10.76651 4.340539,-21.74536 4.584571,-33.02459 l 0,-10e-6 c 0.138009,-6.37879 2.369139,-12.44558 5.293492,-18.48981 m -0.681044,34.0674 c 3.179039,-9.25782 2.855599,-20.77981 0.07624,-30.1647 l 0,0 c -2.780194,-9.38772 6.495237,-18.69813 10.972068,-23.84257 l 2e-6,0 c 2.384906,-2.74055 4.152133,-9.2171 6.037873,-16.90302 m -8.197369,29.69621 c 2.821654,-11.19486 8.31154,-22.24012 16.501563,-34.55436 2.93356,-4.41081 4.180826,-8.62286 4.483468,-12.8578 2.805688,4.49895 3.098618,8.93703 4.09652,12.35269 M 55.05687,386.56683 c 6.207896,6.71747 12.805031,19.14289 18.109705,30.97808 4.868432,10.8619 14.016007,15.94667 24.012008,22.28169 M 83.533454,424.27969 c 7.593088,6.5464 11.989142,18.7545 15.713145,29.83761 1.828751,5.44261 5.432901,9.96789 9.713811,14.38101 m 1.48806,-19.36635 c 5.67609,6.54562 12.28935,17.43658 16.45628,25.95949 2.61282,5.3442 7.90491,12.57336 13.94766,21.48354 5.19979,1.79389 10.66558,4.18346 15.99054,7.12568 11.93337,6.59359 17.12503,-0.14375 21.17922,-5.32147 m -40.67388,-5.69878 c 3.09703,2.82945 5.58986,5.76253 7.73591,8.67422 6.57679,-0.83365 12.0514,-1.73528 17.88259,-3.4133 6.11284,-1.75906 14.22924,-2.1462 22.55121,-2.97054 m -15.05851,10.92924 c 12.70432,1.44926 22.69583,-3.55365 34.92411,-8.81481 8.81449,-3.7924 16.679,-2.59237 24.83915,-1.57367 m -4.87724,3.05779 c 12.17248,1.6578 22.11276,-3.99579 32.92849,-10.18375 5.66631,-3.24183 11.58072,-3.33908 17.64394,-2.67575 m -20.3611,5.83995 c 7.79559,-1.29227 14.50742,-3.13478 19.86717,-6.86256 -2.77945,1.29617 -5.76541,2.30439 -8.97389,2.94497 -11.42165,2.28036 -9.0969,22.95129 -8.50573,41.23287 l 0,10e-6 c 0.1549,4.79011 -0.73262,8.02762 -2.29379,10.20387 m 15.21802,-34.81912 c -7.31895,10.52766 -13.70924,19.86433 -22.3007,32.0984 -8.59403,12.23774 -9.26692,19.60421 -8.96197,31.36646 l 0,10e-6 c 0.0474,1.8276 -0.20826,3.51997 -0.69333,5.10619 m 1.36725,-22.08536 c -5.66605,8.03983 -11.27171,17.86797 -15.11624,26.05532 l 0,1e-5 c -3.84569,8.18981 -15.95051,19.89772 -29.15103,32.10786 l -1e-5,10e-6 c -2.4646,2.27969 -4.32207,4.34776 -5.70749,6.26325 1.33832,5.36487 5.65611,9.76664 10.81131,14.1414 m 15.06369,-40.37467 c -5.26845,7.84084 -11.83861,16.57427 -19.34463,25.94107 0.21548,1.64722 0.4074,3.31038 0.57723,4.98845 0.4259,4.20825 1.91726,8.13395 4.14276,12.00597 m 2.3721,-8.94775 c 3.29611,12.46284 11.59963,19.36813 22.88243,27.18994 1.37448,0.95286 2.4937,1.9828 3.39701,3.07581 m -5.82352,3.59349 c 4.29863,9.65453 5.73009,21.06622 5.14481,32.21121 -0.58546,11.14834 8.89467,17.3725 14.67289,21.04178 l 0,0 c 2.3672,1.50321 4.5531,5.51728 6.91905,10.65791 m -7.7903,-29.42065 c 3.78753,9.38977 8.07964,22.69558 12.27418,36.83099 0.37331,1.25803 0.71744,2.44155 1.03281,3.55852 m -1.73216,-7.25344 c 0.96045,5.97537 2.39403,11.16103 3.69756,16.30405 -6.30243,-1.3469 -12.76918,-2.74768 -20.25693,-3.1413 -5.43889,-0.28591 -9.80282,-0.94736 -13.68557,-1.58261 m 15.67805,-6.29194 c -12.18146,-2.29542 -21.57285,-4.61052 -32.55722,-4.31981 -0.25653,0.007 -0.51431,0.01 -0.77335,0.01 m 0.64032,4.25656 c -11.34464,-4.9715 -18.86665,-4.00311 -24.74469,-2.66349 -3.27241,0.74579 -10.39095,-1.97911 -18.86426,-5.85308 m 16.90797,-5.15536 c -10.20723,-1.74482 -21.39953,-4.4102 -32.33087,-3.74999 -4.2917,0.2592 -8.77929,-1.02257 -13.50406,-3.16367 m -5.61403,-3.9107 c -5.06993,-2.12248 -10.59313,-2.84091 -16.37322,-2.59046 -4.76448,5.32229 -9.78696,11.61762 -14.869823,18.44802 l -2e-6,0 c -10.157906,13.65029 -13.814742,9.68432 -15.569036,8.06062 -1.452616,-1.34449 -12.418588,9.74985 -21.23647,18.53246 M 96.1508,711.54508 c -10.827988,7.11479 -14.102666,15.26068 -16.414757,24.65031 -2.008118,8.15517 -15.20738,11.07711 -27.258613,13.48516 m 12.985613,1.43799 c -10.052004,8.19326 -17.896698,9.43684 -27.707645,7.08371 -1.195178,-0.28666 -2.335405,-0.2897 -3.426927,-0.06 m -1.677193,15.16418 c -8.514318,7.28425 -17.645967,12.98591 -27.1387169,17.92046 -0.5615399,0.29191 -1.1104342,0.59215 -1.6472573,0.89945 -0.5363413,-8.6596 0.4752982,-16.41523 2.2006611,-25.14802 m 3.8057823,11.79703 C 7.145307,768.11049 9.1861855,758.69418 8.8127458,751.85427 l -4e-7,0 C 8.4391939,745.01232 7.339154,730.69829 5.4130081,721.78686 l -7e-7,0 c -0.710092,-3.28529 -0.6340868,-7.35033 -0.00785,-11.8655 M 4.2490637,734.22515 C 2.7751873,722.21092 3.1580315,711.42058 2.0483089,699.09276 l 6e-7,0 C 0.93825404,686.76125 3.3331619,678.36985 6.9181003,670.28004 l 1.4e-6,0 c 1.9097757,-4.30962 2.2164929,-11.51682 2.7044791,-20.24705 m -12.896938,32.48591 c 0.5298363,-11.25904 0.8358366,-18.97839 3.47015342,-24.1892 m -1.35720392,-0.39432 c 0.2902919,-2.66621 0.54122902,-5.32661 0.84410322,-7.85652 -5.46417792,-2.58377 -10.62825752,-4.41357 -14.22426352,-3.75763 m -0.04155,-13.97483 c -9.107089,-6.16979 -16.92703,-10.95559 -22.818117,-14.74781 -0.572638,-0.36861 -1.25026,-0.79527 -2.02352,-1.27379 m -7.145528,0.92777 c -9.505885,-4.08123 -17.218574,-10.05183 -23.730258,-12.18327 -4.426648,-1.44896 -12.210389,-6.75281 -20.688514,-12.25055 m 12.534024,-2.84802 c -7.133848,-6.98407 -18.393259,-7.70409 -27.211301,-5.10879 -1.97774,0.58208 -4.00993,0.23657 -6.07939,-0.7451 8.19849,-1.63555 15.950787,-10.88694 23.968477,-15.68297 9.914157,-5.93047 17.682656,-8.4754 22.962093,-14.10954 m -57.09513,19.50548 c -0.0439,-0.0446 -0.0878,-0.089 -0.13171,-0.13328 11.95489,-5.53415 24.631918,-5.67087 42.682938,-5.96142 4.892773,-0.0788 8.59474,-0.85683 11.556358,-2.13143 m 1.431022,-11.42759 c 9.863098,-4.16683 19.166185,-5.67125 28.703418,-6.34806 m -21.175436,9.03561 c 10.761503,-3.8443 24.074405,-7.71321 40.777571,-11.93208 0.938321,-0.237 1.839373,-0.47126 2.706458,-0.70303 m 3.770638,-1.15652 c 8.3472727,-4.26258 18.1925654,-8.8372 23.100057,-15.23951 0.890369,-1.16157 2.114348,-2.11295 3.573084,-2.90227 0.197088,-5.27938 1.939877,-9.49181 3.558245,-13.45088 m -2.63227,2.10873 c 1.433275,-10.11204 3.810608,-20.81585 2.986405,-30.39206 -0.208614,-2.42384 0.169266,-4.83153 0.954304,-7.16619 m 7.508185,6.60052 c 3.17962,-9.31495 3.824199,-21.08549 2.984832,-31.07715 -0.0058,-0.0694 -0.01135,-0.13889 -0.01658,-0.20855 m 0.784137,2.9818 c 3.068919,-12.56192 9.146886,-22.86694 18.896652,-36.37813 2.147756,-2.97635 3.465867,-5.61621 4.175586,-8.00856 m -7.605878,6.20323 c 0.748692,-9.30702 2.947182,-17.98294 1.968473,-24.98127 0.26819,1.10006 0.502841,2.21784 0.698935,3.35446 0.273664,1.58624 0.774698,3.0991 1.472045,4.56112 m 4.191828,-5.29011 c 9.053611,7.98714 10.18025,15.59984 10.065735,20.36912 l 2e-6,10e-6 c -0.114549,4.77071 16.623348,18.1424 29.407475,28.07553 l 4e-6,0 c 3.244812,2.52118 5.636123,5.05551 7.468673,7.65804 m -10.117253,-22.4216 c 6.002301,6.41446 11.739313,18.1393 15.819063,29.80288 m -13.085081,-0.61095 c 8.221961,8.61414 16.114391,16.58984 27.860231,23.44825 8.98902,5.24869 12.57921,13.51419 17.37957,22.24985 2.48316,0.47256 5.08045,0.98946 7.98322,1.47695 1.41302,0.2373 2.75859,0.38973 4.04226,0.46944 m -18.60584,-17.81015 c 1.867,3.74704 4.2205,7.44075 6.7355,11.2493 6.67663,0.31457 13.7684,0.92433 19.93591,2.52236 4.01385,1.04001 7.90651,1.14938 11.47376,0.95123 m -3.07978,-11.12132 c 9.19265,-1.94562 22.6676,1.24971 34.81321,5.61715 l 0,0 c 12.14925,4.36876 20.97426,-3.05162 29.63164,-7.33068 l 0,-1e-5 c 2.90755,-1.4371 6.28451,-1.94317 9.85056,-1.9344 m -19.80365,9.63857 c 13.25294,1.71735 19.58,0.33758 25.3994,2.70527 0.85218,0.34672 2.00217,0.49253 3.40067,0.46572 m -3.40555,-9.40665 c 11.01067,1.024 24.11898,0.0353 40.0231,1.70344 -0.0272,0.31452 -0.0522,0.63115 -0.0749,0.94997 l 0,1e-5 c -0.83317,11.67313 -12.587,19.79659 -19.0565,31.76568 l 0,0 c -4.77321,8.83079 -10.12189,13.61871 -16.30297,17.70927 m 27.74172,-41.49783 c -6.08319,8.06054 -10.48961,20.7437 -12.60649,34.66703 -1.21325,7.97985 -5.7594,11.56335 -11.31818,13.4089 m -5.72438,-12.75291 c -4.52622,7.35749 -9.7376,19.56748 -10.44071,31.18875 l 0,0 c -0.70333,11.62476 -11.79282,20.80031 -16.60416,34.78834 l 0,0 c -3.04861,8.86325 -8.84666,13.1233 -16.2744,16.45496 -0.38865,1.72635 -1.06934,3.28632 -1.95714,4.9587 m 21.51746,-42.89484 c -7.09182,10.88693 -14.80465,17.55541 -25.49465,25.19729 -1.65313,1.18177 -3.04516,2.39518 -4.22587,3.62365 m 13.84195,-1.99979 c -1.44047,2.59146 -3.38283,5.56994 -5.6544,8.8263 2.16595,7.69537 2.85575,16.63677 3.70913,25.78799 l 10e-6,0 c 1.25676,13.47689 11.38988,17.84173 22.14398,22.41053 l 0,0 c 10.22802,4.34531 7.19958,21.0101 8.30739,35.0888 m -21.54178,-67.30058 c 2.83944,9.1605 9.76147,20.22827 17.29378,29.58822 5.67673,7.05414 7.08786,14.34977 8.7268,20.57139 m -6.26651,-12.94817 c 6.29079,9.44724 4.15138,23.58086 0.46645,39.56844 l 0,0 c -3.68604,15.99237 11.81951,19.30252 23.34164,26.91599 l 1e-5,10e-6 c 0.0579,0.0383 0.11542,0.0767 0.17251,0.11529 -0.3362,-0.58616 -0.83879,-1.10751 -1.48452,-1.5725 m -19.34667,-15.96336 c 3.43304,6.64637 6.0977,12.94928 9.10109,19.0941 -3.7051,-1.36314 -7.28782,-2.78338 -10.50778,-4.22048 l 0,0 c -8.57972,-3.82921 -20.00855,-6.30506 -28.06271,-9.62578 -1.64786,-0.67941 -3.52704,-1.37133 -5.56998,-2.08133 M 77.500181,417.96663 123.02431,476.81118 m 98.61985,181.06693 4.53266,11.69115 m 27.37933,-134.7856 -18.35926,26.94067 M 117.67089,701.83847 -20.976478,814.88166 M 8.3871054,565.62224 35.308111,463.79261 m 197.146849,31.68733 46.7399,-2.60609 m -22.30044,37.01118 -18.83001,27.63146 m 11.4369,172.21384 0.60436,1.55882 M 8.8160798,782.33491 4.0553363,624.41446 M 66.764473,689.34242 -58.999631,608.2661 M 41.720093,439.53907 63.940605,355.48921" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="M 253.78703,740.78452 118.38269,701.25812 9.0589989,790.39287 4.8086023,649.40134 -113.74644,572.97249 19.031001,525.36134 55.083643,388.99098 l 86.311377,111.5662 140.8368,-7.85266 -79.43408,116.56285 z" /> + <g + id="g33" + inkscape:path-effect="#path-effect35" + transform="matrix(2.4356345,0,0,2.4356345,215.12133,151.81038)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + id="path23" + cx="156.78354" + cy="118.22446" + rx="45.775078" + ry="65.168915" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + id="path25" + sodipodi:sides="5" + sodipodi:cx="232.40736" + sodipodi:cy="155.6778" + sodipodi:r1="88.721275" + sodipodi:r2="44.360641" + sodipodi:arg1="1.2316773" + sodipodi:arg2="1.8599958" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 251.84126,238.41646 c -13.17272,-12.72359 -25.7472,-25.27359 -38.01312,-37.81461 -14.41557,2.93538 -28.61002,5.8772 -42.75911,8.72563 m 30.2894,-15.00079 c -13.6395,3.38991 -27.70683,6.70491 -41.97293,10.29002 6.6724,-13.07328 13.11028,-25.82787 19.60723,-37.82163 m -6.8446,23.94495 c 5.13728,-10.88151 10.33127,-21.64274 15.49196,-32.2929 -5.87527,-9.96544 -11.78129,-19.82828 -17.79801,-29.59671 m 10.53739,16.09054 c -6.18241,-11.81093 -12.44254,-23.3543 -18.69126,-34.80828 16.06078,2.27713 32.13881,4.68944 48.39979,6.90563 m -25.55873,-2.62077 c 10.6765,1.83309 21.54905,3.47944 32.47626,5.0101 9.15575,-10.20101 18.39392,-20.576446 27.4528,-30.994762 m -12.25235,13.964682 c 7.80662,-8.195411 15.75981,-16.809999 23.85834,-25.763735 3.19872,15.534177 6.69846,30.365955 10.49552,44.733865 m -9.37941,-27.656097 c 1.4912,9.697687 3.1782,19.700767 4.9983,29.917237 18.02794,8.61449 36.55195,18.02433 55.12086,27.56767 -2.75261,1.72388 -5.50399,3.45141 -8.25618,5.1796 m -9.2386,-4.92524 c 5.89405,3.06069 11.86407,6.02059 17.89999,8.91384 -17.21852,9.50346 -33.85142,18.41467 -50.16522,27.63775 -0.0727,1.12697 -0.14428,2.25498 -0.21488,3.38419 m 24.86102,-19.76139 c -4.9045,2.65387 -9.83264,5.30002 -14.77918,7.94252 -2.27836,19.62815 -4.78254,39.2116 -7.28729,58.92602 -1.72733,-1.63987 -3.45467,-3.27781 -5.18161,-4.9135 m -3.76384,2.49677 c -11.85209,-11.91094 -24.46236,-23.4589 -37.55985,-34.65817 -13.94853,3.16377 -28.20243,6.54609 -42.62726,10.13986 m 25.39243,-12.66489 c -14.49419,2.65523 -28.76405,5.52305 -42.94437,8.51645 7.54008,-14.85761 15.19983,-29.54741 22.77101,-44.20383 m -6.94536,18.14049 c 5.68366,-10.37011 10.98591,-20.57586 16.09274,-30.58016 -8.78981,-14.86528 -18.03544,-29.26064 -27.07429,-43.05391 m 1.49764,31.59755 c -4.80446,-8.25155 -9.45962,-16.59946 -13.99292,-25.00074 19.77073,2.8759 40.04688,5.53039 60.59671,8.32634 1.11401,-1.11178 2.22964,-2.22272 3.34679,-3.33265 m -24.91619,-15.45548 c 6.65012,0.68772 13.42931,1.52027 20.29835,2.45469 11.24381,-12.523413 23.00299,-24.462579 34.73883,-36.40778 m -7.15409,22.227363 c 5.62501,-5.893725 10.97639,-11.796188 16.0925,-17.719602 2.61595,19.100669 3.79109,38.073039 4.10688,56.732029 3.96491,2.01856 7.8684,4.01472 11.72157,5.98494 m -3.64198,-14.60089 c 0.90887,4.46159 1.78617,8.90653 2.64047,13.33889 18.2869,8.46529 36.12504,16.68517 54.25122,25.01007 -6.85535,3.69314 -13.66432,7.40318 -20.37931,11.15277 m 7.7665,-29.00449 c 1.19453,0.56627 2.39152,1.13431 3.59097,1.70418 -17.31502,9.38146 -34.08336,19.16972 -50.31365,29.58232 -0.20625,3.6329 -0.39605,7.28489 -0.56946,10.95711 m 6.93509,1.46638 c -1.77732,0.92773 -3.53864,1.8478 -5.28473,2.76055 -2.80835,19.70643 -4.0234,38.64801 -4.4617,57.19402 -4.99062,-6.02315 -9.8503,-12.11299 -14.63556,-18.24396 m 5.83827,5.71926 c -12.48867,-12.42885 -24.11065,-23.80332 -35.20378,-34.635 -13.52997,3.63314 -26.66003,7.67674 -39.61234,11.79441 m 28.67499,-2.68448 c -13.82424,2.66638 -27.49919,5.35886 -41.11523,8.05895 5.01524,-10.08506 10.06903,-20.16513 15.11351,-30.25002 m -9.40232,10.88132 c 5.658,-12.10952 11.71799,-24.67612 17.8648,-37.41795 -5.64917,-10.0802 -11.2411,-20.27593 -16.9445,-30.43629 m 4.96626,14.43357 c -7.46853,-12.44651 -14.36969,-24.71536 -21.03443,-36.89942 10.04037,1.51508 20.20052,3.07311 30.3611,4.64062 m -17.7249,2.95948 c 14.63123,2.62448 29.58426,4.61108 44.82246,6.24283 10.53839,-11.28573 21.3564,-22.919404 32.41846,-34.626183 m -18.39345,16.125173 c 8.73465,-9.387362 17.50578,-18.710012 26.32883,-27.967354 3.4976,19.550223 7.11752,39.254304 10.91558,59.114374 0.40153,0.19188 0.80315,0.38384 1.20485,0.57588 m -11.72962,-31.65035 c 1.83347,8.96872 3.66247,18.04238 5.54911,27.17805 18.50242,8.20344 37.26241,16.68397 56.86665,25.03598 -1.17185,0.69314 -2.33895,1.38554 -3.50103,2.07705 M 302.23159,144.8771 c 6.20889,2.81901 12.29483,5.64648 18.25747,8.47517 -18.10306,8.99502 -37.2212,18.00007 -57.36304,26.84402 -1.75553,6.62527 -3.63276,13.23139 -5.63205,19.81135 m 19.30731,-21.79912 c -2.67302,1.39684 -5.3868,2.7926 -8.13738,4.18499 -1.92747,18.96544 -5.2569,37.80284 -9.05673,55.97833 -6.6703,-6.46561 -13.42754,-13.05353 -20.19771,-19.80619 m 15.17622,7.9909 c -12.00686,-11.99972 -23.81965,-23.3738 -35.67315,-34.55038 -14.64545,3.0685 -29.32421,6.29865 -44.21015,9.37342 m 33.72235,-0.67549 c -13.13013,2.94003 -26.32867,5.34648 -39.50676,7.37808 6.67255,-13.84405 13.36918,-28.12915 20.20329,-42.65274 m -18.46437,17.31578 c 4.86494,-11.41602 10.13424,-22.11535 15.60903,-32.31634 -7.6864,-13.1376 -15.01233,-25.40106 -22.43974,-37.29765 m 2.49915,26.05578 c -5.19474,-9.23956 -10.26606,-18.52735 -15.20286,-27.82461 15.67365,2.32977 31.62501,4.64 47.88701,7.04572 m -14.85314,-10.85579 c 10.29865,1.40894 20.49172,2.81937 30.58828,4.20633 13.03165,-14.611251 25.7175,-29.306583 38.11909,-44.255284 0.3046,2.431076 0.60446,4.857921 0.89969,7.280168 m -10.13467,13.558118 c 4.47159,-4.987065 9.08861,-9.974625 13.8133,-14.943923 3.21333,19.814713 7.27458,39.773221 11.34987,60.289951 0.34805,0.17614 0.69611,0.35248 1.04416,0.52901 m -8.06783,-24.09677 c 0.88652,5.82186 1.89612,11.78486 3.01286,17.85971 18.05385,8.14646 37.18402,17.41666 56.88209,26.87762 -1.10968,0.73965 -2.21646,1.48028 -3.32052,2.22155 m -4.60553,-13.81501 c 4.79762,2.11619 9.51677,4.30614 14.15834,6.56252 -17.92404,9.2826 -36.92407,19.48671 -56.95348,30.23375 -0.35242,1.49474 -0.71,2.9922 -1.07271,4.49225 m 4.29524,-10.68169 c -4.11762,2.29883 -8.23532,4.56258 -12.34258,6.79446 -1.62859,19.43427 -3.08479,38.34308 -3.66296,56.94239 -3.34476,-3.97635 -6.62455,-7.97562 -9.82515,-11.99344 m -6.73851,-108.95062 138.96123,64.31984 m -16.1488,-50.25411 -132.25835,69.43068 m 38.68147,-35.11858 -16.72362,139.46968 M 137.2352,259.61219 218.89821,94.395689 M 232.1679,235.82754 143.5046,76.9384" + inkscape:transform-center-x="-7.8187404" + inkscape:transform-center-y="-0.68423687" /> + <path + id="path27" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + d="m 259.62756,32.80099 c -1.08604,8.203029 -5.52345,16.107877 -12.66133,22.342246 -7.90097,6.900871 -18.48927,11.217469 -29.63096,12.136546 -11.13013,0.918124 -21.89275,-1.625969 -30.18285,-6.922188 m 19.49078,11.4212 c -7.7068,-1.341165 -14.87838,-4.757361 -20.54252,-9.809124 -7.57081,-6.752297 -11.90156,-15.926503 -11.99889,-25.577329 -0.0974,-9.654279 4.04331,-18.997762 11.5158,-26.153175 3.64564,-3.4909378 7.97931,-6.359478 12.76463,-8.4696424 M 180.89811,20.663401 c 1.88929,-3.580727 4.44045,-6.825236 7.54948,-9.61118 7.58316,-6.7951327 18.05115,-10.48450723 29.12571,-10.34498389 11.07307,0.13950363 21.84466,4.09225969 29.96853,10.90592089 0.55347,0.464211 1.09307,0.940383 1.61823,1.427983 m -18.3799,-16.4664359 c 4.83207,1.742295 9.25812,4.33594373 12.99967,7.6266937 7.49058,6.5880772 11.76786,15.5459612 11.82193,24.9191832 0.0541,9.370461 -4.11643,18.381401 -11.61577,25.074542 -0.23821,0.212605 -0.47947,0.422583 -0.72372,0.629888 M 258.5368,42.252877 c -1.18375,8.4191 -5.47035,16.263572 -12.1929,22.252521 -7.55845,6.733628 -17.58135,10.571796 -27.88921,10.774521 -10.30469,0.202663 -20.06608,-3.244078 -27.13827,-9.475325 -0.93716,-0.825732 -1.8212,-1.695339 -2.64828,-2.604872 m 18.36709,6.428962 c -7.19743,-1.512736 -13.62659,-4.617753 -18.62365,-8.978314 -7.30445,-6.374059 -11.08689,-15.036637 -10.37636,-23.948107 0.5812,-7.289559 4.14545,-14.325972 10.33516,-19.905455 m -3.36031,17.436962 c 1.55968,-6.940077 5.32179,-13.220475 10.80092,-18.112801 7.48161,-6.6803461 17.62915,-10.3004357 28.14233,-10.1422394 8.23081,0.1238517 16.21818,2.5583672 22.80496,6.9260084 M 231.38203,1.3804495 c 8.51374,0.88341 16.13547,4.1651111 21.89173,9.2754945 7.39187,6.56248 11.22648,15.706866 10.60285,25.263766 -0.4259,6.526673 -2.91293,12.976326 -7.26906,18.667603 m -1.46701,-6.351222 c -1.18289,7.451291 -4.94117,14.190025 -10.67607,19.306549 -7.34494,6.552968 -17.39609,9.971532 -27.7846,9.518258 -8.52146,-0.37181 -16.75048,-3.328859 -23.32627,-8.41436 m 13.47624,-0.703696 c -8.08622,-1.153785 -15.61998,-4.525265 -21.51432,-9.625771 -7.5741,-6.554032 -11.88645,-15.474476 -11.95256,-24.783858 -0.0571,-8.042278 3.06064,-15.845208 8.83868,-22.083119 m -3.5035,18.934637 c 1.30042,-6.833345 4.98066,-13.163055 10.49096,-18.173564 7.29774,-6.6358272 17.27923,-10.4859442 27.55839,-10.7283134 10.27866,-0.2423581 20.00326,3.143847 26.83532,9.3850304 3.16499,2.891263 5.62062,6.317074 7.21168,10.094574 M 235.79975,-3.5757528 c 4.56344,1.6495046 8.80658,4.1086703 12.46199,7.2282061 7.55987,6.4516037 12.09871,15.2758857 12.58889,24.5170867 0.4896,9.230095 -3.10188,18.08027 -9.815,24.529116 -2.63993,2.536006 -5.70375,4.641883 -9.06804,6.232 M 264.4423,41.156942 c -0.88746,7.894232 -4.98351,15.316769 -11.56743,20.909893 -7.50401,6.374754 -17.66223,9.882318 -28.18087,9.60789 -5.60077,-0.146122 -11.11892,-1.361473 -16.18292,-3.589837 m 5.9197,3.406609 c -10.65776,0.289504 -20.85352,-3.240932 -28.5506,-9.631442 -7.94435,-6.595811 -12.59002,-15.692125 -13.09642,-25.209999 -0.41714,-7.840276 1.99528,-15.490334 6.70413,-21.789141 m 1.34933,14.767898 c 1.11818,-8.526005 5.2406,-16.273569 11.65901,-21.9578438 7.26708,-6.4358634 16.87798,-9.6870853 26.58396,-9.0111088 9.69433,0.67516436 18.72233,5.2204489 24.8844,12.6681626 0.73153,0.884156 1.41881,1.804837 2.05891,2.759062 M 226.76208,0.10101606 c 6.85732,1.35394504 13.25333,4.36293844 18.42483,8.66123304 7.54936,6.2746579 11.94442,14.8351759 12.15803,23.6869419 0.21316,8.833194 -3.76677,17.212631 -11.04466,22.973683 -3.60082,2.850347 -7.90368,4.97258 -12.66517,6.196333 M 168.39556,34.119264 200.07164,-4.0217285 M 223.30561,78.049371 173.12805,55.102391 M 170.42387,46.313768 186.81003,2.9414036 M 226.97391,-6.046336 265.43999,28.13893 M 177.77162,9.3194391 232.64698,-5.3289816" + inkscape:original-d="M 257.70934,35.538723 A 40.550583,35.102173 0 0 1 217.15875,70.640896 40.550583,35.102173 0 0 1 176.60817,35.538723 40.550583,35.102173 0 0 1 217.15875,0.43655014 40.550583,35.102173 0 0 1 257.70934,35.538723 Z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Sketch_path_0_92_5.svg b/testfiles/lpe_tests/Sketch_path_0_92_5.svg new file mode 100644 index 0000000..1b429d6 --- /dev/null +++ b/testfiles/lpe_tests/Sketch_path_0_92_5.svg @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="sketch" + id="path-effect29" + is_visible="true" + nbiter_approxstrokes="5" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="1" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect17" + is_visible="true" + nbiter_approxstrokes="10" + strokelength="100" + strokelength_rdm="0.7;1" + strokeoverlap="0.6" + strokeoverlap_rdm="1;1" + ends_tolerance="0.5;1" + parallel_offset="6.5;1" + tremble_size="7.3;1" + tremble_frequency="3" + nbtangents="11" + tgt_places_rdmness="1;1" + tgtscale="10.8" + tgtlength="107" + tgtlength_rdm="1;1" /> + <inkscape:path-effect + effect="sketch" + id="path-effect12" + is_visible="true" + nbiter_approxstrokes="5" + strokelength="100" + strokelength_rdm="0.3;1" + strokeoverlap="0.3" + strokeoverlap_rdm="0.3;1" + ends_tolerance="0.1;1" + parallel_offset="5;1" + tremble_size="5;1" + tremble_frequency="1" + nbtangents="5" + tgt_places_rdmness="1;1" + tgtscale="10" + tgtlength="100" + tgtlength_rdm="0.3;1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-95.714286" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path10" + sodipodi:sides="5" + sodipodi:cx="-39.309525" + sodipodi:cy="19.565475" + sodipodi:r1="95.099884" + sodipodi:r2="47.549942" + sodipodi:arg1="0.63873167" + sodipodi:arg2="1.2670502" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 33.671155,82.982525 C 15.933542,78.964144 -2.8983721,75.666218 -22.029339,72.467571 c -5.832156,5.701256 -11.717139,11.42005 -17.595907,17.110263 M -27.0935,65.63095 c -14.206646,13.553495 -27.620503,27.611361 -40.656545,41.83913 -0.40569,-4.21784 -0.79289,-8.427359 -1.166091,-12.632188 m -3.017757,16.876468 c -0.611103,0.56444 -1.220297,1.12871 -1.827646,1.6928 -3.625515,-21.233253 -6.023216,-42.589957 -8.270546,-64.486787 -2.587206,-1.497927 -5.171379,-3.006749 -7.755605,-4.52766 m 14.625521,14.465562 c -0.225723,-2.461602 -0.465949,-4.932947 -0.718558,-7.412498 -18.037386,-8.952435 -36.904983,-18.454966 -55.439163,-27.663335 7.36815,-3.379766 14.78531,-6.716291 22.31706,-9.961995 m -27.37891,2.903989 c -0.89349,-0.461687 -1.78343,-0.922668 -2.66988,-1.383004 18.49354,-9.6079167 38.6334,-18.9116561 59.675348,-28.542769 1.57367,-6.312535 3.226489,-12.653793 4.939115,-19.040187 m -5.967986,26.1778146 c 0.826391,-0.3847693 1.655971,-0.7731506 2.488667,-1.1650783 2.726219,-20.3665813 6.983172,-42.4751963 11.987757,-65.6106583 2.725184,2.155564 5.471274,4.282414 8.234609,6.383895 m -15.59542,3.270243 c 0.292283,-2.312758 0.602605,-4.627992 0.92994,-6.945696 14.23482,15.19011 29.84456,30.180652 46.083953,44.976988 1.605928,-0.269405 3.215068,-0.5398 4.827147,-0.811184 m -8.052362,-12.089849 c 2.896473,2.907688 5.750734,5.851995 8.566419,8.831196 19.1003862,-2.919321 37.332116,-5.052921 55.083678,-6.585358 m -15.631632,3.525018 c 6.741886,-0.930853 13.392569,-1.964171 19.973783,-3.085424 C 28.56034,-17.048463 17.932554,0.39075899 7.2983205,17.40952 c 1.2841156,2.46931 2.5680986,4.929976 3.8539835,7.38336 M 18.021429,1.1157986 C 15.315276,6.1857159 12.677621,11.208834 10.099448,16.20579 19.773903,35.629025 30.328277,54.665249 41.249558,74.488716 37.748042,74.003897 34.258492,73.544752 30.777886,73.118195 M 27.858675,74.49597 C 11.117459,71.542989 -6.5584,68.241167 -24.413574,64.807421 c -6.812792,6.603853 -13.675841,13.170732 -20.477075,19.732822 m 9.342369,-19.386025 c -12.052495,13.465914 -25.099851,26.107736 -38.357638,38.356822 -1.772631,-12.056407 -3.630925,-24.272692 -5.371139,-36.536815 m 2.111477,31.876524 c -1.669938,-17.147112 -3.687924,-33.578764 -5.506637,-49.154944 -8.969734,-3.665546 -17.868863,-7.028002 -26.581973,-10.057841 m 22.531532,2.189355 c -16.412962,-7.110545 -32.503812,-14.371407 -48.836272,-21.063066 5.95472,-2.475241 11.87287,-4.864325 17.72126,-7.12488 m -12.26995,0.930029 c 17.77264,-9.0227683 34.95861,-17.4341671 51.688223,-25.780964 0.720197,-6.620307 1.386235,-13.232947 2.003441,-19.860274 M -78.6192,-9.8094442 c 2.821269,-19.7230808 6.574877,-39.7649158 10.872254,-59.4718448 7.465961,7.532488 15.061085,15.144527 22.740387,22.911788 m -17.930417,-19.719394 c 13.804876,14.465076 27.182196,27.725132 40.523664,40.183576 12.771708,-3.1351 25.5274056,-6.628176 38.383986,-10.35884 m -29.63839,5.646445 c 17.3590123,-2.365088 34.826065,-4.670053 52.452202,-6.566727 -6.907581,14.094768 -13.696408,28.4943165 -20.33356,43.4231951 M 29.815263,-25.711051 C 22.538523,-11.916121 15.604793,1.5562751 9.0746635,14.798147 15.131061,25.055511 21.424223,35.177641 27.981376,45.205879 M 6.894631,36.36668 C 14.698418,50.182939 22.441538,64.180861 30.49635,78.117063 17.299525,75.37572 4.3480883,72.585786 -8.0978531,69.577248 m 34.0659761,6.60999 C 8.2801018,72.705843 -9.7540666,69.114329 -27.917704,65.21656 c -9.53272,8.948211 -19.134099,17.734012 -28.720459,26.281657 M -34.318576,73.62672 c -12.268667,11.020029 -23.831228,23.057405 -35.046156,35.48724 -1.585089,-15.257252 -2.852886,-30.156299 -4.115973,-45.242031 m 0.790312,30.05483 C -74.611749,79.105161 -76.558772,63.925534 -78.510898,48.23887 -93.559182,39.320056 -108.6142,29.732109 -123.64477,19.249132 m 17.96904,19.760428 c -11.96581,-6.077662 -23.61075,-12.062223 -35.04861,-18.018333 18.45768,-8.687778 37.39463,-17.3097102 56.410165,-26.093436 m -25.522115,3.583332 c 10.17967,-4.2688399 20.110034,-8.581328 29.892986,-12.783998 2.788764,-17.801169 5.134842,-35.272546 7.568523,-51.615473 m 0.129668,26.155083 c 1.368188,-10.032638 2.776077,-19.981074 4.170942,-29.850707 9.18345,10.053097 18.343377,20.248535 27.351794,30.57321 m -7.419861,-8.251218 c 8.817662,8.67108 17.56421,17.587004 26.317657,26.591805 16.5896703,-2.699269 33.19156,-5.241131 49.989545,-7.993197 M 2.6568348,-24.356988 C 14.111237,-26.040307 25.792344,-27.939568 37.524354,-29.966418 31.211886,-18.715262 24.957887,-7.6106587 18.54593,3.4561631 M 25.734456,-9.7506373 C 19.206878,2.6214993 12.889117,14.393603 6.779052,25.702737 c 6.939516,11.884746 14.1031,23.270029 21.488377,34.309435 M 12.790033,34.38658 C 18.800401,46.255801 25.17325,58.690385 31.750641,71.458627 13.210567,68.638312 -4.93516,66.461277 -23.109345,64.307254 M 32.06802,82.257227 C 11.632282,79.49364 -8.0676271,75.753888 -27.335049,72.066872 c -4.531976,4.853572 -9.015642,9.713035 -13.462322,14.616802 m 23.821145,-22.901725 c -14.546491,15.017134 -29.422595,29.926523 -44.355534,44.940901 -0.946937,-6.58006 -1.899691,-13.149383 -2.849331,-19.700993 M -64.424594,111.517 c -0.119423,0.12334 -0.238925,0.24671 -0.358507,0.37013 -2.410112,-20.869561 -5.97381,-41.185031 -10.179765,-60.973394 -8.909006,-3.726262 -17.943252,-7.349739 -27.058704,-10.872754 m 23.153898,3.569369 c -18.287764,-9.320426 -36.144958,-18.232807 -53.929988,-26.968543 10.19697,-4.650127 20.41627,-9.2455965 30.59622,-13.8262362 m -19.09712,5.8541301 c 17.6615,-7.94264058 34.345611,-15.4641067 50.81531,-22.4122029 1.449994,-10.022725 2.828169,-19.853393 4.282437,-29.462501 m -13.578069,34.2962643 c 2.586987,-17.5362113 5.698165,-35.4106963 9.15304,-53.3408173 9.258782,9.150196 18.688007,18.272801 28.224643,27.466521 M -61.06611,-69.042181 c 10.925003,11.412185 22.594025,23.659259 34.464302,36.146491 6.986156,-0.987572 14.006806,-1.933982 21.0234372,-2.881431 M -17.449956,-22.366665 C 2.0467217,-25.592768 19.94405,-28.869943 36.784154,-32.370756 28.81705,-20.687919 20.315632,-9.1181068 11.474682,2.2766791 M 38.180439,-18.165985 C 30.676343,-2.8053722 22.705038,12.308774 14.753675,27.40814 21.67539,40.664183 28.612143,53.90908 35.882943,67.294549 M 13.717683,26.384414 C 20.73728,40.237 28.092953,54.330455 35.780552,68.769467 27.319164,67.590463 18.971233,66.529574 10.73593,65.607723 M 32.904703,83.90625 C 13.081997,80.790496 -5.1150767,76.896534 -22.468536,72.578019 c -6.344147,6.825674 -12.451115,13.531987 -18.437482,20.171658 m 11.27795,-22.075395 c -13.676131,12.491516 -26.283652,26.283049 -38.28509,40.674218 -0.899254,-11.874914 -1.51519,-23.469522 -1.995635,-35.007671 m 6.027271,28.969041 c -2.5084,-17.06287 -4.78911,-34.085923 -7.012368,-51.10399 -7.091556,-3.603554 -14.170702,-7.206032 -21.254529,-10.810929 m 13.435063,3.276926 c -17.517634,-7.791238 -34.321634,-16.393905 -51.157474,-25.14133 6.05381,-3.022425 12.1035,-6.063605 18.11429,-9.09245 m -19.45258,6.695308 c 17.28675,-8.968608 35.738977,-17.5722809 54.382306,-26.0844175 0.696005,-3.8279585 1.399227,-7.6524585 2.102515,-11.4755095 m -7.562539,18.51993525 c 1.165811,-0.52068109 2.334087,-1.0462475 3.504803,-1.57650955 3.241286,-20.2725687 7.123265,-41.7780887 11.541447,-63.7093917 5.369145,4.816935 10.800918,9.584139 16.291149,14.333832 m -17.578674,-14.806991 c 0.103737,-0.653812 0.207572,-1.30745 0.311505,-1.960916 14.599841,15.229259 29.300574,30.633774 44.17097,46.216179 11.187979,-1.582083 22.4235771,-3.114239 33.7170185,-4.596076 m -34.6547255,0.994509 c 19.9375479,-3.51337 39.855163,-6.558717 60.337787,-9.540434 -4.506175,9.566057 -8.841634,19.151341 -12.909225,28.6886867 M 34.462374,-28.980559 C 25.635151,-12.772949 15.901478,3.4970595 5.2540418,19.684418 10.50206,32.602724 15.180856,45.469544 19.286834,58.213562 M 14.105363,34.448173 C 22.295364,48.563812 29.411066,62.65072 35.988497,76.40168 20.504476,73.006902 4.5708898,69.331539 -11.403116,65.141098 M -100.46567,-105.44684 10.610506,10.905307 M -12.56425,-20.527902 52.893093,107.19082 M 59.310244,-74.676509 -11.461864,56.602715 M 13.443847,26.224469 -120.69816,161.00326 m 30.911337,-90.907677 26.12396,-167.506368" + inkscape:transform-center-x="8.7897054" + inkscape:transform-center-y="-0.30601065" + inkscape:path-effect="#path-effect12" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:transform-center-x="5.3539721" + inkscape:transform-center-y="-3.0699032" + d="m -11.228897,243.4881 c -6.466234,-3.60199 -15.796205,-5.30736 -25.206431,-7.3174 -2.49147,1.8028 -4.991021,3.57492 -7.409704,5.24601 -6.331206,4.3743 -12.007373,8.32438 -18.091197,11.79987 m 13.701049,-17.90052 c -6.750114,5.93685 -19.506994,13.50116 -32.501244,19.51855 -0.303466,0.14053 -0.601935,0.28101 -0.895572,0.42139 m 0.512659,4.7713 c -1.400213,1.89662 -2.972853,3.67868 -4.645909,5.39754 0.501283,-8.02707 -0.271406,-16.85602 0.935905,-24.16634 0.340624,-2.06249 0.437997,-4.34595 0.353558,-6.79365 m 10.004812,-0.81426 c -2.137353,-7.79118 -3.167149,-15.95289 -7.059195,-20.9993 -2.0603,-0.13102 -4.212015,-0.16253 -6.477805,-0.0747 l -2e-6,0 c -14.948627,0.57978 -15.984617,-15.79721 -19.917717,-29.29632 l 0,0 c -2.30412,-7.90814 -9.85729,-10.38933 -19.38938,-11.95451 0.24666,-0.0281 0.46511,-0.0431 0.66091,-0.0528 m 24.11688,15.68729 c -8.27265,-5.3724 -18.20095,-10.71359 -26.63997,-14.06414 -2.21372,-0.87892 -4.69837,-1.94432 -7.4066,-3.05092 6.36088,-1.30959 11.25516,-2.88944 15.47851,-2.29862 m -3.55216,8.49965 c 11.7652,-2.83928 20.16195,-9.41625 29.256355,-17.12282 3.272012,-2.7727 6.792793,-4.714 10.375222,-6.38339 m -2.386904,12.81381 c 5.667163,-2.77355 10.383151,-4.27223 14.693012,-5.16518 0.998821,-4.86829 1.419358,-8.87409 2.187709,-13.15437 0.322691,-1.79763 0.79909,-3.91242 1.376258,-6.24333 m -5.272268,-12.6345 c 4.725284,-8.67904 5.44836,-20.68575 7.383233,-33.145482 m -12.040071,-4.808447 c 0.787189,-1.728678 1.522113,-3.349867 2.231152,-4.856813 6.79986,8.786478 12.966271,20.368812 21.693131,35.564662 9.505538,16.55174 13.739756,13.97575 20.992219,13.3542 1.158825,-0.95076 2.350292,-1.88037 3.583727,-2.76514 5.901237,-4.23309 10.574591,-4.09606 14.572368,-2.00205 m -24.006934,1.02178 c 3.828495,4.03201 6.932547,8.81879 9.460168,13.73934 4.118983,-0.13957 7.82209,-0.18264 11.200025,-0.50973 7.357021,-0.71241 22.8998006,-2.55052 35.448824,-5.84788 l 3e-6,0 c 3.491813,-0.9175 6.909006,-1.30298 10.346373,-1.33035 -0.451814,0.87712 -0.901499,1.79203 -1.345803,2.73879 m -26.3480082,3.42169 c 10.8774464,0.34854 20.2530432,-3.51121 30.2651772,-9.41902 -0.604676,0.31454 -1.202084,0.6057 -1.789618,0.87611 -4.586943,2.11115 -10.087281,11.73544 -16.287527,20.66195 m 8.922329,-2.99319 c -8.098831,8.58921 -16.4238473,16.04363 -30.512493,20.57983 -4.440558,1.42975 -7.043,3.6526 -8.540063,6.2334 3.782342,6.41661 12.7874286,14.52445 19.48983723,19.85425 2.96545157,2.35814 4.62189607,5.26178 5.44917847,8.49688 M -4.4258026,190.82001 c 3.2552127,10.62472 6.710185,24.58428 8.0543403,42.70409 0.9044157,12.19193 4.0469,16.60071 6.9862083,20.29739 -1.8481755,-1.42969 -3.7107733,-2.90994 -5.6339635,-4.307 m 1.2437897,-18.31394 c 0.8468088,2.58307 2.1212746,5.79057 3.6852076,9.37251 -6.6593912,-1.63751 -12.0618738,-1.64918 -17.457801,-2.29705 -1.1693656,-0.1404 -2.4978558,-0.31699 -3.9602978,-0.50929 m -2.716722,-15.86477 c -9.091294,-3.94966 -19.933789,-1.68584 -27.910354,4.28501 -0.02162,0.0586 -0.0432,0.11718 -0.06474,0.17584 -3.155792,8.59419 -7.477915,11.97563 -11.765416,14.26928 m 29.063488,-16.96488 c -3.006357,-0.33269 -6.36997,-0.72812 -9.946224,-0.96782 -6.029122,6.33806 -12.972295,13.34548 -19.540682,22.96919 -9.739392,14.26973 -16.284143,13.034 -22.983098,18.04109 l -2e-6,0 c -0.421926,0.31536 -0.863922,0.65137 -1.32454,1.0065 0.341931,-4.43225 0.0926,-8.25745 -0.489216,-11.74774 m 12.2185,-4.68175 c -5.483455,3.85432 -11.320708,8.92961 -16.794203,13.78746 0.117178,-3.40689 0.305368,-6.85623 0.626463,-10.47208 l 0,-1e-5 c 1.048138,-11.8031 -0.09956,-21.38474 0.763543,-30.86585 0.372042,-4.08684 0.09804,-8.88018 -0.534754,-13.99387 -3.985385,-2.57942 -8.25046,-5.40856 -12.597533,-8.22166 m 4.172375,47.55036 c -0.352632,-10.13659 1.095843,-25.42411 4.299798,-43.00439 0.49667,-2.72526 0.77283,-5.16023 0.868127,-7.37709 -7.088928,-7.79053 -19.555472,-9.09568 -30.971672,-15.61489 -11.62992,-6.64125 -16.38049,-9.56187 -22.25241,-11.9989 m 55.978346,33.47457 c -9.96137,-3.8543 -17.082706,-11.46537 -23.273596,-16.40379 -3.92729,-3.13277 -10.15217,-7.86573 -16.2742,-13.37763 1.2097,-0.76575 2.42303,-1.55904 3.65595,-2.37441 m -5.88438,16.66776 c -3.45643,-1.84908 -6.70795,-3.80285 -9.92075,-5.8596 6.47994,-3.04741 13.15504,-6.61384 18.1449,-10.67994 l 0,0 c 7.21468,-5.87906 18.614857,-5.54493 24.533349,-5.43397 0.270908,0.005 0.562016,-0.0138 0.872021,-0.0555 -0.224712,-2.09806 0.186168,-4.96465 0.978381,-8.38266 m -16.100441,-3.1284 c 7.689333,-3.85157 15.837008,-5.83766 25.382248,-7.76609 2.238313,-3.29787 4.82707,-6.58128 7.884205,-10.07723 9.164962,-10.48049 5.398333,-18.72996 7.607227,-23.8996 l 0,0 c 0.892019,-2.08766 1.393614,-5.85479 1.381323,-10.20241 0.828611,1.8486 1.517032,3.53883 2.047672,5.2273 m -9.699302,36.77669 c 4.603746,-11.482 4.627625,-26.27519 5.435893,-46.53067 0.05664,-1.419336 0.133749,-2.744034 0.229265,-3.983892 4.949625,1.702557 13.142744,18.357042 19.734518,27.042612 5.723451,7.54143 13.210887,15.57509 22.896168,24.97972 0.869853,0.11964 1.749318,0.24528 2.638521,0.37717 M -63.340824,96.551676 c 9.076326,7.230744 16.407704,20.397504 28.771965,34.798714 6.793171,7.91231 10.499989,12.53996 13.891233,16.66358 4.71898,-0.85601 9.225434,-2.05148 15.0507023,-2.0496 8.1568815,0.003 13.6215383,-1.95023 17.7741467,-5.39312 m -51.122107,-3.6893 c 1.818369,1.55148 3.40945,3.31786 4.821281,5.24484 8.381438,-0.47875 14.48863,1.08005 20.492599,2.22242 7.359841,1.40035 23.808457,-2.46156 40.440601,-6.14886 0.0014,0.25668 0.0031,0.51372 0.0044,0.77162 0.0286,5.73148 -15.041929,16.85728 -28.5273545,24.93683 m -0.019506,-21.02726 c 7.1815617,-2.0269 16.6065126,-2.01433 26.6322346,-2.531 -0.985842,2.37918 -1.896347,4.69199 -2.804459,6.82436 l -10e-7,0 c -3.473585,8.15648 -12.479712,18.39212 -18.6572818,27.54537 l -1.4e-6,1e-5 c -1.71999,2.54849 -3.53247527,4.95734 -5.4305874,7.22317 M 12.50962,155.49298 c -4.8229707,6.7226 -11.57196561,17.39669 -16.0167009,25.0951 m 5.4802722,2.90647 c -0.6720657,1.48588 -1.4095459,2.95358 -2.20530612,4.41782 3.60565672,10.8337 4.59582922,21.51172 5.11539072,36.45686 0.5181822,14.90546 7.6822951,18.38677 14.7657901,23.76123 -0.863272,-0.96405 -1.728424,-1.88397 -2.619395,-2.71235 -0.824445,-0.76654 -1.783213,-1.45072 -2.854554,-2.06988 M 8.4113567,229.91465 c 1.9611433,3.88202 3.4630963,8.6923 4.5007273,13.62014 -6.4444282,-1.71336 -13.40714178,-3.29549 -20.8941898,-5.70246 -3.5691442,-1.14743 -6.5049452,-2.1082 -8.9806652,-2.94933 m 20.1853305,-1.84204 c -10.6843154,-3.51153 -25.6220095,-6.72574 -44.8773175,-10.8773 -1.960571,-0.42272 -3.698745,-0.79554 -5.241828,-1.1217 -10.25987,5.42583 -8.979078,13.61209 -8.580973,23.09148 m 28.508878,-22.30639 c -5.473548,-0.7606 -10.40882,-2.16445 -15.131647,-3.75619 -4.314277,3.58621 -8.349698,6.92581 -12.596265,10.70359 -7.955511,7.07729 -17.944554,14.31213 -28.058879,21.86218 l -3e-6,0 c -2.059366,1.53726 -3.941837,3.1533 -5.685639,4.86123 -0.212702,-7.19976 1.402668,-13.18818 3.016418,-17.33817 m 26.113978,2.73081 c -6.381035,4.99127 -19.394178,13.72677 -33.072871,20.92457 -0.123893,-0.23365 -0.248114,-0.46805 -0.372598,-0.70327 -4.27521,-8.07823 -2.335852,-14.50591 -0.849262,-18.96044 m 6.940385,6.92569 c -0.181629,-10.51399 1.371838,-21.69978 5.155113,-31.88295 1.483536,-3.99313 1.751093,-8.4015 1.546664,-13.05762 -3.911427,-2.78892 -8.340738,-5.84968 -12.432818,-8.98977 m 7.841708,12.17119 c 0.01164,-0.68115 0.01793,-1.35105 0.01916,-2.01043 -8.493272,-6.73025 -18.53984,-10.2359 -28.67797,-14.35902 -8.48789,-3.45197 -14.72638,-7.7327 -20.75536,-10.40218 2.53728,-0.22944 5.08906,-0.34739 7.6182,-0.30944 4.97501,0.0747 9.33406,-1.59019 13.42784,-4.17762 m -0.34658,10.14975 c -4.81989,-3.32714 -8.76341,-6.25194 -12.30356,-9.19363 6.59073,-2.72849 13.94298,-5.48886 20.82975,-9.3686 l 0,0 c 11.9025,-6.70541 16.567553,-5.02101 18.316945,-3.78006 0.277802,0.19706 1.004945,0.1411 2.076562,-0.108 -0.368506,-3.6222 1.708841,-8.61568 4.248075,-13.84733 m -18.151209,9.10118 c 6.70025,-3.11239 15.25927,-7.25064 22.019279,-12.48348 0.119038,-2.44376 0.148421,-4.94207 0.04745,-7.49569 -0.553407,-13.99679 3.581344,-18.15068 2.189258,-22.13163 l 0,0 c -0.273397,-0.78183 -0.136123,-2.11088 0.315283,-3.8335 m -2.584493,27.08875 c 3.086124,-10.66351 6.181314,-22.4909 10.056793,-35.18219 0.667176,-2.18485 1.317136,-4.24352 1.966171,-6.206054 6.39979,6.728244 12.778178,15.681074 20.948851,23.513644 4.609861,4.41911 7.146485,8.20406 8.553448,11.56126 M -65.293211,94.057027 c 6.949047,8.160843 14.233324,20.378873 22.500444,34.683813 0.0574,0.0993 0.114706,0.19815 0.171931,0.29651 m -8.655613,2.29913 c 3.599664,5.13544 8.69849,10.82328 15.029965,17.18859 6.601743,0.74924 13.899955,1.88127 21.781443,3.44921 18.3722146,3.65494 21.8984647,-0.59147 32.426168,0.1404 l 3e-6,0 c 3.246834,0.22572 6.492028,0.21339 9.684873,0.0811 -4.095788,5.48472 -8.38009,10.53762 -13.199434,15.96597 M 3.3084717,150.80536 c 12.7023913,-2.66795 19.4723603,-0.4446 25.2287963,0.54203 0.362233,0.0621 0.770524,0.10974 1.220877,0.14415 -9.550884,9.69644 -9.768329,16.45372 -13.866129,24.18292 -3.118703,5.88244 -7.1616606,11.99418 -10.0709994,17.32982 M 17.842853,136.81654 c -5.287206,9.63466 -12.5874362,18.45678 -18.9947125,27.93592 -0.7805403,1.15476 -1.5055903,2.31011 -2.1757483,3.46762 m 6.8424027,9.72294 c -1.8916236,4.92043 -4.32682459,9.05551 -6.7863189,12.91546 2.62580317,5.53166 5.2128649,10.62457 8.8069595,16.30632 l 1.7e-6,10e-6 c 6.4420928,10.18403 10.5479938,20.03487 19.5775788,28.96911 l 3e-6,1e-5 c 1.620723,1.60361 2.879858,3.4234 3.864367,5.43497 -0.381812,-0.0941 -0.778313,-0.1779 -1.188428,-0.25176 M 18.25793,219.62613 c 3.289402,8.81061 6.052424,16.69792 8.48085,24.68759 -2.364424,-0.69951 -4.750637,-1.39237 -7.155452,-2.06151 l -4e-6,0 C 7.7511934,238.95989 -4.3213605,235.70435 -20.056729,231.94205 l -4e-6,0 c -8.405107,-2.00964 -13.0228,-4.11144 -16.178992,-6.59122 -0.279042,0.39763 -0.531237,0.78831 -0.762375,1.17134 m 44.2954296,20.03162 c -11.4972947,-3.66244 -20.2114216,-5.14983 -28.5086156,-6.02951 -2.372438,-0.25154 -5.083966,-1.09533 -7.965644,-2.37447 m 5.03776,-6.23506 c -3.157707,-0.6924 -6.788243,-1.66172 -10.687932,-2.76506 -5.983256,4.53925 -12.915728,8.60581 -19.448473,13.14599 -3.601933,2.50329 -6.967864,5.07185 -10.294611,7.69424 m 6.455897,-1.21842 c -8.316631,7.18661 -17.864123,12.65526 -29.811442,18.37108 -0.473919,-1.13184 -0.974853,-2.2609 -1.504198,-3.38483 -0.310007,-0.65823 -0.579634,-1.31334 -0.811614,-1.96571 m 9.022403,0.69324 c -0.715834,-11.04688 -3.150218,-24.02397 -8.531907,-38.72622 -3.405824,-9.30438 -3.302,-15.63197 -3.525434,-21.69514 -3.437188,-1.65222 -6.984699,-3.21531 -11.393549,-5.22017 -2.45563,-1.11666 -4.55857,-2.16531 -6.37775,-3.13232 m 22.847527,22.21992 c -0.381866,-3.00289 -0.554791,-5.74469 -0.575118,-8.26849 -6.815737,-3.77288 -12.252029,-5.57514 -17.840229,-6.57839 -7.35381,-1.32024 -19.01498,-13.99224 -29.60136,-24.44287 0.11605,-0.10636 0.23229,-0.21234 0.34872,-0.31793 8.20996,-7.44524 16.83326,-5.74328 22.84029,-4.83427 m -4.12724,21.8912 c -8.4535,-3.21198 -15.11373,-9.92976 -22.48188,-18.06596 2.52556,-2.20741 4.9681,-4.58117 7.22716,-7.03744 l 0,0 c 8.85833,-9.63166 20.89738,-5.96571 31.32007,-6.63163 4.013419,-0.25642 7.816919,-1.4251 11.408492,-2.97402 m -33.851962,12.78407 c 11.4636,-4.66109 23.68359,-8.66338 39.750372,-14.72586 1.756205,-0.66267 3.343044,-1.27854 4.782536,-1.85673 4.94721,-10.94063 0.104007,-19.3772 -2.604941,-30.2446 -2.574966,-10.32991 4.741907,-17.21194 11.237522,-23.28655 1.596012,1.69546 3.170452,3.41212 4.677712,5.13875 m -23.198268,44.3629 c 2.574966,-12.20046 8.441317,-21.50892 16.843972,-32.27221 5.372997,-6.88248 5.650344,-13.85173 5.214947,-20.930744 1.182482,3.050614 2.137973,6.066274 3.654201,9.042844 2.376925,4.66623 6.846971,9.64447 12.01024,14.64528 m -11.68237,-20.20439 c 0.935569,-2.724515 1.567794,-5.645123 1.92335,-8.649645 3.645627,6.573734 5.700329,12.664935 6.531927,19.820445 l 2e-6,0 c 1.178745,10.14254 14.413116,20.36238 22.848885,34.74819 0.269125,0.45895 0.536034,0.9045 0.800886,1.33719 6.30876,2.08146 12.110573,0.99471 18.017129,-1.16088 m -28.678623,-25.37428 c 4.613538,5.66844 10.462762,11.40616 17.557729,16.76608 4.702552,-0.48809 9.679656,-1.05943 14.9323512,-1.7603 15.4941504,-2.06738 19.3157598,-2.75902 24.9718428,-6.11119 m -23.7300132,8.59381 c 10.5016393,-2.68646 21.3925182,0.33501 30.9909352,2.76626 0.520462,0.13183 1.055861,0.2435 1.60549,0.33645 -6.225658,9.94069 -8.842332,15.13432 -10.707874,21.43483 m 8.17854,-16.20482 c -5.45896,6.93988 -14.1149523,19.54145 -23.4429958,31.01804 -4.0271974,4.95478 -6.6821649,9.20055 -8.711434,13.28442 0.3305479,0.63122 0.6729172,1.25938 1.0251691,1.88591 m 9.51204505,-19.87301 c -1.41822086,1.33422 -2.80179435,2.82909 -4.17477225,4.43688 2.52806868,7.7053 5.243121,17.40342 6.3621372,25.55659 1.2886881,9.3894 8.4736447,22.92703 15.2585307,39.94707 -0.517651,0.33846 -1.037575,0.69671 -1.562466,1.07444 -6.263017,4.5072 -19.2677535,-4.31653 -33.409959,-11.58065 m 11.5306446,2.87888 c -8.6286546,-3.92765 -21.7141356,-7.09088 -34.0990756,-11.99426 -0.255595,0.12274 -0.510765,0.24443 -0.765433,0.36502 -7.117264,3.37026 -12.230973,8.11244 -17.139111,12.41742 m 6.705915,2.49116 c -6.995199,9.08678 -16.703211,11.72139 -24.17446,14.09775 -3.067446,0.97565 -6.44308,3.57093 -9.89674,6.82983 -0.04271,-3.1598 -0.129984,-5.94063 -0.162487,-8.75506 m 11.256787,10.6843 c -0.700446,0.865 -1.420222,1.66668 -2.156824,2.41051 0.325308,-9.18608 -0.947598,-23.86737 -1.500404,-38.9882 -0.319328,-8.73454 -0.390554,-14.32448 -0.312962,-19.15386 m -11.057159,14.3777 c -0.337297,-7.10526 -1.376245,-14.56676 -3.256615,-23.07995 -5.163682,-4.05928 -10.773951,-8.67676 -16.884861,-14.12133 l 0,-1e-5 c -14.50325,-12.92182 -15.26011,-7.45307 -17.75054,-4.37367 l 0,0 c -0.65254,0.80687 -2.3475,0.0611 -4.71611,-1.74589 m 23.35299,5.31236 c -9.71597,-4.36297 -18.62137,-9.76549 -29.26847,-12.87361 0.55191,-0.0695 1.09519,-0.12768 1.62897,-0.17332 l 0,0 c 8.12211,-0.69443 24.16537,-6.26014 41.186473,-7.43006 2.644708,-0.18178 4.986382,-0.49878 7.098634,-0.92194 m -37.387337,7.8965 c 11.04507,-4.88847 22.15055,-7.98862 35.017154,-12.72957 3.724703,-1.37243 6.757687,-2.45022 9.272578,-3.30646 0.760993,-7.07072 -1.60168,-12.80569 -4.517632,-18.28705 -2.690949,-5.0584 2.107922,-12.72744 8.543518,-20.44928 m -6.827914,40.89169 c 2.990046,-10.83314 4.232596,-20.468 4.296722,-29.30781 0.02202,-3.03535 1.109494,-6.35323 2.931108,-9.72481 m 2.972049,1.81225 c 1.123691,-4.57592 3.654344,-10.71338 7.289896,-17.44815 5.08291,3.20444 11.034213,5.93944 17.643439,8.87682 1.713329,0.76147 3.171399,1.60002 4.413552,2.50164 m -6.415899,3.92809 c 7.080157,8.08344 11.293139,17.92404 13.489387,27.49794 0.476938,2.07908 1.428271,3.92607 2.713133,5.56523 7.996161,-1.45334 20.329927,-5.60963 30.3946494,-11.33192 5.2666249,-2.99433 10.3519557,-3.47781 15.6173386,-2.83473 m -29.851442,4.80021 c 10.8627983,-1.58527 22.2301786,0.74551 33.499986,3.90589 1.002996,0.28127 1.976816,0.48803 2.921879,0.62824 m -2.978202,-5.32062 c 5.050282,0.95133 10.755799,0.80898 16.133506,0.79052 -3.406884,4.35437 -7.026153,8.78901 -11.370465,13.93886 -3.744639,4.43899 -6.41432,8.50245 -8.60282,12.5921 m 13.146766,-13.35115 c -7.77394,9.99623 -12.757809,19.97278 -19.3346599,32.55512 -0.153595,0.29385 -0.3084425,0.58415 -0.464553,0.87103 m -13.8358934,-1.15703 c -0.7743316,0.81708 -1.5010357,1.70818 -2.1831427,2.66553 3.69533,8.66561 10.21560712,21.52852 18.033335,34.68441 4.899108,8.24436 5.952082,13.01802 5.650282,16.64262 m 4.055104,-16.94977 c 2.614116,6.85538 4.891456,13.39603 7.081102,20.47078 -4.540462,-0.5688 -9.125162,-0.86818 -13.664856,-0.594 -4.2917018,0.2592 -8.7792877,-1.02257 -13.5040615,-3.16367 m -23.5328375,-9.14144 c -5.74216,-2.40391 -12.065745,-3.00675 -18.685476,-2.44075 -4.190339,4.83487 -8.55524,10.3587 -12.965598,16.28538 -10.157906,13.6503 -13.814743,9.68433 -15.569038,8.06062 l 0,0 c -0.531934,-0.49234 -2.339566,0.68332 -4.850266,2.80264 -0.0018,-5.84534 -2.109808,-8.86369 -3.354896,-12.81069 m 21.670363,-7.50558 c -10.827989,7.11478 -14.102667,15.26068 -16.414757,24.65031 -0.0762,0.30945 -0.168512,0.61137 -0.276265,0.90601 4.181838,-7.67197 -1.560914,-20.02181 -6.241111,-32.84727 m 0.158062,29.53225 c -1.777742,-9.92861 -1.348173,-26.80692 -2.884857,-47.28192 -0.1872,-2.49428 -0.319448,-4.70494 -0.402992,-6.68284 m -3.439369,19.0236 c -0.08841,-3.9913 -0.260545,-8.19725 -0.503613,-12.57711 -6.103167,-4.30109 -12.415033,-9.11388 -18.871003,-14.2328 -7.45051,-5.90749 -12.98032,-10.54756 -17.66479,-16.34499 m 14.85823,5.55428 c -9.22335,-4.38903 -15.498,-8.0058 -22.31743,-10.20437 2.37472,-0.11237 4.70927,-0.12018 6.93374,-0.0105 l 0,0 c 10.42029,0.51373 20.11409,-6.44462 28.981789,-8.00037 3.269159,-0.57354 7.324416,-1.92685 11.929899,-3.73027 m -33.330398,2.37795 c 9.31673,-4.66075 20.490175,-8.09762 30.171057,-13.07196 1.444483,-0.74222 2.966953,-1.39678 4.559726,-1.97574 2.602526,-9.25113 7.492391,-16.04283 13.243743,-22.61621 3.601017,-4.11571 5.598976,-11.12899 7.778203,-19.6653 m -24.146271,31.19607 c 3.647509,-10.90158 7.071181,-18.26345 12.823169,-23.11679 m -1.576415,-0.41946 c 2.412919,-5.15777 4.666345,-10.29202 7.505096,-14.38549 3.536075,4.94271 7.351454,10.38205 11.691648,16.65334 m -1.036027,-14.88742 c 7.025637,8.63436 15.338423,18.65271 25.580063,29.66464 0.99553,1.07041 1.886076,2.08277 2.680983,3.04329 m -10.132553,-1.81327 c 2.153704,3.48492 4.496811,6.77027 7.008993,10.05271 8.115967,0.46977 16.961275,0.92697 26.3537963,3.13339 9.459283,2.22211 15.5614728,0.58933 20.9692787,-1.23735 M 3.3644827,136.25858 c 10.0642933,-1.19919 17.7636023,1.19249 25.9481583,5.89521 -1.587342,3.88796 -3.124755,8.01371 -4.518166,12.33501 l -10e-7,0 c -5.739084,17.79826 -12.561242,17.14537 -18.9424395,23.89537 -3.1561712,3.33858 -6.8827461,7.57718 -11.2267941,11.82832 0.6927139,4.54131 0.8404125,9.09368 0.4040633,12.92119 M 10.571162,153.42487 c -4.6964299,7.30086 -8.6892287,20.09254 -7.2468059,32.72864 0.3887639,3.4057 -0.4132795,6.11207 -1.9556716,8.32193 m 8.1436267,-16.62069 c -0.8379307,1.18022 -1.6890717,2.42324 -2.5505458,3.72243 3.2212876,8.07336 6.1287606,17.85223 9.2039786,28.224 m -21.0924115,8.85376 c 4.17538964,9.91608 10.733243,19.80917 20.4305065,29.38571 -0.15634,-0.11985 -0.308868,-0.24007 -0.457552,-0.3607 -0.248045,-0.20123 -0.533359,-0.39973 -0.852641,-0.59573 m 6.750449,-1.24636 c -12.7713812,-3.62592 -24.0447429,-7.56389 -40.255906,-13.32955 -10.488273,-3.73025 -16.734292,-4.78753 -23.220606,-5.35551 m 13.915776,-5.2507 c -5.695285,-1.17308 -11.180327,-2.47795 -16.890809,-3.73391 -5.305679,3.94498 -10.893665,7.95121 -17.374487,12.2719 -3.106228,2.07089 -5.625962,4.15793 -7.738538,6.31799 m 11.8455,-0.12745 c -8.268407,8.44302 -19.071856,14.43046 -31.359251,22.19677 -0.08531,0.0539 -0.170312,0.10769 -0.255016,0.16132 m 1.837822,1.34734 c -0.894457,0.55467 -1.754626,1.13506 -2.579699,1.73452 0.486937,-11.17122 3.431238,-21.00697 9.30526,-33.40091 1.448614,-3.05651 2.067583,-5.77653 2.078159,-8.24905 m -6.543854,6.325 c -1.728055,-7.82076 -2.501294,-15.22589 -4.792682,-21.65607 -3.19926,-0.96479 -6.594005,-1.80404 -10.298504,-2.49191 -1.82402,-0.33869 -3.42066,-0.75076 -4.821,-1.21367 m 7.780941,-1.99658 c -7.079111,-6.81701 -22.085201,-14.00845 -38.332441,-24.04331 -6.79091,-4.19431 -10.63944,-6.88691 -13.0635,-8.95615 8.14807,-1.56141 19.0611,-1.91285 28.6342,-3.42962 4.17382,-0.66131 7.49415,-1.30947 10.25571,-1.88943 m -17.57757,10.60147 c -0.34849,-0.28588 -0.69735,-0.56433 -1.04665,-0.83562 9.10113,-4.90692 17.9082,-5.07953 25.17968,-5.3089 m -13.23165,-0.10884 c 9.94786,-3.28274 19.664692,-7.01305 31.605823,-11.47203 1.081197,-2.00381 2.246396,-4.03514 3.513614,-6.09605 l 1e-6,-1e-5 c 7.790431,-12.66978 6.357187,-20.18546 10.458788,-28.23396 l 10e-7,-1e-5 c 0.469069,-0.92044 0.870697,-1.92577 1.210419,-3.0038 m -5.39563,15.29803 c 0.902556,-9.76981 5.10218,-19.90105 6.865009,-27.42674 0.342069,-1.46033 0.655735,-3.13879 0.917821,-4.964663 1.097591,2.091403 2.136619,4.015433 3.089047,5.857623 m -0.500025,-16.771369 c 4.898908,7.45832 14.080118,20.057589 21.931978,33.828979 5.743059,10.07276 9.708771,13.84229 13.131205,17.14566 2.412568,-1.31415 4.751721,-2.69129 7.078763,-3.84147 2.907551,-1.43711 6.284507,-1.94318 9.85056,-1.93441 m -15.251349,-0.33163 c 3.166224,3.93032 5.467441,7.47382 7.18694,10.93263 5.922328,0.24773 9.897368,0.21191 13.6601591,1.74284 0.8521788,0.34672 2.0021755,0.49254 3.4006711,0.46572 M -8.25677,137.20568 c 11.3199389,1.05276 24.857009,-0.0218 41.369887,1.85039 0.42101,0.0477 0.834926,0.0932 1.242016,0.13641 -1.344176,11.20396 -12.66717,19.21588 -18.97178,30.8799 -4.773202,8.83079 -10.121888,13.61871 -16.30296395,17.70926 M 26.822109,146.28382 c -6.08319,8.06054 -10.489615,20.7437 -12.606495,34.66703 -0.979507,6.4425 -4.131432,10.01942 -8.2347539,12.12972 0.1548632,0.6336 0.2555513,1.18368 0.3186555,1.66926 m -9.1264618,-13.14299 c -0.8686724,1.41205 -1.7625814,3.00283 -2.6450144,4.73388 4.58391372,8.24022 9.3712779,18.96717 17.1025086,29.30969 8.896153,11.9009 8.817794,21.6855 13.149996,35.18649 -0.705943,0.074 -1.386559,0.16937 -2.036024,0.2886 -8.315338,1.52658 -22.20063847,-6.27223 -38.427186,-12.80035 m 21.4699898,-8.5105 c 2.1845154,8.29118 4.0757292,14.59002 4.9088942,20.58167 -4.2115957,-1.48588 -8.6423361,-3.03538 -13.3643078,-4.48966 -2.3347292,-0.71906 -4.4083473,-1.40646 -6.2706565,-2.07882 m 14.9512245,1.09373 c -8.8982477,-4.21263 -22.6744612,-4.66386 -36.0961132,-4.66027 -4.75668,0.001 -8.399141,-1.14126 -11.294531,-3.01328 -3.950285,3.13233 -5.419198,3.84169 -6.629209,4.63609 -1.782273,1.17011 -16.821005,14.65971 -27.723491,25.56321 m 48.514905,-44.8727 c -2.950044,-1.07369 -5.64658,-2.02896 -8.143335,-2.92172 -5.980779,4.9171 -10.147892,10.40154 -13.970984,14.92326 -3.837551,4.53882 -11.9407,9.31913 -19.816042,13.02543 m 9.922296,-8.66828 c -4.185848,4.03797 -12.054014,10.12297 -21.616993,17.4373 -2.10072,-2.39222 -4.647577,-4.46083 -7.372143,-6.31627 l 0,0 c -8.037333,-5.47345 3.116917,-23.62913 10.287761,-37.48148 0.761253,-1.47055 1.337904,-2.86925 1.756826,-4.20583 m -14.330251,26.67145 c 1.146477,-10.81819 0.32333,-22.51683 2.074229,-34.33502 0.03167,-0.21379 0.06242,-0.42714 0.09226,-0.64006 -7.220516,-6.56688 -17.079506,-11.86724 -23.684776,-17.98218 -1.3763,-1.27414 -2.98393,-2.5608 -4.75533,-3.86552 m 23.602214,13.15717 c -6.584106,-4.81232 -15.947084,-10.62957 -23.461314,-15.65199 m 4.57124,15.0754 c -4.12439,-3.73739 -8.72598,-7.20885 -13.65163,-11.01814 4.92556,-3.14728 9.42693,-6.73675 13.73343,-11.67259 l 1e-5,0 c 8.07302,-9.25277 19.536993,-6.81799 27.156784,-9.141 1.554089,-0.47378 3.353241,-1.01205 5.325582,-1.57829 0.758566,-3.61204 2.08644,-7.31602 3.555252,-10.89435 m -26.893538,24.76913 c 7.563844,-3.80112 18.19877,-8.67036 28.735293,-15.9594 0.642938,-2.14998 1.283307,-4.36313 1.907738,-6.64516 3.051677,-11.15256 3.025649,-17.10391 1.492056,-23.17436 m -1.562858,13.12221 c 5.212589,-11.74605 6.999845,-23.4449 12.50722,-38.0898 1.613862,-4.291496 2.481635,-8.054278 2.803925,-11.581621 3.577042,5.29541 3.976478,11.962331 4.01879,15.877451 0.04513,4.17622 8.466289,12.55915 16.575448,20.96468 M -62.625136,90.012978 c 6.777153,7.932701 12.470992,19.779652 17.082629,32.973082 3.391263,9.70207 9.26539,14.6344 15.046459,20.03831 3.220263,-0.54453 6.428448,-1.02785 9.504106,-1.20488 9.234781,-0.53154 17.9669363,-0.11415 27.014163,1.18586 m -42.102292,-11.15602 c 2.177227,4.09306 5.124896,7.42769 8.283327,10.07459 5.311601,-1.68097 10.851407,-4.10658 15.988846,-7.19719 m 1.730498,-2.24621 c 9.76195774,0.69252 22.415763,0.67309 34.014258,3.78978 3.163932,0.8502 6.375161,1.05344 9.665863,0.8365 -3.843135,6.54918 -7.121009,10.10986 -9.223284,14.98399 -1.610991,3.73509 -5.992993,9.32559 -11.406605,15.49043 m 23.939434,-28.62366 c -8.11699,10.28167 -15.051454,21.15591 -26.463257,35.86268 -7.5759173,9.76334 -9.69114427,14.4791 -10.87738975,19.01462 2.85418175,2.69469 5.94694875,5.34309 8.68848495,8.5787 2.8044438,3.30985 4.6266428,6.54917 5.9729278,9.62562 m -17.1138208,-24.7123 c -2.4772701,3.19525 -4.5200778,6.00403 -6.2955258,8.5696 2.906442,7.22951 7.4710689,12.95063 11.1128747,19.37626 0.4542617,0.8015 0.8849172,1.62276 1.2943994,2.46084 m 6.586961,4.16604 c 3.1601745,11.67276 5.9512175,19.64256 5.9446625,28.06773 -0.08627,-0.0294 -0.172641,-0.0587 -0.259109,-0.088 C 8.1551126,247.3886 3.6149351,245.37512 0.38263308,243.15063 m 9.92812192,-6.44487 c -9.65937184,-2.80839 -25.755392,-5.38101 -45.163398,-6.71466 -9.496021,-0.65253 -14.405634,-2.35884 -17.800399,-4.50437 -2.213122,2.60381 -3.127188,4.83096 -5.181394,7.16948 m 70.242718,12.24621 c -12.69498262,-2.26044 -23.2586,-9.60251 -37.860662,-19.43312 -5.040932,-3.39373 -9.201923,-4.9062 -12.964358,-5.3658 -4.265703,4.24428 -7.753555,10.54343 -11.776067,16.63884 m 6.635836,-14.38676 c -0.01434,-0.008 -0.02868,-0.0165 -0.04304,-0.0247 -6.277106,5.34723 -16.623716,13.08569 -24.085641,18.35082 -2.995978,2.11396 -6.204151,5.10441 -9.408625,8.63251 m 7.220137,12.53598 c -4.999964,3.05613 -10.229407,5.68134 -16.013949,7.24156 -1.131822,-7.01844 -2.669374,-14.81529 -4.816131,-23.78678 l 0,-1e-5 c -4.659171,-19.4711 0.210925,-22.64801 1.56198,-34.62991 0.373755,-3.31466 0.50489,-6.37493 0.500967,-9.23488 -2.235403,-1.30199 -4.579243,-2.44315 -6.954137,-3.46239 m 6.397179,34.58649 c 1.024479,-10.52065 1.1155,-22.09698 3.670882,-35.4434 -0.475155,-0.71355 -0.93354,-1.43915 -1.373246,-2.17719 -5.771594,-9.68758 -21.867213,-9.89219 -37.654433,-11.61664 l -1e-5,0 c -10.43872,-1.14023 -13.7416,-7.171 -15.50346,-14.3756 1.59326,-0.80216 3.217,-1.62754 4.85566,-2.4658 m 27.83761,24.77376 c -9.35375,-4.70907 -16.7526,-12.44236 -22.24758,-19.19755 -2.01186,-2.47326 -4.94787,-4.82372 -8.24378,-7.16172 6.84253,-2.61054 12.60523,-5.18372 20.22022,-8.29296 10.537,-4.3023 17.963018,-5.61644 25.396327,-6.23531 m -44.879637,32.06363 c -1.24614,-0.56191 -2.41382,-1.14865 -3.51,-1.75529 9.00493,-2.7118 22.34362,-6.629 36.73234,-9.41293 6.90763,-1.3365 11.090227,-3.24173 13.882823,-5.57346 m -14.530573,-0.52724 c 5.842144,-3.65233 12.287949,-6.51359 18.297125,-10.10386 0.637162,-4.53368 1.136331,-9.29776 1.312677,-14.56232 0.490179,-14.63357 9.933612,-21.9328 21.294724,-33.65194 l 3e-6,-1e-5 c 4.290398,-4.4256 6.019517,-8.201499 6.567974,-11.48817 1.416257,2.833693 2.265416,5.90237 3.007068,9.15261 m -26.000937,23.41614 c 3.12463,-11.85827 7.086872,-20.64005 12.737226,-29.763143 0.281815,-0.45502 0.550397,-0.919177 0.806786,-1.391877 8.647284,9.54873 12.867062,15.99555 19.853042,23.46636 3.253427,3.47922 6.423875,7.36011 9.655451,11.39939 m -18.960565,-19.04165 c 5.278368,9.52462 13.783469,15.50154 20.962104,20.13962 3.024261,1.95396 5.544428,5.26237 7.647428,8.99456 5.376489,-0.31549 9.964967,0.16953 13.991119,-0.96109 2.107771,-0.5919 5.2274882,-0.50535 9.0147885,0.1463 m -19.4531595,6.98918 c 0.266389,0.4578 0.531898,0.90544 0.796458,1.3434 10.300871,1.218 20.0835962,-2.84891 28.4680394,-5.97828 6.8105026,-2.54192 15.1111616,-0.94088 21.5962066,1.05392 -1.992328,2.72956 -4.130629,5.49078 -6.490263,8.19819 M 20.239781,138.2955 c 5.227324,-0.22096 9.976981,-0.51962 14.613351,-0.87031 -3.532971,5.29737 -7.306037,10.48445 -10.194957,15.64041 -1.753346,3.12926 -3.994665,6.51539 -6.536328,10.08643 m 1.154989,-3.18531 c -7.694404,6.88898 -13.3372561,17.08272 -21.6896338,25.20696 0.058071,0.3477 0.1123208,0.69249 0.162498,1.03406 0.8287107,5.64141 4.0704246,12.25129 8.0319449,19.26597 m -6.7660137,-7.07354 c 2.9158308,10.30014 10.5348948,21.44377 19.5749596,33.29422 3.817462,5.00424 5.385584,9.51289 5.835086,13.85924 -7.868887,-1.83621 -17.833611,-3.97648 -26.9943649,-5.56604 -5.4543394,-0.94643 -9.5996011,-2.04079 -13.0672401,-3.24205 m 20.4740382,0.44803 c -10.0748393,-2.94219 -22.1946392,-6.92243 -34.4981782,-11.44813 -3.526308,-1.29711 -6.864182,-2.54144 -10.128192,-3.83557 -0.60645,0.36489 -1.209104,0.72723 -1.809298,1.0858 m 11.948378,7.14298 c -1.302004,-0.14315 -2.596994,-0.34705 -3.889798,-0.6048 -8.710318,6.9235 -17.275412,10.26839 -28.312292,13.77716 -6.69475,2.12835 -11.511068,5.65712 -16.216707,9.14445 m 6.777952,1.00809 c -3.926673,3.04754 -9.186394,7.91919 -14.586567,13.47302 -0.37143,-3.5738 -0.811553,-6.81394 -0.912444,-10.11103 -0.04395,-1.43616 0.0036,-3.0613 0.143403,-4.82129 m 5.90419,-5.38943 c 1.865459,-13.28518 -3.564859,-21.41828 -9.78892,-30.91092 -1.500568,-2.2886 -2.215543,-4.78356 -2.39285,-7.41531 -2.913344,-1.74496 -4.998524,-3.7006 -6.729479,-5.73388 m 2.892071,-4.40925 c -8.255299,-7.27318 -15.131919,-11.51561 -17.775499,-16.79877 m 0.38364,9.56253 c -7.47892,-4.04594 -12.8931,-9.32718 -16.83727,-14.93201 3.49168,-1.21797 7.12836,-2.46785 10.89163,-3.72141 8.11963,-2.70469 12.99977,-4.53579 16.81941,-6.11226 m -15.29856,-6.50415 c 12.84745,-4.07202 20.636115,-7.60652 30.453034,-11.64671 1.437566,-0.59164 2.854431,-1.13381 4.244408,-1.62869 m -8.290546,7.76431 c 2.061739,-0.79411 4.120251,-1.62221 6.189715,-2.49461 2.97188,-9.57823 6.15967,-20.02954 10.804516,-32.25438 5.245589,-13.80595 4.922967,-17.43997 5.765393,-20.901838 0.382721,1.238779 0.773905,2.478808 1.17772,3.713898 1.937739,5.92667 4.550059,9.9443 7.566256,13.16432 m -17.807282,5.28915 c 0.785222,-6.58448 2.472458,-12.1683 4.365285,-17.38549 3.356531,4.52312 6.853635,9.29693 10.097564,13.96294 l 2e-6,1e-5 c 7.169116,10.31194 13.203183,17.91363 19.255916,27.33412 1.724494,2.68401 3.699323,5.27176 5.87176,7.80692 0.802711,-0.0342 1.616462,-0.0714 2.440556,-0.111 m -16.218494,-45.69007 c 7.434217,9.96853 11.688962,19.81349 15.96012,34.36407 0.821875,0.60399 1.643916,1.25557 2.469373,1.95965 1.693496,1.44448 3.529742,2.2044 5.468734,2.44429 m 9.014267,-0.15915 c 12.7790564,-0.76852 20.70280145,1.62626 28.8787271,6.75672 4.5497969,2.85504 12.1232789,1.56032 21.1929669,-0.93029 -0.146387,0.74358 -0.198449,1.41178 -0.180363,2.05134 m -11.43075,-16.52475 c 2.194865,0.44071 4.580055,0.58163 7.05918,0.52957 -5.477705,7.22858 -10.071985,12.64222 -16.562982,19.32162 -7.6172035,7.83829 -10.424626,18.96737 -13.3382508,32.74538 M 13.494004,169.04924 c -4.1016706,6.17973 -7.8475148,11.85823 -11.4410015,17.54191 1.6908141,3.78901 3.4346248,7.57982 5.1896901,11.47634 l 4e-7,0 c 4.732267,10.50636 7.724836,21.54914 11.136957,33.53162 l 10e-7,0 c 0.530169,1.86182 1.043911,3.64862 1.534292,5.37839 m -5.661505,-28.097 c 2.940877,8.51064 4.167593,18.1228 0.859931,23.89635 -0.284276,-0.11982 -0.569713,-0.24062 -0.856325,-0.36243 -8.1849238,-3.47859 -13.36857202,-5.26364 -17.6078828,-6.62334 M -69.919832,91.933581 -24.395704,150.77813 m 25.7379392,53.55286 4.5326673,11.69115 M 21.190948,149.29777 2.8316912,176.23844 M 0.85112605,192.50989 -137.79624,305.55308 M -92.813017,199.90968 -65.892012,98.080051 M -6.6582575,141.86867 40.081645,139.26259 M 22.700281,147.08295 3.8702733,174.7144 m 10.0670227,62.10315 0.604356,1.55882 m -97.841468,67.03995 -4.760744,-157.92044 m 64.214118,97.09336 -125.764108,-81.07631 m 71.868383,-20.60926 22.220512,-84.049852" + id="path14" + inkscape:path-effect="#path-effect17" + inkscape:original-d="m 15.874998,241.81548 -55.593044,-16.22838 -44.885096,36.59611 -1.745088,-57.88698 -48.67522,-31.37944 54.514519,-19.54774 14.802156,-55.989665 35.436915,45.805805 57.823455,-3.22407 -32.6133019,47.85728 z" /> + <g + id="g27" + inkscape:path-effect="#path-effect29"> + <path + id="path19" + d="m 236.33596,171.17542 c -0.6567,13.14606 -5.81143,25.77835 -14.22862,35.49575 -9.69756,11.19557 -22.98661,17.70725 -36.82329,17.96505 m 45.89353,-48.39729 c -2.72815,7.59072 -6.64222,14.55553 -11.55214,20.43208 -9.44034,11.2989 -21.94158,17.82466 -34.90775,18.08671 -2.10175,0.0425 -4.19709,-0.0807 -6.27239,-0.36867 m 38.32497,-14.06585 c -0.74318,0.90369 -1.50623,1.78181 -2.28847,2.63305 -10.11011,11.00195 -23.02148,17.0454 -36.35121,16.57863 -9.60562,-0.33636 -18.91356,-4.05438 -26.84705,-10.85227 m 57.6434,4.9149 c -7.09721,5.13533 -15.30985,7.84524 -23.7155,7.97235 -13.30108,0.20115 -26.25936,-6.06156 -35.68369,-17.14378 -5.70887,-6.71314 -9.89051,-14.93387 -12.05248,-23.85177 m 60.95597,28.09842 c -6.66466,3.14091 -13.63491,4.72042 -20.53548,4.59831 -13.24581,-0.2344 -25.447,-6.74229 -33.62854,-18.34387 -3.97008,-5.62965 -6.87537,-12.2975 -8.52366,-19.68881 m 54.75286,42.31774 c -2.82563,0.60916 -5.65667,0.92289 -8.46605,0.94075 -13.66241,0.0869 -26.29778,-6.82051 -34.91977,-19.30405 -5.06685,-7.33616 -8.56904,-16.34052 -10.20213,-26.37648 m 31.67102,44.05008 c -10.35243,-2.24638 -19.58267,-8.05774 -26.46776,-16.68461 -8.4893,-10.6369 -12.86901,-24.8659 -12.26256,-40.03152 m 29.17669,44.17955 c -3.35041,-2.51652 -6.48256,-5.46342 -9.33356,-8.77935 -9.57595,-11.13753 -15.47139,-25.84022 -16.40875,-40.70715 -0.22258,-3.53024 -0.16255,-7.02814 0.17935,-10.44536 m 8.29332,48.53349 c -6.29983,-10.17335 -9.86432,-22.9568 -10.03976,-36.38621 -0.21511,-16.46638 4.67503,-32.63634 13.79795,-44.98527 1.69996,-2.30109 3.53074,-4.44742 5.47836,-6.42284 m -10.76633,76.90872 c -4.59103,-8.60513 -6.87046,-18.54988 -6.64896,-28.70601 0.33811,-15.50356 6.47098,-30.43379 16.93657,-40.9797 3.43637,-3.46275 7.28344,-6.395 11.44388,-8.70272 m -26.74438,75.20643 c -2.01134,-6.94777 -3.0249,-14.42431 -2.92757,-22.01348 0.20458,-15.95209 5.29806,-31.40222 14.65181,-42.91556 2.93854,-3.61698 6.24472,-6.77864 9.85273,-9.41172 m -29.49862,54.5659 c -0.16954,-2.55127 -0.21244,-5.13967 -0.12553,-7.7467 0.52478,-15.74326 5.74575,-31.34556 15.06522,-43.21354 8.05978,-10.263807 18.6055,-16.987765 30.08164,-19.100475 M 125.4501,155.52732 c 0.8209,-15.43052 6.47296,-29.57508 16.21707,-39.35962 9.2345,-9.27281 21.54839,-13.99547 34.75466,-12.78573 m -42.87738,38.07024 c 1.83704,-10.01037 6.19053,-19.17945 12.43082,-26.32604 9.14612,-10.47443 21.76697,-15.941188 34.63725,-14.55761 0.27145,0.0292 0.54278,0.0614 0.81395,0.0967 m -41.24639,21.15445 c 1.95143,-3.58908 4.17966,-6.9063 6.65212,-9.90646 9.47288,-11.49471 22.09002,-17.792406 35.04824,-17.707234 8.1611,0.05364 16.10696,2.645685 23.03913,7.505034 m -56.52213,9.4893 c 8.97678,-8.72162 20.73769,-13.480172 33.0887,-13.22949 13.94404,0.283012 27.61333,6.91192 38.17698,18.76219 3.18993,3.57846 6.04915,7.5805 8.5213,11.93369 m -71.14223,-21.28614 c 8.31061,-5.75256 17.71296,-9.007603 27.30209,-9.349934 13.58339,-0.484928 26.45801,4.917344 35.97866,14.741894 5.59467,5.77326 9.7989,12.83911 12.31943,20.55608 m -74.89243,-32.48386 c 7.6252,-4.772778 16.23717,-7.172549 25.02201,-6.891939 13.66295,0.436427 26.85981,7.318229 36.77164,19.547529 6.54708,8.07783 11.38668,18.15066 14.08851,29.40448 M 158.85594,98.43824 c 7.23259,-4.245274 15.31819,-6.513662 23.62434,-6.604015 13.95569,-0.151812 27.55146,5.835472 38.24869,16.550535 3.85728,3.86371 7.25891,8.26331 10.12747,13.05746 m -66.34153,-21.05937 c 3.30372,-0.800033 6.65594,-1.23075 10.01615,-1.290038 13.99646,-0.246956 27.39409,5.940618 37.74396,16.985528 8.77856,9.36807 14.79333,21.60757 17.52397,34.58218 M 178.93261,98.127084 c 0.30248,-0.0097 0.60491,-0.01629 0.90726,-0.01985 13.70437,-0.16134 26.66811,5.957653 36.10969,16.827443 9.43871,10.86648 14.55362,25.5591 14.28156,40.55754 -0.0351,1.93719 -0.16008,3.86765 -0.37414,5.78298 M 186.8248,96.339196 c 11.65453,0.602615 22.92643,6.691704 31.72396,16.982804 9.88871,11.56752 15.9569,27.61794 16.79028,44.35565 0.26061,5.2341 0.003,10.44569 -0.76904,15.50483 m -2.11469,-3.9005 c -1.64894,12.3172 -6.64752,23.43037 -14.26049,31.64258 -9.53438,10.28485 -22.55701,15.33977 -36.05403,13.50827 -5.54083,-0.75188 -11.04918,-2.65298 -16.29441,-5.69783 m 59.82995,-35.03785 c -2.42173,10.55889 -7.05504,20.25226 -13.49849,27.99966 -9.34645,11.23787 -21.84633,17.58269 -34.82218,17.56675 -8.3413,-0.0102 -16.49884,-2.65834 -23.65064,-7.71657 m 75.52256,-46.84984 c -1.95325,10.90451 -6.50327,20.85777 -13.03048,28.96059 -9.66039,11.99233 -22.95297,19.11509 -36.83457,20.38281 -5.87668,0.53668 -11.70969,0.0138 -17.26843,-1.47304 m 67.53422,-30.67248 c -2.69878,6.98419 -6.47676,13.37569 -11.1637,18.83205 -9.81663,11.42813 -22.99274,18.0375 -36.87486,18.45253 -2.7679,0.0828 -5.53612,-0.0818 -8.2814,-0.49055 m 48.05953,-15.04676 c -0.26067,0.31609 -0.52459,0.6289 -0.79171,0.93837 -9.37301,10.85895 -22.23187,17.09955 -35.64362,17.07707 -13.39318,-0.0224 -26.2501,-6.29665 -35.51414,-17.63499 -0.68655,-0.84028 -1.35118,-1.70583 -1.99288,-2.59562 m 64.47823,10.07096 c -8.96592,7.23765 -19.36214,11.03835 -29.95798,10.96871 -13.74605,-0.0903 -26.82158,-6.67696 -36.69575,-18.29119 -0.38391,-0.45156 -0.76236,-0.90999 -1.13526,-1.37512 m 49.14609,18.64113 c -4.17114,1.35594 -8.44451,2.02459 -12.71155,1.99637 -13.38565,-0.0885 -26.09898,-7.01921 -35.06849,-19.42286 -5.82353,-8.05319 -9.83239,-18.08915 -11.56721,-29.23435 m 42.89696,37.16385 c -13.67719,-0.5694 -26.42797,-6.80431 -35.63027,-17.49787 -9.29688,-10.80347 -14.14112,-25.20637 -13.53893,-40.10375 0.15403,-3.81053 0.66259,-7.60438 1.51612,-11.32455 m 48.79287,80.122 c -13.24804,0.20421 -25.62811,-5.90933 -34.48853,-16.75832 -8.34782,-10.22136 -12.99471,-23.94155 -13.01471,-38.34034 m 44.85842,44.53743 c -7.63112,-2.85132 -14.60777,-7.84127 -20.34091,-14.53878 -9.56881,-11.17837 -15.06034,-26.38858 -15.19453,-42.16693 -0.0322,-3.78282 0.24451,-7.5525 0.82752,-11.25615 m 18.87342,64.63286 c -2.86216,-2.26505 -5.55241,-4.86288 -8.02935,-7.75172 -9.55198,-11.14039 -15.44322,-26.03259 -16.39745,-41.23686 -0.69971,-11.14878 1.29457,-21.88555 5.73487,-30.8515 m 9.73881,70.23708 c -0.84165,-0.86452 -1.65841,-1.75866 -2.44908,-2.68107 -9.77169,-11.39981 -15.1278,-26.59894 -15.01479,-42.30697 0.109,-15.15011 5.29755,-29.61634 14.3838,-40.42837 m 4.46488,76.61474 c -8.14848,-10.99578 -12.96017,-25.26431 -13.15981,-39.70104 -0.203,-14.67926 4.38489,-28.41078 13.13618,-38.16051 m -15.94909,84.92704 c -5.38759,-9.48557 -8.11408,-20.66786 -7.8688,-32.16122 0.34001,-15.93216 6.35961,-31.33953 16.7048,-42.65885 3.00957,-3.29297 6.34156,-6.1914 9.93149,-8.63413 m -20.10182,61.43446 c -3.70015,-8.54354 -5.60261,-17.63976 -5.647,-26.70437 -0.0761,-15.5435 5.31335,-30.10851 14.67039,-40.95584 m -10.62561,58.91272 c -0.12911,-2.12896 -0.18272,-4.26901 -0.15981,-6.41135 0.1724,-16.11599 4.65936,-31.57348 12.77167,-43.18122 8.1073,-11.60057 19.13785,-18.318086 30.44494,-18.887726 1.30215,-0.0656 2.59881,-0.04862 3.88468,0.0504 m -42.64623,69.86437 c -0.053,-1.58629 -0.0546,-3.17942 -0.004,-4.77521 0.49468,-15.71237 5.98668,-30.93696 15.70774,-42.1817 9.71376,-11.2363 22.83858,-17.54661 36.77247,-17.41745 1.24151,0.0115 2.48467,0.0742 3.72742,0.18803 m -64.21591,44.51453 c -0.004,-0.30505 -0.006,-0.61003 -0.006,-0.91492 0.0141,-15.76343 5.76289,-30.6299 15.98148,-41.17348 6.31584,-6.51671 14.10008,-11.128704 22.68031,-13.347478 m -33.06285,53.366118 c 2.10701,-8.87741 6.39755,-17.12561 12.36853,-23.9847 10.02376,-11.51471 24.06164,-18.35449 38.95292,-19.0465 7.35801,-0.34193 14.72339,0.82024 21.73418,3.39422 m -70.13279,22.47246 c 2.24238,-5.65464 5.28536,-10.71531 8.99041,-15.03925 9.64155,-11.2521 23.30555,-17.007622 37.68288,-16.137328 12.4327,0.752581 24.70477,6.400008 34.97879,16.120458 m -72.46639,16.70417 c 1.91209,-3.59515 4.15699,-6.93173 6.69219,-9.95337 9.46749,-11.28408 22.48883,-17.60874 36.07392,-17.59962 7.31018,0.005 14.5449,1.84442 21.21022,5.39297 m -54.56974,3.12305 c 8.51309,-7.94967 19.46567,-12.411744 30.84569,-12.450137 13.39579,-0.0452 26.39956,6.041847 35.79846,17.084747 0,0 0.0628,0.0739 0.0628,0.0739 m -56.39371,-15.31292 c 5.10159,-2.24391 10.57704,-3.391878 16.1557,-3.406441 13.33459,-0.03481 26.4973,6.387861 36.40331,17.813241 3.00834,3.46975 5.66853,7.34698 7.91393,11.54447 m -42.91318,-23.6668 c 12.45294,1.26863 24.35773,7.45198 33.64384,17.50076 10.03644,10.86073 16.1845,25.33778 17.29063,40.28045 0.0972,1.31253 0.15504,2.62376 0.17367,3.93137 m -40.40441,-63.50637 c 8.80783,2.69202 16.865,8.12694 23.35766,15.75554 9.68241,11.37641 15.23618,26.85603 15.52805,43.10453 0.14953,8.32476 -1.08857,16.58893 -3.62619,24.29754 m -2.21697,-18.92827 c -1.18005,12.62546 -5.89223,24.51948 -13.22675,33.74346 -8.98655,11.30159 -21.23612,17.75612 -33.70641,17.84565 -3.75242,0.0269 -7.45946,-0.52523 -11.01987,-1.64752 m 61.38131,-43.18811 c -2.37551,9.80038 -7.13406,18.74571 -13.79602,25.94241 -10.33892,11.16882 -24.55788,17.40184 -39.75249,17.23587 -10.69129,-0.11678 -21.39498,-3.3852 -31.22847,-9.49041 m 84.37093,-31.70296 c -1.92858,9.53364 -6.35839,18.20009 -12.67725,25.07592 -9.87963,10.75045 -23.74249,16.47287 -38.26841,15.52804 -8.2139,-0.53427 -16.40096,-3.18236 -23.96478,-7.87024 m 73.64241,-34.79625 c -2.72415,7.32855 -6.68983,14.1103 -11.69864,19.86388 -9.75228,11.20234 -22.79425,17.75193 -36.52243,18.0117 -9.49836,0.17973 -18.85216,-2.66556 -27.11301,-8.27029 m 79.82663,-18.95626 c -2.30929,5.48738 -5.30667,10.41926 -8.87798,14.65003 -9.39169,11.12588 -22.30634,16.87549 -35.6452,15.98444 -8.54787,-0.571 -16.94095,-3.85205 -24.3217,-9.61391 m 54.64084,-15.54585 c -0.92046,1.11686 -1.87324,2.20466 -2.85712,3.2603 -10.12083,10.8589 -22.91675,17.64825 -36.30293,18.66984 -12.47335,0.95192 -24.30566,-3.21469 -33.35957,-11.42613 m 56.26306,11.47769 c -8.66999,7.56755 -18.98208,11.64653 -29.44137,11.7186 -13.15222,0.0906 -25.58383,-6.16865 -34.24408,-17.2857 -0.827,-1.06161 -1.61585,-2.16295 -2.36448,-3.30146 m 57.60179,9.93027 c -4.98715,1.82966 -10.21827,2.73981 -15.50586,2.69219 -13.63202,-0.12276 -26.85667,-6.58952 -36.88712,-18.09666 -8.81936,-10.11775 -14.58817,-23.46377 -16.42154,-37.8526 m 69.54217,58.10797 c -4.5269,1.47571 -9.12532,2.26796 -13.69561,2.36564 -13.75306,0.29394 -26.51835,-5.71631 -35.6381,-16.42221 -5.20133,-6.10596 -9.01178,-13.50263 -11.18932,-21.56052 m 42.42905,35.07987 c -13.2064,-1.14492 -25.25299,-7.41163 -33.71221,-17.74866 -8.1296,-9.93423 -12.30795,-22.87161 -11.64955,-36.53054 m 40.55622,47.85532 c -7.40638,-3.1148 -14.29107,-8.02778 -20.20768,-14.37193 -10.21404,-10.95211 -16.8567,-25.42321 -18.88294,-40.10771 -0.35121,-2.54529 -0.56076,-5.07632 -0.62942,-7.57461 m 11.02256,56.66347 c -1.89467,-1.71231 -3.67852,-3.60261 -5.33429,-5.6556 -9.05185,-11.2234 -13.8653,-26.79251 -12.84516,-43.27127 0.775,-12.51902 4.8809,-24.88392 12.02745,-35.49537 m 9.28297,72.49859 c -9.63403,-11.50127 -15.01269,-25.93951 -15.48375,-40.3412 -0.45723,-13.97868 3.7405,-26.92508 11.35015,-36.22084 m -6.47861,74.89598 c -5.05176,-9.70624 -7.80286,-21.15157 -7.83672,-32.98723 -0.0467,-16.33352 5.07887,-32.24215 14.46047,-44.36137 3.28421,-4.24256 7.02414,-7.93443 11.11964,-10.98118 m -17.06418,83.05174 c -4.1412,-9.12396 -6.20892,-19.0293 -6.0444,-28.93223 0.26437,-15.91222 6.27502,-30.82698 16.61442,-41.74836 0.25523,-0.2696 0.51286,-0.53649 0.77284,-0.80065 m -18.35077,47.03823 c -0.68889,-3.69008 -1.06274,-7.43051 -1.12115,-11.17348 -0.24886,-15.94809 5.2328,-31.16397 14.93824,-42.29646 3.59293,-4.12122 7.69483,-7.60126 12.16287,-10.32644 m -23.62691,54.42459 c 0.97692,-12.62639 6.06086,-24.43328 14.14384,-33.4579 9.89406,-11.0467 23.56026,-17.15512 37.7793,-16.75921 4.40223,0.12257 8.79399,0.86653 13.0743,2.22523 m -64.90282,36.71614 c 2.24621,-9.95994 6.95762,-18.93263 13.60889,-26.01905 10.20274,-10.87025 24.31588,-16.633924 39.29274,-15.81077 0.53331,0.02931 1.06711,0.06693 1.60125,0.112858 m -39.35795,29.212652 c 1.68804,-3.02727 3.58769,-5.84142 5.67534,-8.41642 9.40735,-11.60343 22.22532,-17.85313 35.445,-17.65896 8.2344,0.12094 16.30002,2.74132 23.42086,7.58952 m -53.56072,-0.65688 c 9.21172,-8.29474 19.85952,-12.598228 30.4946,-12.474006 11.99556,0.140111 23.20727,5.920036 31.32815,16.166306 m -53.66117,-7.32063 c 4.43934,-1.1752 8.98973,-1.74988 13.55897,-1.6936 13.91541,0.17141 27.15458,6.18368 37.25288,16.8271 5.43097,5.72415 9.75819,12.58499 12.77969,20.13851 M 182.11196,94.588264 c 12.72498,0.978756 24.56366,7.246486 33.36147,17.673136 8.00104,9.48238 12.99406,21.82207 14.27939,35.12876 m -25.89074,-44.49712 c 5.81635,3.08333 11.09885,7.45565 15.51529,12.88018 9.11509,11.19569 14.00531,26.21024 13.10368,41.68856 -0.5914,10.15266 -3.6534,20.06661 -9.03204,28.76476 m 12.9333,-34.61222 c -1.06575,15.05035 -6.07524,29.51223 -14.54391,40.27453 -8.32975,10.58577 -19.37046,16.74367 -30.98562,17.07936 m 48.01818,-34.81341 c -2.27932,10.06868 -6.80723,19.32533 -13.12188,26.70272 -9.38933,10.96953 -22.09262,17.03773 -35.25074,16.56828 -0.30406,-0.0109 -0.60805,-0.0252 -0.91194,-0.043 m 33.6205,-26.38846 c -1.94419,3.46218 -4.16099,6.65484 -6.62169,9.54318 -9.91791,11.64159 -23.36818,17.84164 -37.53827,17.57108 -10.11065,-0.19306 -20.11077,-3.66644 -29.06803,-9.95606 m 70.22786,-8.86742 c -8.90327,9.03697 -21.12524,14.40815 -34.23309,14.86546 -14.38578,0.50189 -28.68541,-4.9193 -40.22231,-14.97256 -3.02153,-2.63296 -5.81289,-5.54906 -8.33526,-8.69834 m 72.42172,15.59858 c -8.61761,5.89649 -18.24393,8.90675 -27.92899,8.55946 -13.4649,-0.48282 -26.10133,-7.42923 -35.18843,-19.76126 -4.46952,-6.06554 -7.95382,-13.26165 -10.29212,-21.27866 m 65.35357,34.73131 c -6.66863,4.13168 -14.17569,6.27404 -21.86563,6.31175 -13.53115,0.0664 -26.79976,-6.36514 -36.81222,-17.76327 -1.44141,-1.64089 -2.80557,-3.37383 -4.08537,-5.18972 m 38.02709,27.78846 c -0.91448,0.0765 -1.82873,0.12266 -2.74168,0.13856 -13.38131,0.23308 -25.97613,-6.04862 -34.64728,-17.32546 -5.09743,-6.62921 -8.64255,-14.73948 -10.24561,-23.64934 m 32.55242,31.45943 c -7.39167,-2.75077 -13.90908,-7.41866 -19.09516,-13.62669 -9.36798,-11.214 -13.8067,-26.7338 -12.44333,-42.99359 0.0909,-1.08423 0.20739,-2.1684 0.34925,-3.2513 m 22.67227,50.59601 c -0.90122,-0.91167 -1.77702,-1.86144 -2.62597,-2.84766 -9.728,-11.30098 -15.49553,-26.86798 -16.28164,-43.40409 -0.52414,-11.02542 1.19158,-21.97899 4.896,-31.78237 m -7.67064,64.7279 c -5.46462,-10.33456 -8.14315,-21.80287 -7.62889,-33.09739 0.696,-15.28568 7.20073,-29.25072 18.25695,-39.00262 4.86224,-4.28864 10.49271,-7.65757 16.65572,-9.93509 m -20.61317,84.06487 c -5.59316,-9.92487 -8.44427,-21.13314 -8.28639,-32.31245 0.19416,-13.74864 4.928,-26.67529 13.22415,-36.47759 m -4.82529,49.06756 c -0.84977,-5.15961 -1.26632,-10.3712 -1.22115,-15.51953 0.1404,-16.0013 4.73495,-30.53827 13.25236,-40.81092 1.73655,-2.09441 3.61712,-3.98705 5.62467,-5.66014 m -25.42447,46.79808 c 0.5246,-13.46083 5.56146,-26.80366 13.86452,-37.39184 7.15989,-9.13041 16.36198,-15.73654 26.321,-19.006417 m -34.0748,36.476847 c 2.50712,-6.5373 5.93813,-12.46858 10.13323,-17.52732 9.37104,-11.30026 22.01434,-17.597358 35.06246,-17.550312 6.0318,0.02175 11.97918,1.402472 17.51661,4.070462 m -60.8389,11.88329 c 0.9591,-1.32229 1.96505,-2.59674 3.01544,-3.82025 9.89749,-11.5287 23.29333,-18.031435 37.47424,-18.277075 9.9744,-0.172776 19.84792,2.753586 28.72705,8.358435 m -56.44761,-5.277551 c 7.58269,-5.115878 16.48948,-7.744651 25.717,-7.518714 13.80251,0.337954 27.40983,7.022035 37.94322,18.941315 0.6213,0.70305 1.23043,1.42267 1.82691,2.15837 M 172.92974,92.561951 c 2.32433,-0.455481 4.68025,-0.709253 7.0497,-0.761385 13.59839,-0.299192 26.95541,6.024839 37.35581,17.387234 5.9363,6.48538 10.70117,14.38058 14.00625,23.05335 m -37.20512,-30.95097 c 8.76341,2.64936 17.05205,8.21369 23.88446,16.10103 9.26915,10.70032 15.28361,25.01251 16.62799,40.06199 m -23.5555,-52.74122 c 2.57157,2.1691 4.95531,4.59349 7.11989,7.24598 9.46409,11.5973 14.2746,26.96815 13.20935,43.00978 -0.75898,11.42951 -4.46691,22.65102 -10.75169,32.46446 m 17.30651,-23.04858 c -1.06683,13.92764 -6.16622,26.90987 -14.43746,36.53021 -6.55688,7.62636 -14.81387,12.79235 -23.80662,14.81585 m 21.96301,-30.27495 c -2.52475,6.36432 -5.91486,12.15696 -10.02339,17.10348 -9.24479,11.13037 -21.59342,17.32349 -34.23016,17.09763 -7.91179,-0.1414 -15.59256,-2.80607 -22.20594,-7.79923 m 62.02605,-26.39155 c -1.73842,2.76692 -3.62653,5.36695 -5.65262,7.78059 -9.96436,11.87038 -22.79165,18.65702 -36.09449,19.36475 -8.60916,0.45803 -16.98871,-1.65946 -24.40694,-5.95798 m 56.83023,1.61305 c -9.15292,7.94958 -19.66447,12.07753 -30.18315,11.96732 -13.14274,-0.13771 -25.34338,-6.89283 -33.78444,-18.6937 -3.00659,-4.20331 -5.47523,-8.96241 -7.33209,-14.13149 m 77.74718,17.02044 c -7.04282,3.91991 -14.96297,6.02417 -23.11641,6.04288 -13.71535,0.0315 -27.10766,-5.83489 -37.38734,-16.42087 -1.76801,-1.82069 -3.42891,-3.76609 -4.97143,-5.82295 m 42.35454,29.50017 c -1.58465,0.23281 -3.1789,0.3666 -4.77643,0.40154 -13.27241,0.29029 -26.198,-6.23096 -35.70659,-18.03293 -9.51604,-11.81125 -14.88454,-28.0087 -14.6763,-44.97526 0.0172,-1.39893 0.0723,-2.79792 0.16541,-4.19466 m 53.34772,61.47112 c -0.41921,0.01 -0.83852,0.0137 -1.25783,0.012 -13.35871,-0.0548 -26.09772,-5.91502 -35.31571,-16.0874 -7.38763,-8.15251 -12.02057,-18.55294 -13.05021,-29.41047 m 27.97718,50.39069 c -8.38432,-2.59925 -15.8855,-7.66761 -21.86862,-14.69717 -9.59976,-11.27873 -14.66344,-26.84987 -14.32942,-43.15414 0.1847,-9.01551 2.01556,-17.92971 5.31308,-26.06585 m 22.0069,81.87234 c -7.8205,-3.06801 -14.82244,-8.17037 -20.47116,-14.928 -9.58348,-11.46483 -14.64966,-26.93078 -14.27311,-43.23389 0.0201,-0.87047 0.0557,-1.74131 0.1067,-2.61196 m 25.29558,57.43946 c -1.29589,-1.22032 -2.53951,-2.53558 -3.72521,-3.94006 -9.16239,-10.85299 -14.46376,-26.55045 -14.41944,-43.45402 0.0444,-16.92337 5.44365,-33.59716 15.32872,-46.27995 0.36966,-0.47427 0.74498,-0.94218 1.12587,-1.40359 m 5.56387,82.32509 c -1.12243,-1.22622 -2.20233,-2.50499 -3.23596,-3.83283 -9.1147,-11.70907 -14.23259,-26.71471 -13.83757,-41.87726 0.26283,-10.08863 2.95823,-19.81232 7.93709,-28.25945 m 2.75111,62.55397 c -5.49693,-9.88582 -8.55278,-21.89369 -8.51575,-34.25095 0.0476,-15.88953 5.20376,-31.1698 14.7976,-42.34902 1.07172,-1.24881 2.19308,-2.43953 3.3613,-3.56842 m -18.01114,75.89599 c -2.99949,-7.94889 -4.6601,-16.59563 -4.89568,-25.42966 -0.44213,-16.58001 4.15322,-32.78074 12.63211,-45.42686 3.43526,-5.12363 7.42284,-9.53673 11.79806,-13.115201 m -21.54785,73.934651 c -1.10676,-4.70249 -1.69679,-9.67115 -1.76011,-14.77646 -0.1997,-16.10267 4.83334,-32.64163 13.87967,-45.73724 1.86786,-2.70394 3.88721,-5.23322 6.03767,-7.56476 m -21.01422,46.42741 c 0.84393,-13.47168 5.85779,-26.19653 13.99643,-35.75937 9.31562,-10.9458 22.03444,-16.939622 35.11275,-16.348465 3.96049,0.179019 7.89159,0.961135 11.69421,2.342855 m -57.75575,48.73531 c 1.54927,-12.30879 6.37495,-23.30293 13.6462,-31.81126 9.68815,-11.33643 23.06558,-17.52541 36.94633,-17.50629 1.80575,0.002 3.61037,0.10986 5.40667,0.32097 m -53.59324,28.44084 c 2.56311,-6.18967 5.96693,-11.79718 10.08075,-16.61523 9.76897,-11.44128 22.99242,-17.800527 36.87432,-17.864683 12.10077,-0.05593 23.8873,4.667963 33.60555,13.228673 m -83.79738,20.53292 c 2.52272,-4.70404 5.58379,-9.05422 9.12355,-12.91442 10.19987,-11.12318 23.76557,-17.52325 38.2534,-17.629495 13.97992,-0.102522 27.67417,5.645185 39.12823,16.169915 m -82.72957,4.76217 c 2.06021,-3.865 4.46479,-7.42974 7.17043,-10.62788 9.47595,-11.200862 22.17598,-17.346353 35.2752,-17.044317 5.15098,0.118768 10.24685,1.235333 15.08703,3.317501 m -38.42278,14.032176 c 8.32341,-7.58791 18.65107,-11.730003 29.20281,-11.74878 12.97993,-0.0231 25.38755,6.2055 33.83544,17.35636 3.49394,4.61184 6.22488,9.96082 8.01295,15.83236 m -65.17069,-22.39121 c 7.48811,-5.76819 16.13866,-8.764868 24.893,-8.799563 13.05007,-0.05172 25.53524,6.477943 34.15376,17.968263 4.1011,5.46764 7.20583,11.90547 9.06148,18.93371 m -65.81169,-33.66664 c 5.91847,-2.77841 12.13828,-4.20312 18.34576,-4.217094 13.30313,-0.02995 25.8121,6.421314 34.50599,17.896404 2.35749,3.11166 4.4008,6.54998 6.08783,10.25477 M 184.39504,95.860004 c 12.97933,0.224296 25.79897,6.690476 35.79021,18.099946 8.43147,9.62827 14.3695,22.22261 16.97454,35.9328 M 198.54236,96.43571 c 7.06626,2.839715 13.50307,7.63775 18.83363,14.03962 9.56345,11.48546 14.98531,27.4234 15.04501,44.34675 0.019,5.37462 -0.50425,10.75604 -1.55829,16.01667 M 128.55354,129.76836 174.55917,88.312215 m 45.81254,14.433675 20.49822,67.65153 m -50.30411,-82.085207 46.00564,41.456137 m -2.07993,58.8804 -48.14299,36.94772 m -56.15948,-35.32895 2.79875,-72.45591" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 233.58929,156.77084 a 51.026787,60.098213 0 0 1 -51.02679,60.09822 51.026787,60.098213 0 0 1 -51.02679,-60.09822 51.026787,60.098213 0 0 1 51.02679,-60.09821 51.026787,60.098213 0 0 1 51.02679,60.09821 z" /> + <path + id="path21" + inkscape:test-threshold="0.1" + d="m 338.24995,199.26483 c -1.06189,17.46841 -4.05036,33.76388 -8.91959,46.13777 -2.78975,7.0894 -6.12051,12.70007 -9.87417,16.55197 -3.74804,3.84613 -7.82758,5.83719 -11.94582,5.86794 -0.38424,0.003 -0.76821,-0.0114 -1.15158,-0.0427 m 28.25751,-54.43121 c -2.20024,11.54517 -5.24307,22.5715 -9.25468,31.81567 -3.17014,7.30513 -6.82835,13.22383 -10.90311,17.40101 -4.06982,4.17211 -8.41668,6.45961 -12.83591,6.80811 -2.85802,0.22539 -5.70333,-0.3649 -8.45942,-1.72288 m 41.64719,-33.66349 c -1.62701,5.46388 -3.48354,10.50163 -5.56099,15.0144 -3.31429,7.1995 -7.12862,12.92458 -11.31482,16.88051 -4.18398,3.95383 -8.63694,6.04018 -13.14032,6.17706 -4.5006,0.13681 -8.94629,-1.67764 -13.09021,-5.27475 -4.14806,-3.60071 -7.89515,-8.89899 -11.08573,-15.53423 -1.06262,-2.20985 -2.0577,-4.55565 -2.9826,-7.02042 m 47.38049,-5.5053 c -1.14326,3.15769 -2.35861,6.10244 -3.64612,8.82162 -3.36123,7.09885 -7.17116,12.56412 -11.3285,16.21173 -4.14698,3.63852 -8.57359,5.40168 -13.01382,5.16017 -4.44303,-0.24166 -8.82459,-2.48846 -12.85952,-6.71926 -4.04142,-4.23761 -7.64127,-10.3633 -10.62306,-18.15811 -2.09603,-5.47928 -3.85235,-11.69182 -5.25123,-18.50723 m 61.53346,14.35864 c -0.61719,1.8949 -1.29722,3.70859 -2.03318,5.43445 -2.97177,6.96891 -6.83175,12.45437 -11.12274,16.12112 -4.29785,3.67263 -8.98302,5.49259 -13.72758,5.32486 -4.757,-0.16816 -9.52037,-2.3242 -14.13082,-6.42393 -4.6051,-4.09498 -8.99176,-10.07327 -12.96634,-17.65141 -3.54281,-6.75492 -6.72668,-14.72566 -9.36811,-23.53742 m 66.44199,24.53293 c -0.51039,1.37059 -1.04317,2.6986 -1.59707,3.98184 -3.13271,7.25774 -6.91074,13.01473 -11.07581,16.96708 -4.16871,3.95581 -8.64751,6.03255 -13.17643,6.15332 -4.52962,0.12079 -9.01834,-1.7161 -13.22073,-5.34794 -4.20231,-3.63177 -8.0327,-8.98477 -11.27831,-15.67369 -0.52202,-1.07585 -1.02784,-2.18407 -1.51666,-3.3225 m 41.0641,8.8667 c -1.54605,1.96037 -3.14033,3.67296 -4.77524,5.12701 -4.35975,3.87743 -8.95532,5.86764 -13.58292,5.87963 -4.62625,0.012 -9.20135,-1.95485 -13.49227,-5.79161 -4.2964,-3.84167 -8.21226,-9.46986 -11.59642,-16.59586 -4.91912,-10.35814 -8.487,-23.38791 -10.71981,-37.66346 m 46.77698,58.54463 c -0.46429,0.49227 -0.93128,0.96022 -1.40083,1.40383 -4.27383,4.03775 -8.75372,6.04675 -13.20708,6.00244 -4.44671,-0.0442 -8.82192,-2.14374 -12.74552,-6.26075 -3.93132,-4.12511 -7.34574,-10.20801 -9.9324,-18.07219 -3.95245,-12.01664 -5.76764,-27.5682 -5.07185,-45.1125 m 46.72681,65.16113 c -2.80738,1.78333 -5.74553,2.71413 -8.71749,2.78538 -4.51826,0.10832 -9.04161,-1.76539 -13.37706,-5.483 -4.3388,-3.72047 -8.4093,-9.21489 -12.10563,-16.15691 -6.26784,-11.77154 -11.29146,-27.43072 -14.35734,-43.66356 m 39.43071,66.53522 c -0.10709,0.005 -0.21419,0.009 -0.32128,0.0126 -4.65522,0.13607 -9.27799,-1.75214 -13.609,-5.55956 -4.34016,-3.81545 -8.31269,-9.48893 -11.75123,-16.79737 -6.4386,-13.68493 -10.59216,-32.22564 -12.43703,-52.45389 m 23.26477,75.12718 c -0.74726,-0.51691 -1.48598,-1.08944 -2.21469,-1.71694 -4.32632,-3.72547 -8.2566,-9.34833 -11.55226,-16.69177 -6.54189,-14.57673 -10.12284,-34.89845 -10.48452,-57.77301 m 14.47108,51.8663 c -0.80278,-1.37038 -1.57251,-2.80509 -2.30638,-4.29963 -6.94874,-14.15109 -10.17094,-32.51664 -9.18545,-51.06867 0.32872,-6.18832 1.11665,-12.24812 2.31268,-18.01841 m 1.60186,63.55322 c -3.83985,-12.8097 -5.7263,-28.13321 -5.25085,-44.08732 0.51135,-17.15833 3.72843,-34.05097 9.20895,-48.22656 m -2.87785,75.64377 c -3.11297,-10.77249 -4.64064,-22.5313 -4.61991,-34.40999 0.0243,-13.90924 2.17226,-27.36584 5.82051,-38.67369 m -8.24297,65.84477 c -0.65507,-5.94222 -0.94102,-11.95457 -0.85295,-17.95514 0.30349,-20.67974 5.0593,-40.13193 12.79096,-54.80864 1.15206,-2.18691 2.36193,-4.24983 3.62096,-6.17647 m -19.7073,63.44065 c -0.008,-0.29442 -0.0157,-0.58878 -0.0223,-0.88309 -0.45783,-20.47149 3.17512,-39.95021 9.5759,-54.2967 2.81397,-6.30712 6.10419,-11.48515 9.70499,-15.29195 m -16.29002,51.02762 c 1.42354,-13.67873 4.79414,-26.43563 9.57163,-36.8532 3.45331,-7.53012 7.55857,-13.65436 12.02982,-17.981 4.48346,-4.33846 9.22419,-6.77159 14.04693,-7.29154 2.67392,-0.28828 5.34653,0.0131 7.99407,0.86066 m -48.30532,32.26399 c 1.76578,-7.1133 4.00463,-13.4885 6.65669,-18.96069 3.33395,-6.87919 7.26497,-12.21232 11.56717,-15.74836 4.29711,-3.53185 8.90588,-5.22126 13.54698,-4.91172 4.6504,0.31015 9.26878,2.61966 13.65725,6.92813 0.39591,0.3887 0.78957,0.79328 1.18087,1.21368 M 283.49839,137.951 c 3.37509,-6.62517 7.27479,-11.85483 11.53389,-15.38407 4.32121,-3.58072 8.92884,-5.33974 13.57757,-5.11146 4.65263,0.22847 9.27201,2.44253 13.6541,6.62397 4.38451,4.18376 8.44542,10.25259 12.04423,18.01065 1.42754,3.0774 2.77494,6.40418 4.03819,9.96335 m -51.39182,-30.14595 c 0.6885,-0.74996 1.38877,-1.44853 2.09946,-2.09465 4.20656,-3.82437 8.73597,-5.77402 13.31415,-5.74358 4.58194,0.0305 9.13564,2.04104 13.43861,5.94027 4.305,3.90106 8.27641,9.61596 11.74967,16.86159 2.88037,6.0088 5.3752,12.98059 7.42207,20.65884 m -37.58209,-44.05394 c 4.05446,0.39425 8.0346,2.28322 11.7586,5.58939 4.30378,3.8209 8.19082,9.46719 11.43137,16.67896 6.58346,14.65131 9.96988,34.5439 10.12253,55.94628 0.008,1.09436 0.007,2.18931 -0.002,3.28405 m -20.2838,-68.34733 c 1.34039,0.85663 2.65384,1.87715 3.93255,3.05578 4.29468,3.95856 8.14512,9.65261 11.25612,16.70909 6.33236,14.36329 9.07636,33.043 7.83106,52.69979 -0.22387,3.53373 -0.57389,7.06325 -1.04379,10.56534 m 6.83675,-16.33106 c -0.0891,16.73903 -3.57655,33.64251 -9.13683,46.9541 -3.23026,7.73342 -7.08337,14.07541 -11.29946,18.59815 -2.00859,2.15469 -4.08363,3.88071 -6.20425,5.16852 m 31.94315,-36.73709 c -1.52573,9.80193 -4.25509,18.65225 -7.84828,25.9971 -3.39568,6.9411 -7.50551,12.42193 -11.98172,16.10621 -4.48104,3.68824 -9.26866,5.53333 -14.10489,5.40011 -4.8444,-0.13345 -9.67769,-2.24522 -14.34747,-6.27214 -1.18273,-1.01992 -2.35142,-2.15969 -3.5032,-3.41582 m 33.03648,-29.66946 c -1.11097,3.95732 -2.40099,7.7073 -3.84646,11.1664 -2.91028,6.96449 -6.39947,12.63213 -10.28421,16.57875 -3.88774,3.94967 -8.06936,6.07063 -12.29408,6.26007 -4.21236,0.1889 -8.35213,-1.55462 -12.03368,-5.05335 -3.67666,-3.49408 -6.8362,-8.6853 -9.09366,-15.20326 -0.22299,-0.64383 -0.43701,-1.30016 -0.64174,-1.96859 m 55.32242,1.94727 c -2.94174,6.57938 -6.45657,11.81466 -10.32457,15.4341 -4.07289,3.81117 -8.46743,5.76614 -12.90169,5.75278 -4.43391,-0.0134 -8.8216,-1.99508 -12.87217,-5.83878 -4.04858,-3.8418 -7.68814,-9.47699 -10.64513,-16.57929 -2.28752,-5.49433 -4.13899,-11.80203 -5.44698,-18.69696 m 49.21954,24.04411 c -1.7887,2.42129 -3.67448,4.51436 -5.63504,6.25011 -4.35217,3.85313 -8.9955,5.88045 -13.71223,5.96878 -4.72018,0.0884 -9.41246,-1.76277 -13.93071,-5.39462 -4.51999,-3.63324 -8.76102,-8.96164 -12.64084,-15.62265 -3.07706,-5.2828 -5.88046,-11.32285 -8.39826,-17.86996 m 32.38819,44.30693 c -1.82331,0.69928 -3.67322,1.05704 -5.52783,1.0711 -4.44793,0.0337 -8.86246,-1.90853 -12.97267,-5.71153 -4.11029,-3.80307 -7.84311,-9.39903 -10.97007,-16.47054 -4.17995,-9.45284 -7.16339,-21.29081 -8.53326,-34.24181 m 30.93432,51.47469 c -0.58155,-0.44033 -1.15822,-0.91191 -1.7295,-1.4143 -4.41337,-3.88118 -8.45056,-9.55104 -11.92611,-16.72244 -7.05059,-14.54807 -11.25292,-34.11561 -12.76065,-55.11885 -0.48016,-6.68884 -0.67809,-13.41725 -0.61376,-19.97354 m 11.13405,92.19398 c -3.95731,-3.55608 -7.51271,-8.66434 -10.41992,-15.13506 -6.19431,-13.78695 -8.97497,-32.6828 -7.82282,-53.37095 m 13.64893,44.51364 c -6.39193,-13.47778 -9.47264,-31.48007 -8.58544,-50.16894 0.55262,-11.64093 2.61872,-22.91387 5.92281,-32.76686 m -3.48058,74.95835 c -3.78189,-12.184 -6.05971,-26.99984 -6.57829,-42.20071 -0.68679,-20.13148 1.74567,-39.5122 7.02155,-53.51947 0.1842,-0.48905 0.3716,-0.97092 0.56217,-1.44551 0,0 0,0 0,0 0,0 0.004,-0.009 0.004,-0.009 m -8.58714,98.38483 c -3.83311,-13.13318 -5.49178,-28.2646 -4.56284,-43.81292 0.85106,-14.24471 3.83418,-28.18462 8.59297,-40.60783 m -4.79575,71.03458 c -1.69706,-9.25022 -2.45593,-19.42724 -2.19754,-30.02557 0.51779,-21.23841 5.09977,-42.74387 12.68857,-59.45025 0.23417,-0.51551 0.47084,-1.02559 0.70994,-1.53011 m -15.0616,74.28631 c -0.35967,-5.65097 -0.41842,-11.39802 -0.1511,-17.11772 0.9293,-19.88308 5.72962,-37.99849 13.91869,-51.22685 1.82375,-2.94602 3.78512,-5.59657 5.85606,-7.92211 m -5.78115,70.2106 c 0.0278,-0.94973 0.0591,-1.90044 0.0941,-2.85126 0.75254,-20.45391 3.13186,-40.30987 8.07544,-55.20926 2.45477,-7.39837 5.45197,-13.31055 8.93598,-17.47807 0.94964,-1.13595 1.92852,-2.13358 2.93254,-2.99049 m -25.0775,57.21716 c 1.67058,-16.02799 4.83787,-30.27431 9.64612,-41.10835 2.97594,-6.70543 6.49415,-11.90192 10.42333,-15.34746 3.91831,-3.436 8.17756,-5.06163 12.46519,-4.69546 4.29385,0.3667 8.52548,2.72343 12.40584,7.07892 1.21569,1.36454 2.39143,2.91882 3.52098,4.65873 m -53.84765,56.28075 c 1.08517,-15.90944 4.22284,-29.79165 8.93655,-40.3193 3.02866,-6.76425 6.65269,-12.01609 10.65294,-15.50068 3.9974,-3.48211 8.32041,-5.15192 12.66124,-4.8442 4.34617,0.3081 8.62482,2.59383 12.52947,6.82411 0.62047,0.67222 1.23012,1.39205 1.82779,2.15867 m -47.33335,36.80779 c 1.92831,-13.18359 5.35106,-25.22663 10.07261,-34.97911 3.46934,-7.16601 7.54065,-12.88404 11.98938,-16.82302 4.45034,-3.94039 9.17945,-6.01604 13.97733,-6.13794 4.80138,-0.12199 9.58348,1.71044 14.21201,5.34102 0.82142,0.64431 1.63633,1.34392 2.44413,2.0973 m -40.89762,47.99185 c 2.1499,-9.64604 4.69189,-18.22434 7.72668,-25.42891 3.0372,-7.21033 6.49613,-12.86587 10.34344,-16.75504 3.83863,-3.88038 7.96671,-5.89113 12.12721,-5.94551 4.15556,-0.0543 8.22341,1.85007 11.853,5.56227 3.63647,3.71924 6.73171,9.14382 9.08976,15.9156 0.38799,1.11423 0.75491,2.26162 1.10035,3.44012 m -49.35445,19.71765 c 1.36222,-8.70828 3.6717,-16.65324 6.6664,-23.33709 3.08962,-6.89569 6.86216,-12.35075 11.0157,-16.01967 4.1559,-3.67099 8.63374,-5.50441 13.14334,-5.35633 4.51077,0.14812 8.98321,2.27681 13.13136,6.33498 0.0909,0.089 0.18173,0.17887 0.27232,0.26966 m -46.39763,21.94407 c 0.69245,-2.00225 1.44131,-3.92851 2.24122,-5.77015 3.13224,-7.21136 7.0119,-13.04735 11.30156,-17.1102 4.30013,-4.07277 8.9194,-6.28494 13.61876,-6.57118 4.70136,-0.28637 9.3833,1.35578 13.87953,4.69722 4.49314,3.33915 8.71273,8.31049 12.49381,14.46597 2.04285,3.3257 3.943,6.97357 5.67241,10.84769 m -48.84418,-7.27227 c 2.55047,-5.57778 5.60831,-10.10402 8.9657,-13.37506 4.01789,-3.91454 8.39824,-5.97188 12.83541,-6.0791 4.43847,-0.10725 8.84305,1.73664 12.94037,5.3735 4.09228,3.6324 7.80935,8.9955 10.86601,15.69224 3.06001,6.70409 5.41475,14.65556 6.77355,23.25308 m -59.61475,-37.50878 c 1.94134,-2.57586 3.956,-4.77316 6.03336,-6.5667 4.3851,-3.78599 8.98643,-5.71577 13.61795,-5.67203 4.62891,0.0437 9.19998,2.06066 13.47906,5.95864 4.28405,3.90252 8.17818,9.59923 11.5296,16.81993 3.00884,6.48259 5.5135,14.04476 7.51125,22.42095 m -43.96295,-37.3512 c 2.61882,-1.19364 5.29284,-1.78088 7.98808,-1.73225 4.64147,0.0837 9.22696,2.0507 13.61573,5.75482 4.38262,3.69892 8.45007,9.02981 12.08015,15.56935 6.27634,11.30674 11.00026,25.77159 13.92367,40.62144 m -31.41891,-68.87265 c 4.16149,0.44086 8.27433,2.5097 12.19187,6.13796 4.27226,3.95678 8.22129,9.68295 11.70246,16.86689 7.00141,14.44853 11.78179,34.11592 13.74382,54.95986 0.21305,2.26329 0.39207,4.53302 0.53672,6.80281 m -28.01537,-84.97448 c 2.71945,1.08114 5.36162,2.79824 7.87355,5.1144 4.29891,3.96386 8.13898,9.61224 11.22531,16.53004 6.21189,13.92351 8.83254,31.61172 7.69751,50.04602 m -24.2798,-65.19091 c 2.89218,3.36734 5.56665,7.66861 7.9647,12.81105 6.66155,14.28519 10.86357,34.41693 12.03619,56.12631 0.37387,6.92166 0.43039,13.88341 0.16952,20.68176 m 3.76785,-10.37513 c -0.49464,17.17073 -4.15071,32.65742 -9.84153,44.47078 -3.39415,7.0458 -7.444,12.63612 -11.83475,16.43776 -4.39896,3.80875 -9.07593,5.77288 -13.79434,5.78562 -0.40055,0.001 -0.80113,-0.0119 -1.2016,-0.0389 m 38.84678,-52.62086 c -1.76793,10.52488 -4.5082,20.38819 -8.07587,28.68219 -3.13263,7.28261 -6.82415,13.17351 -10.91096,17.30356 -4.08849,4.13173 -8.45828,6.38519 -12.88892,6.70365 -2.17136,0.15607 -4.33512,-0.15469 -6.45725,-0.91321 m 23.25687,-25.29219 c -1.1594,3.00531 -2.36922,5.85424 -3.63609,8.52231 -3.32975,7.01256 -6.9818,12.61932 -10.98723,16.51389 -3.99555,3.88497 -8.21726,5.93138 -12.46958,6.03191 -4.23965,0.10022 -8.38711,-1.7461 -12.07998,-5.39007 -3.69668,-3.64774 -6.85036,-9.00749 -9.20597,-15.76437 -0.94244,-2.70332 -1.75109,-5.61202 -2.4181,-8.7036 m 44.40459,3.4333 c -3.41338,6.56038 -7.12522,11.74677 -11.13278,15.31857 -4.15936,3.7071 -8.53829,5.57605 -12.93197,5.46867 -4.38643,-0.10721 -8.69102,-2.18945 -12.5844,-6.17824 -3.89726,-3.99277 -7.29607,-9.80535 -9.95267,-17.19266 -2.40976,-6.70091 -4.15554,-14.54276 -5.18331,-23.28994 m 54.29163,31.02599 c -2.08313,3.5452 -4.428,6.52971 -6.9454,8.85955 -4.09581,3.79063 -8.57102,5.78346 -13.12815,5.84383 -4.56214,0.0604 -9.10703,-1.81123 -13.43998,-5.46481 -4.32639,-3.64805 -8.36544,-9.01015 -11.9136,-15.70025 -3.21428,-6.06057 -5.99519,-13.15664 -8.16942,-20.87261 m 51.09958,35.9023 c -3.89737,3.23551 -7.99562,4.92512 -12.12683,5.02095 -4.58359,0.10632 -9.12222,-1.75113 -13.3824,-5.421 -4.26303,-3.67232 -8.15503,-9.07868 -11.50226,-15.86747 -4.30669,-8.73474 -7.56635,-19.46133 -9.62058,-31.01931 m 30.6278,52.16352 c -3.9823,-0.55898 -7.87184,-2.56015 -11.48944,-5.92996 -4.19373,-3.90648 -7.9406,-9.57879 -10.95332,-16.6853 -4.96988,-11.72313 -7.67226,-26.66707 -7.71644,-43.05534 m 18.421,55.32143 c -2.79408,-3.31959 -5.35905,-7.55773 -7.62259,-12.60142 -6.26876,-13.96825 -9.95728,-33.57979 -9.97452,-54.0493 -0.007,-8.39323 0.60666,-16.71713 1.84214,-24.62152 m 3.82581,93.69113 c -1.79623,-2.47587 -3.44908,-5.31996 -4.92466,-8.50665 -6.47565,-13.98486 -9.06156,-33.52409 -6.85997,-54.92049 1.05454,-10.24866 3.16568,-20.4613 6.16369,-30.02704 m 8.95434,87.01273 c -0.59124,-1.25545 -1.16729,-2.55899 -1.72753,-3.90773 -6.07741,-14.63091 -10.26804,-34.55388 -11.55483,-54.73026 -0.80054,-12.55222 -0.46529,-24.99352 1.11858,-36.37822 m 6.06702,92.91263 c -7.1745,-13.61604 -10.50729,-32.32955 -9.62362,-52.77669 0.70162,-16.2347 4.01575,-32.26986 8.98486,-45.24695 m 2.02863,87.5361 c -6.71427,-14.07011 -10.02148,-32.67815 -9.34552,-52.11147 0.37517,-10.78591 1.96202,-21.36288 4.55504,-30.95531 m 1.56554,83.17822 c -3.48885,-13.06877 -5.43805,-27.69981 -5.49013,-41.80633 -0.0704,-19.07579 3.32038,-36.26904 9.76485,-48.87118 0.0287,-0.0562 0.0575,-0.1122 0.0863,-0.16813 m -5.75924,87.76975 c -3.59724,-12.28409 -5.5915,-26.17064 -5.89178,-40.14994 -0.35929,-16.72656 1.72067,-32.85994 5.77969,-45.78147 m -6.64378,72.23381 c -2.11507,-9.63033 -3.09689,-19.82897 -2.92587,-30.08566 0.2487,-14.91475 2.92658,-29.29079 7.41361,-41.43036 m 1.51594,48.40408 c -0.28395,-3.32251 -0.47035,-6.71011 -0.56028,-10.1316 -0.51249,-19.49747 2.10501,-39.38743 7.20235,-53.8054 2.54546,-7.19988 5.64833,-12.89232 9.18562,-16.78916 3.26029,-3.59169 6.82014,-5.57329 10.42754,-5.8609 m -34.65661,92.92075 c -0.0333,-3.32782 0.008,-6.68245 0.12737,-10.03973 0.73534,-20.64621 4.39966,-40.3219 11.19651,-55.37911 3.20079,-7.09078 6.96916,-12.85623 11.12581,-17.00484 m -20.82839,65.1276 c 0.72606,-19.62121 4.53089,-37.17311 10.92996,-50.18575 3.35821,-6.82899 7.33146,-12.19023 11.67452,-15.79142 0.10298,-0.0854 0.20614,-0.16977 0.30949,-0.25314 m -23.52037,50.91434 c 1.67413,-11.56973 4.45241,-21.77801 8.14675,-29.97508 3.08057,-6.83524 6.74112,-12.14322 10.78145,-15.67046 4.03521,-3.52277 8.39318,-5.21576 12.77154,-4.91874 4.38291,0.29732 8.70716,2.58438 12.67516,6.84486 2.01591,2.1645 3.92343,4.82061 5.68871,7.94166 m -48.32203,26.58951 c 1.30707,-7.80625 3.45927,-14.95787 6.21853,-21.06672 3.11894,-6.90518 6.96985,-12.38741 11.20478,-16.08087 4.23997,-3.69787 8.80619,-5.5577 13.4119,-5.43955 4.60835,0.11823 9.19029,2.21358 13.49407,6.22493 4.29698,4.00502 8.25912,9.87154 11.58044,17.30615 0.94453,2.11426 1.83503,4.35078 2.66408,6.69978 m -50.57999,17.89856 c 1.35252,-7.55307 3.43065,-14.59449 6.04442,-20.73971 3.08914,-7.26285 6.8784,-13.16771 11.05762,-17.29521 4.19016,-4.13829 8.67885,-6.40556 13.23107,-6.74688 4.54633,-0.34087 9.05519,1.2468 13.26392,4.52835 1.06034,0.82675 2.09835,1.75859 3.10932,2.78952 m -43.18829,10.50082 c 0.36665,-0.93961 0.74692,-1.85754 1.14015,-2.75271 3.00929,-6.85061 6.74434,-12.29699 10.89031,-15.97395 4.14843,-3.67914 8.64036,-5.53061 13.18098,-5.40802 4.54417,0.12269 9.06085,2.21818 13.30558,6.22449 4.24084,4.00263 8.14304,9.85121 11.46002,17.26689 3.39601,7.59237 6.13067,16.72332 7.96269,26.91961 m -55.82624,-24.63429 c 0.25587,-0.65924 0.51796,-1.30745 0.78603,-1.94426 2.92076,-6.93805 6.52263,-12.45343 10.52633,-16.19393 4.00593,-3.74258 8.34681,-5.64701 12.72451,-5.58172 4.37657,0.0653 8.7054,2.09942 12.66854,6.0171 3.95889,3.91349 7.49005,9.64782 10.2704,16.89293 2.05299,5.34974 3.67709,11.47445 4.7537,18.1907 m -47.43315,-29.98455 c 2.29351,-4.22122 4.88596,-7.6691 7.67654,-10.23759 3.97913,-3.66245 8.30851,-5.48836 12.67083,-5.33145 4.36298,0.15693 8.68175,2.2954 12.63441,6.36866 3.94873,4.06921 7.47244,10.01107 10.24826,17.55719 2.98036,8.10219 5.05037,17.92725 5.86254,28.94329 M 290.1039,127.5968 c 1.13749,-1.40963 2.30383,-2.67746 3.49484,-3.7992 4.2422,-3.99545 8.74573,-6.08795 13.28559,-6.21392 4.53738,-0.1259 9.02161,1.7166 13.19066,5.3716 4.17222,3.65778 7.93897,9.05114 11.0974,15.82343 4.30366,9.22792 7.31121,20.65644 8.80728,32.86884 m -47.52243,-46.34276 c 3.15517,-2.17753 6.52472,-3.26807 9.94868,-3.19522 4.40505,0.0937 8.7918,2.10532 12.95457,5.9223 4.15384,3.80879 8.00644,9.34491 11.35248,16.226 3.24985,6.68326 5.99529,14.58583 8.00284,23.1875 m -24.96957,-49.90744 c 1.34288,0.89969 2.66734,1.99782 3.96931,3.28931 3.99911,3.9669 7.7236,9.69736 11.08582,16.86434 6.67671,14.23222 11.89057,34.13498 14.0571,54.41016 0.2861,2.67749 0.5189,5.3596 0.69539,8.0364 m -22.62775,-68.08682 c 2.73593,3.31608 5.2856,7.46401 7.61703,12.32338 6.60724,13.77138 11.26322,32.92721 13.18205,52.09638 0.42883,4.28402 0.717,8.54041 0.85789,12.70477 m 3.89152,-17.40831 c 0.0977,19.37617 -4.61894,37.77115 -12.29726,51.66541 -3.96696,7.17838 -8.60901,12.9323 -13.54829,16.87783 -2.01428,1.60902 -4.07377,2.91461 -6.16117,3.90359 m 30.20517,-51.82227 c -1.52753,13.54262 -4.4449,25.81478 -8.50781,35.68097 -3.00779,7.30398 -6.58028,13.13478 -10.54312,17.18809 -3.96511,4.05563 -8.22721,6.23369 -12.53681,6.47778 -0.42796,0.0242 -0.85567,0.0293 -1.2828,0.0154 m 23.62697,-48.07658 c -1.27968,5.26932 -2.92637,10.20012 -4.86645,14.64549 -3.11138,7.12921 -6.93047,12.90787 -11.14662,16.92077 -4.22514,4.02146 -8.75733,6.18978 -13.35513,6.42392 -4.59511,0.23401 -9.15931,-1.46736 -13.45929,-4.90663 -4.28408,-3.42655 -8.23681,-8.52604 -11.59911,-14.89454 m 53.91788,0.723 c -0.31731,0.84848 -0.64693,1.67985 -0.98825,2.49313 -2.85709,6.80787 -6.50123,12.27874 -10.57302,15.99674 -4.07809,3.72374 -8.51535,5.63232 -13.00809,5.5816 -4.49461,-0.0507 -8.96162,-2.05937 -13.13907,-5.9339 -4.17034,-3.86794 -7.99253,-9.5442 -11.17186,-16.70913 -0.82909,-1.86843 -1.6128,-3.83463 -2.34562,-5.89081 m 38.03789,20.51104 c -1.27225,1.68597 -2.59519,3.18249 -3.95939,4.47954 -4.09192,3.89047 -8.49518,5.92995 -12.94732,6.02027 -4.45069,0.0903 -8.8525,-1.76957 -12.93027,-5.42546 -4.07573,-3.65405 -7.74786,-9.03212 -10.76215,-15.75398 -2.46068,-5.48733 -4.4488,-11.7954 -5.85031,-18.62821 m 29.11565,35.9707 c -0.81411,0.14253 -1.63259,0.21396 -2.45297,0.21416 -4.31986,0.001 -8.62742,-1.96877 -12.656,-5.80206 -4.0263,-3.8311 -7.70872,-9.46059 -10.82688,-16.56489 -6.25945,-14.2613 -10.01844,-33.97442 -9.50434,-54.37376 0.0402,-1.59333 0.10624,-3.18675 0.19866,-4.77827 m 34.32283,85.22602 c -4.49263,-0.26079 -8.90697,-2.35587 -13.03177,-6.19207 -4.19984,-3.90599 -7.9978,-9.5257 -11.15872,-16.4826 -4.48278,-9.86618 -7.52156,-22.04598 -8.81723,-35.27344 m 29.4715,48.84479 c -2.62544,-3.22674 -5.0755,-7.22706 -7.32256,-11.89267 -6.59025,-13.68351 -11.24119,-32.7813 -13.16509,-51.8162 -0.40259,-3.98317 -0.68213,-7.93838 -0.83296,-11.81128 m 10.93611,54.76707 c -6.21075,-13.78685 -10.52462,-32.90912 -12.43491,-52.21829 -0.57647,-5.82698 -0.92715,-11.62525 -1.03765,-17.23035 m 1.55445,53.08313 c -2.49498,-11.17562 -3.72588,-23.18768 -3.59116,-35.22318 0.15783,-14.10052 2.18483,-27.75058 5.81175,-39.73803 m -10.07846,63.74643 c -0.36937,-5.41492 -0.54531,-10.84436 -0.51667,-16.19094 0.10881,-20.31042 3.15563,-38.52106 9.10091,-51.77938 2.93589,-6.54719 6.48822,-11.66861 10.4603,-15.08033 1.57332,-1.35136 3.20404,-2.42666 4.87426,-3.21162 m -14.82219,82.71909 c -0.51761,-4.4775 -0.86174,-8.99366 -1.03825,-13.50782 -0.80423,-20.56685 1.8994,-40.62097 6.98068,-55.37761 0.91445,-2.65565 1.90333,-5.13261 2.9601,-7.41081 m -20.66631,56.04898 c 0.0568,-19.01508 3.42856,-36.74283 9.04867,-50.13441 3.05791,-7.28638 6.71599,-13.12744 10.74649,-17.18666 4.03722,-4.06598 8.36176,-6.25888 12.73014,-6.5233 1.91419,-0.11587 3.81967,0.13996 5.69015,0.75417 m -27.78561,67.36059 c 1.12025,-14.51986 4.30483,-28.13497 9.08926,-38.63215 3.08478,-6.76807 6.75772,-12.07797 10.81914,-15.61541 4.05491,-3.53178 8.43101,-5.23541 12.82996,-4.93614 1.51911,0.10335 3.0355,0.44548 4.53572,1.0296 m -46.20375,39.82534 c 1.78535,-9.57172 4.44111,-18.10019 7.80199,-25.2041 3.3157,-7.00842 7.25873,-12.50292 11.57266,-16.20259 4.31411,-3.69983 8.93306,-5.54958 13.59469,-5.42346 4.66863,0.1263 9.30443,2.22905 13.71545,6.23146 2.33654,2.1201 4.58985,4.75482 6.73558,7.86575 m -41.44802,22.05209 c 1.48075,-4.56326 3.15017,-8.81588 4.99883,-12.67762 3.33578,-6.96822 7.18913,-12.52363 11.41968,-16.332 4.22666,-3.80487 8.72787,-5.77133 13.2789,-5.7767 4.54936,-0.005 9.05275,1.94962 13.27435,5.75529 4.22414,3.80794 8.07729,9.38617 11.39889,16.44928 0.052,0.11049 0.10379,0.22133 0.15548,0.33252 m -50.00551,1.40061 c 0,0 0.0105,-0.0247 0.0105,-0.0247 2.95223,-6.93698 6.6525,-12.56122 10.77499,-16.44533 4.13067,-3.89183 8.59712,-5.96071 13.13241,-6.0964 4.53533,-0.13568 9.03915,1.66235 13.27887,5.22221 4.23397,3.55503 8.13072,8.80757 11.44456,15.36031 3.1003,6.13047 5.65333,13.32827 7.46157,21.1463 m -56.20648,-28.1805 c 2.51405,-4.54405 5.38466,-8.1927 8.47539,-10.85325 4.22917,-3.64053 8.83127,-5.40048 13.47859,-5.14704 4.65869,0.25406 9.31254,2.52213 13.77003,6.80672 4.4591,4.28613 8.64784,10.51761 12.4218,18.50367 1.60304,3.39218 3.12272,7.08304 4.54897,11.04555 m -39.31584,-35.06078 c 2.8989,-1.57203 5.88043,-2.34266 8.87918,-2.26205 4.48406,0.12054 8.90082,2.14338 13.00824,5.95151 4.09941,3.8007 7.79743,9.29689 10.83677,16.09599 3.83597,8.5812 6.52695,19.01639 7.73162,30.37721 M 304.595,118.25381 c 1.80957,0.9474 3.58791,2.22101 5.32376,3.80524 4.13016,3.7694 7.9457,9.23013 11.33006,15.98329 6.53781,13.04557 11.25654,30.52841 13.15332,47.52169 M 322.32915,121.0233 c 1.656,2.55376 3.20373,5.50963 4.62403,8.8351 5.86431,13.73061 9.45641,33.66209 9.21192,54.60832 -0.0616,5.28195 -0.36824,10.5624 -0.93155,15.75619 m 2.03862,-9.82309 c -1.02588,18.3805 -4.77063,36.35384 -11.18361,49.94316 -3.33574,7.06855 -7.26348,12.67171 -11.59243,16.49078 -0.91056,0.80332 -1.83609,1.52514 -2.77426,2.16358 m 30.66408,-44.69622 c -1.41771,11.67718 -4.41834,22.70281 -8.57008,31.73538 -3.26173,7.09625 -7.15765,12.80185 -11.43321,16.72939 -4.27867,3.93041 -8.84597,5.99996 -13.46593,6.10672 -4.61617,0.10668 -9.20369,-1.74828 -13.51543,-5.43792 -2.53241,-2.16702 -4.95209,-4.95247 -7.20594,-8.30165 m 48.18755,-33.47989 c -1.85099,9.85142 -4.72137,18.89681 -8.4178,26.49237 -3.43449,7.05731 -7.50097,12.69553 -11.94554,16.55852 -4.44661,3.86476 -9.17903,5.87644 -13.97529,5.92589 -4.25358,0.0439 -8.49883,-1.45316 -12.63032,-4.41474 m 44.23152,-26.46458 c -1.13485,3.25838 -2.35851,6.31196 -3.66669,9.14394 -3.37629,7.30902 -7.27304,13.04648 -11.5302,16.97297 -4.255,3.9245 -8.78544,5.95931 -13.35928,6.02823 -4.57544,0.0689 -9.10288,-1.82992 -13.36011,-5.55137 -4.26302,-3.72651 -8.15045,-9.1857 -11.53403,-16.02602 -1.94497,-3.932 -3.69904,-8.27023 -5.25478,-12.91832 m 51.39729,6.6524 c -0.42696,0.97713 -0.86342,1.92946 -1.3092,2.85633 -3.40282,7.0752 -7.31283,12.5887 -11.57934,16.29795 -4.25984,3.70345 -8.8003,5.53897 -13.37044,5.38117 -4.57313,-0.1579 -9.1016,-2.30906 -13.34689,-6.40678 -4.25011,-4.10237 -8.12546,-10.06498 -11.47166,-17.65358 -0.72208,-1.63754 -1.41738,-3.34584 -2.08508,-5.12159 m 53.0369,25.74498 c -1.32186,1.68178 -2.68473,3.16621 -4.08108,4.44875 -4.30631,3.95534 -8.89729,5.95911 -13.51613,5.95278 -4.62175,-0.006 -9.21076,-2.02408 -13.53114,-5.97066 -4.32784,-3.95338 -8.29981,-9.75979 -11.77219,-17.17139 -5.73779,-12.24697 -9.81369,-28.24467 -12.13201,-45.62399 m 47.04056,49.30183 c -1.29014,1.43214 -2.60288,2.71743 -3.93779,3.84641 -4.37854,3.70311 -8.91182,5.64961 -13.48424,5.67932 -4.56119,0.0296 -9.03253,-1.85675 -13.15406,-5.50679 -4.12052,-3.64915 -7.78765,-8.9701 -10.77736,-15.5937 -2.02154,-4.47865 -3.70649,-9.49099 -5.03057,-14.91457 m 30.60269,42.51695 c -4.54781,0.0829 -9.02387,-1.80816 -13.11128,-5.54739 -4.09951,-3.75029 -7.73373,-9.29431 -10.59468,-16.31655 -5.80916,-14.25867 -7.98345,-33.46739 -5.72052,-53.52638 0.23799,-2.10963 0.52361,-4.21503 0.85599,-6.31069 m 27.66211,80.04441 c -3.10159,-0.93141 -6.15929,-2.8495 -9.12333,-5.70883 -4.09405,-3.9494 -7.92283,-9.61181 -11.38697,-16.60436 -5.34099,-10.78109 -9.78596,-24.69288 -12.56218,-39.26865 m 16.30852,46.33825 c -1.90376,-2.99749 -3.69284,-6.41329 -5.34901,-10.19077 -6.44076,-14.69041 -10.69106,-34.4312 -11.89874,-54.81314 -0.26436,-4.46171 -0.38186,-8.93245 -0.34847,-13.36815 m 10.47561,60.70542 c -5.94781,-13.30571 -9.3665,-30.29995 -10.40462,-48.25001 -0.56653,-9.79581 -0.40402,-19.60098 0.38198,-28.64133 m 7.74208,66.1606 c -2.68314,-10.08369 -4.12546,-21.12005 -4.37497,-32.40113 -0.40026,-18.09703 2.292,-35.92451 7.02194,-49.53904 m -5.97233,61.46036 c -0.42638,-6.28175 -0.60917,-12.76458 -0.5153,-19.23384 0.29449,-20.29557 3.28395,-39.44219 9.38208,-53.80842 0.2591,-0.61039 0.52311,-1.21041 0.79196,-1.79984 m -9.63256,65.66114 c 0.003,-0.36839 0.007,-0.73643 0.0114,-1.1041 0.27875,-21.0799 4.04926,-40.05908 10.74314,-54.00822 3.02701,-6.30789 6.56995,-11.40105 10.44577,-15.04398 m -22.62746,41.40296 c 1.4573,-13.98297 4.50998,-26.05443 8.84628,-35.33649 3.09138,-6.61725 6.77888,-11.69179 10.84056,-14.99392 4.05517,-3.29684 8.44494,-4.79082 12.84518,-4.28487 4.4101,0.50708 8.76113,3.0147 12.77075,7.56954 1.71931,1.9531 3.36381,4.26889 4.91389,6.93501 m -46.47827,40.88558 c 2.21911,-11.30274 4.94218,-21.80625 8.42605,-30.53342 2.85827,-7.16003 6.13048,-12.8723 9.82829,-16.85578 3.68629,-3.97108 7.67344,-6.07663 11.70407,-6.22839 4.01865,-0.15132 7.9515,1.65251 11.39797,5.2599 0.7186,0.75216 1.41453,1.58098 2.08499,2.48433 m -44.05427,33.43072 c 1.71997,-6.77583 3.82406,-12.94859 6.2782,-18.33265 3.21263,-7.0481 6.96497,-12.61048 11.09528,-16.39774 4.12679,-3.78403 8.54632,-5.71493 13.00484,-5.67614 4.45817,0.0388 8.86326,2.0472 12.94564,5.92568 0.66834,0.63496 1.32677,1.31883 1.97426,2.05064 m -36.97751,14.51493 c 3.27339,-6.60884 6.98869,-12.00474 11.03778,-15.84289 4.23621,-4.01554 8.71165,-6.20578 13.25276,-6.48685 4.53345,-0.2806 9.00506,1.35161 13.17781,4.66155 4.17217,3.30946 7.94718,8.21764 11.13438,14.28487 1.3721,2.61197 2.62623,5.42125 3.75315,8.38638 m -42.88997,-15.36731 c 0.55126,-0.58373 1.11174,-1.13526 1.68061,-1.65354 4.04064,-3.68135 8.43131,-5.62268 12.90267,-5.65647 4.47293,-0.0338 8.90484,1.83922 13.07622,5.45645 4.16359,3.61045 7.98149,8.88613 11.22677,15.40431 3.91502,7.86335 6.92831,17.39947 8.66929,27.63207 m -39.63122,-56.35764 c 1.17982,-0.25574 2.36003,-0.38299 3.53706,-0.38141 4.63473,0.006 9.19671,2.01348 13.37733,5.94281 4.18454,3.93301 7.91106,9.72136 10.90212,17.1267 5.45107,13.49596 8.08666,31.39007 7.65855,51.37413 m -23.38874,-68.36066 c 2.0737,1.03968 4.09445,2.44962 6.03676,4.21121 4.35382,3.94871 8.24767,9.60465 11.3856,16.57454 6.40211,14.22023 9.07196,32.43957 7.97503,51.48044 -0.1713,2.97346 -0.43244,5.94036 -0.77799,8.88535 m -37.66849,-90.87197 32.40812,22.81666 m -18.75658,-27.74352 31.95768,68.04845 m -6.43229,-39.14107 1.90759,114.01426 M 315.01866,272.48343 285.2042,264.461 m 20.39795,15.37841 -33.91654,-38.20655" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + inkscape:original-d="m 338.66668,193.05655 a 34.395832,75.973213 0 0 1 -34.39584,75.97321 34.395832,75.973213 0 0 1 -34.39583,-75.97321 34.395832,75.973213 0 0 1 34.39583,-75.97321 34.395832,75.973213 0 0 1 34.39584,75.97321 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Slice_multi_mm_1_1.svg b/testfiles/lpe_tests/Slice_multi_mm_1_1.svg new file mode 100644 index 0000000..b9c6bc3 --- /dev/null +++ b/testfiles/lpe_tests/Slice_multi_mm_1_1.svg @@ -0,0 +1,372 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg5" + inkscape:version="1.2-dev (99544120e7, 2021-04-09)" + sodipodi:docname="1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.74653479" + inkscape:cx="397.16836" + inkscape:cy="1344.2106" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="slice" + start_point="142.62793,379.61328" + end_point="142.62793,487.35742" + center_point="142.62793,433.48535" + id="path-effect1350" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="53.212416,362.47607" + end_point="53.212416,481.841" + center_point="53.212416,422.15853" + id="path-effect1309" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="97.920442,362.47591" + end_point="97.920442,487.35689" + center_point="97.920442,424.9164" + id="path-effect1294" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="75.886874,768.34765" + end_point="75.886874,1224.3066" + center_point="75.886874,996.32712" + id="path-effect1004" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="193.63703,768.34699" + end_point="193.63703,1224.3069" + center_point="193.63703,996.32694" + id="path-effect1001" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="193.286,115.04085" + end_point="82.288292,137.1847" + center_point="137.65506,125.40941" + id="path-effect856" + is_visible="true" + lpeversion="1" + allow_transforms="false" /> + <inkscape:path-effect + effect="slice" + start_point="103.76717,94.14931" + end_point="10.442993,156.70153" + center_point="57.10508,125.42542" + id="path-effect851" + is_visible="true" + lpeversion="1" + allow_transforms="false" /> + <inkscape:path-effect + effect="slice" + start_point="96.470909,61.288662" + end_point="96.470909,188.54016" + center_point="96.470909,124.91441" + id="path-effect848" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path976" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:transform-center-x="1.1145587" + inkscape:transform-center-y="-5.196207" + transform="matrix(0.26458333,0,0,0.26458333,-53.05947,19.217554)" + d="M 75.886874,928.62985 -41.863281,952.41211 75.886874,1055.1921 Z m 0,186.84605 -12.554843,108.8307 12.554843,-7.5091 z" + inkscape:path-effect="#path-effect1001;#path-effect1004" + inkscape:original-d="M 354.42488,1208.2816 204.6655,1139.7757 63.331136,1224.3069 82.20589,1060.7078 -41.862757,952.41236 119.56186,919.80841 184.21759,768.347 265.10873,911.79576 429.13682,926.48286 317.70568,1047.743 Z" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path846" + inkscape:path-effect="#path-effect848;#path-effect851" + sodipodi:type="arc" + sodipodi:cx="96.470909" + sodipodi:cy="124.91441" + sodipodi:rx="80.346069" + sodipodi:ry="63.625751" + d="m 96.470703,99.039898 0,-37.750836 c -44.373909,0 -80.345703,28.485471 -80.345703,63.624998 0,8.49573 2.102672,16.60262 5.918392,24.01209 z" + transform="translate(116.1038,21.381441)" /> + <path + id="slice-1-path846" + class="path846-slice UnoptimicedTransforms" + d="m 22.043392,148.92615 c 11.966634,23.23714 40.781739,39.61487 74.427311,39.61487 l 0,-89.501122 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(116.1038,21.381441)" /> + <path + id="slice-1-0-path846" + class="path846-slice UnoptimicedTransforms" + d="M 176.30545,117.69873 C 173.47666,97.853496 159.11937,80.773161 138.66406,70.757812 l -42.193357,28.28125 v 34.586558 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:path-effect="#path-effect856" + inkscape:original-d="m 96.470703,99.039898 v 89.501122 c 44.373807,-9e-5 80.345707,-28.48748 80.345707,-63.62696 -1e-5,-22.88349 -15.25519,-42.945104 -38.15148,-54.155607 z" + transform="translate(116.1038,21.381441)" /> + <path + id="slice-0-path846" + class="path846-slice UnoptimicedTransforms" + d="M 138.66493,70.758453 C 126.4021,64.754314 111.94744,61.289093 96.470703,61.289062 v 37.750836 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(116.1038,21.381441)" /> + <path + id="slice-0-slice-1-0-path846" + class="slice-1-0-path846-slice UnoptimicedTransforms" + d="m 96.470703,133.62562 v 54.9154 c 44.373807,-9e-5 80.345707,-28.48748 80.345707,-63.62696 0,-2.43961 -0.1734,-4.84716 -0.51096,-7.21533 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="translate(116.1038,21.381441)" /> + <path + transform="scale(0.26458333)" + id="slice-1-path976" + class="path976-slice UnoptimicedTransforms" + d="M 75.886874,1216.7975 193.63672,1146.3711 V 785.05273 l -9.41992,-16.70507 -64.6543,151.46093 -43.675626,8.82126 z m 0,-161.6054 6.318204,5.5149 -6.318204,54.7689 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,63.855427,29.707718)" + id="slice-1-0-path976" + class="path976-slice UnoptimicedTransforms" + d="m 193.63672,785.05273 v 361.31837 l 11.0293,-6.5957 149.75976,68.5058 -36.7207,-160.539 111.43164,-121.25978 -164.02734,-14.6875 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + transform="scale(0.26458333)" + id="slice-0-path976" + class="path976-slice UnoptimicedTransforms" + d="" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <g + id="g1292" + inkscape:path-effect="#path-effect1294;#path-effect1309" + transform="translate(-61.120238,11.653154)"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1111" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="269.10574" + sodipodi:cy="1607.3273" + sodipodi:r1="240.11061" + sodipodi:r2="120.05531" + sodipodi:arg1="0.79040597" + sodipodi:arg2="1.4187245" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 201.1178,1469.9256 -16.47718,52.0861 -152.498042,46.5664 129.720702,92.7168 -2.83594,159.4239 42.09046,-31.0833 z" + transform="scale(0.26458333)" + inkscape:transform-center-x="2.9739241" + inkscape:transform-center-y="-3.1681299" /> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1135" + cx="123.481" + cy="453.47375" + rx="42.992428" + ry="33.773975" + d="" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1159" + width="90.091156" + height="63.399643" + x="77.18277" + y="379.61249" + d="" + sodipodi:type="rect" /> + <path + id="path1259" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:transform-center-x="2.9739241" + inkscape:transform-center-y="-3.1681299" + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + d="m 125.29057,1540.1347 -93.147992,28.4434 93.147992,66.5768 z" + inkscape:original-d="m 438.03721,1777.9592 -150.74472,-51.9621 -128.26468,94.7217 2.83626,-159.4239 -129.721703,-92.7164 152.497633,-46.5672 48.09226,-152.0236 91.41245,130.6438 159.44436,-1.2394 -96.00163,127.3095 z" /> + <path + id="ellipse1261" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="" + inkscape:original-d="m 186.53605,453.58292 a 42.992428,33.773975 0 0 1 -42.99243,33.77397 42.992428,33.773975 0 0 1 -42.99242,-33.77397 42.992428,33.773975 0 0 1 42.99242,-33.77398 42.992428,33.773975 0 0 1 42.99243,33.77398 z" /> + <path + id="rect1263" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="" + inkscape:original-d="m 97.245392,379.72165 h 90.091158 v 63.39964 H 97.245392 Z" /> + </g> + <g + transform="translate(-61.120238,11.653154)" + id="slice-1-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline"> + <path + transform="scale(0.26458333)" + id="path1311" + d="m 201.1178,1789.6355 86.17517,-63.6394 82.80078,28.541 v -254.2637 l -45.94922,0.3575 -91.41211,-130.6426 -31.61462,99.9373 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1313" + d="m 97.919922,426.31445 c -10.576079,6.15312 -17.431641,16.02776 -17.431641,27.16016 0,11.1324 6.855562,21.0076 17.431641,27.16016 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1315" + d="m 77.183594,379.61328 v 63.39844 h 20.736328 v -63.39844 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1317" + d="m 125.29057,1635.1549 36.57271,26.14 -2.83594,159.4239 128.26563,-94.7208 6.97265,2.4043 v -270.4726 l -61.5332,-87.9414 -48.0918,152.0234 -59.35005,18.123 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1319" + d="" /> + <path + id="path1321" + d="m 97.246094,379.7207 v 63.40039 h 0.673828 V 379.7207 Z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + <g + id="slice-1-0-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline" + inkscape:path-effect="#path-effect1350" + transform="translate(-45.150871,-25.447467)"> + <path + transform="scale(0.26458333)" + id="path1324" + d="m 483.58984,1499.3926 -113.49609,0.8808 v 254.2657 l 67.94336,23.4199 -50.44922,-151.2578 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 483.58984,1499.3926 -113.49609,0.8808 v 254.2657 l 67.94336,23.4199 -50.44922,-151.2578 z" /> + <path + id="path1326" + d="m 142.62793,423.22574 c -5.76586,-2.25703 -12.26795,-3.52652 -19.14746,-3.52652 -9.57312,0 -18.41593,2.45851 -25.560548,6.61523 v 54.32032 c 7.144618,4.15633 15.987428,6.61328 25.560548,6.61328 6.87951,0 13.3816,-1.26933 19.14746,-3.52613 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 123.48047,419.69922 c -9.57312,0 -18.41593,2.45851 -25.560548,6.61523 v 54.32032 c 7.144618,4.15633 15.987428,6.61328 25.560548,6.61328 23.74406,0 42.99219,-15.12059 42.99219,-33.77344 -1e-5,-18.65285 -19.24813,-33.77539 -42.99219,-33.77539 z" /> + <path + id="path1328" + d="M 142.62793,379.61328 H 97.919922 v 63.39844 h 44.708008 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 97.919922,379.61328 v 63.39844 h 69.353518 v -63.39844 z" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1330" + d="m 463.23897,1499.5507 -139.09444,1.0802 -29.87891,-42.7012 v 270.4726 l 143.77149,49.5567 -50.44922,-151.2578 75.65108,-100.3212 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:original-d="m 294.26562,1457.9297 v 270.4726 l 143.77149,49.5567 -50.44922,-151.2578 96.00195,-127.3086 -159.44531,1.2383 z" /> + <path + id="path1332" + d="m 142.62793,419.81609 c -23.32157,0.38253 -42.07715,15.3533 -42.07715,33.76594 0,18.41264 18.75558,33.38532 42.07715,33.76789 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:original-d="m 143.54297,419.80859 c -23.74406,1e-5 -42.99219,15.12059 -42.99219,33.77344 0,18.65285 19.24813,33.77539 42.99219,33.77539 23.74406,0 42.99218,-15.12254 42.99219,-33.77539 0,-18.65285 -19.24813,-33.77344 -42.99219,-33.77344 z" /> + <path + id="path1334" + d="M 142.62793,379.7207 H 97.919922 v 63.40039 h 44.708008 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:original-d="m 97.919922,379.7207 v 63.40039 H 187.33594 V 379.7207 Z" /> + </g> + <g + transform="translate(-61.120238,11.653154)" + id="slice-0-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline"> + <path + transform="scale(0.26458333)" + id="path1337" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1339" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1341" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1343" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1345" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + <path + id="path1347" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + <g + id="slice-0-slice-1-0-g1292" + class="slice-1-0-g1292-slice UnoptimicedTransforms" + style="display:inline" + transform="translate(57.386201,-40.630453)"> + <path + transform="scale(0.26458333)" + id="path1352" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1354" + d="m 142.62793,483.72192 c 14.13453,-5.53235 23.84473,-16.99886 23.84473,-30.24731 -1e-5,-13.24845 -9.7102,-24.71594 -23.84473,-30.24887 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1356" + d="m 142.62793,443.01172 h 24.64551 v -63.39844 h -24.64551 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1358" + d="m 463.23897,1526.38 20.35087,-26.9874 -20.35087,0.1581 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1360" + d="m 142.62793,487.34992 c 0.30425,0.005 0.60927,0.007 0.91504,0.007 23.74406,0 42.99218,-15.12254 42.99219,-33.77539 0,-18.65285 -19.24813,-33.77344 -42.99219,-33.77344 -0.30577,0 -0.61079,0.003 -0.91504,0.007 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + <path + id="path1362" + d="m 142.62793,443.12109 h 44.70801 V 379.7207 h -44.70801 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Slice_multi_px_1_1.svg b/testfiles/lpe_tests/Slice_multi_px_1_1.svg new file mode 100644 index 0000000..b8d6ca4 --- /dev/null +++ b/testfiles/lpe_tests/Slice_multi_px_1_1.svg @@ -0,0 +1,374 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg5" + inkscape:version="1.2-dev (99544120e7, 2021-04-09)" + sodipodi:docname="1.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="0.023329212" + inkscape:cx="-12752.252" + inkscape:cy="-5208.0627" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + units="px" + scale-x="1" /> + <defs + id="defs2"> + <inkscape:path-effect + effect="slice" + start_point="142.62793,379.61328" + end_point="142.62793,487.35742" + center_point="142.62793,433.48535" + id="path-effect1350" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="53.212416,362.47607" + end_point="53.212416,481.841" + center_point="53.212416,422.15854" + id="path-effect1309" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="97.920442,362.47591" + end_point="97.920442,487.35689" + center_point="97.920442,424.9164" + id="path-effect1294" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="75.886874,768.34765" + end_point="75.886874,1224.3066" + center_point="75.886874,996.32713" + id="path-effect1004" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="193.63703,768.34699" + end_point="193.63703,1224.3069" + center_point="193.63703,996.32695" + id="path-effect1001" + is_visible="true" + lpeversion="1" + allow_transforms="true" /> + <inkscape:path-effect + effect="slice" + start_point="193.15391,114.33749" + end_point="82.156209,136.48133" + center_point="137.65506,125.40941" + id="path-effect856" + is_visible="true" + lpeversion="1" + allow_transforms="false" /> + <inkscape:path-effect + effect="slice" + start_point="103.76717,94.14931" + end_point="10.442992,156.70153" + center_point="57.10508,125.42542" + id="path-effect851" + is_visible="true" + lpeversion="1" + allow_transforms="false" /> + <inkscape:path-effect + effect="slice" + start_point="96.470909,61.288662" + end_point="96.470909,188.54016" + center_point="96.470909,124.91441" + id="path-effect848" + is_visible="true" + lpeversion="1" + allow_transforms="false" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="path976" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:transform-center-x="23.78673" + inkscape:transform-center-y="-110.89665" + transform="matrix(5.6466942,0,0,5.6466942,394.39693,-1169.8226)" + d="M 75.886874,928.62985 -41.863281,952.41211 75.886874,1055.1921 Z m 0,186.84605 -12.554843,108.8307 12.554843,-7.5091 z" + inkscape:path-effect="#path-effect1001;#path-effect1004" + inkscape:original-d="M 354.42488,1208.2816 204.6655,1139.7757 63.331136,1224.3069 82.20589,1060.7078 -41.862757,952.41236 119.56186,919.80841 184.21759,768.347 265.10873,911.79576 429.13682,926.48286 317.70568,1047.743 Z" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path846" + inkscape:path-effect="#path-effect848;#path-effect851" + sodipodi:type="arc" + sodipodi:cx="96.470909" + sodipodi:cy="124.91441" + sodipodi:rx="80.346069" + sodipodi:ry="63.625751" + d="M 96.470703,99.039898 V 61.289062 c -44.373909,0 -80.345703,28.485471 -80.345703,63.624998 0,8.49573 2.102672,16.60262 5.918392,24.01209 z" + transform="matrix(21.341837,0,0,21.341837,4004.6518,-1123.6413)" /> + <path + id="slice-1-path846" + class="path846-slice UnoptimicedTransforms" + d="m 22.043392,148.92615 c 11.966634,23.23714 40.781739,39.61487 74.427311,39.61487 V 99.039898 Z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(21.341837,0,0,21.341837,4004.6518,-1123.6413)" /> + <path + id="slice-1-0-path846" + class="path846-slice UnoptimicedTransforms" + d="M 176.30545,117.69873 C 173.47666,97.853497 159.11937,80.773162 138.66406,70.757812 l -42.193357,28.28125 v 34.586548 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:path-effect="#path-effect856" + inkscape:original-d="m 96.470703,99.039898 v 89.501122 c 44.373807,-9e-5 80.345707,-28.48748 80.345707,-63.62696 -1e-5,-22.88349 -15.25519,-42.945104 -38.15148,-54.155607 z" + transform="matrix(21.341837,0,0,21.341837,4004.6518,-1123.6413)" /> + <path + id="slice-0-path846" + class="path846-slice UnoptimicedTransforms" + d="M 138.66493,70.758453 C 126.4021,64.754314 111.94744,61.289093 96.470703,61.289062 v 37.750836 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(21.341837,0,0,21.341837,4004.6518,-1123.6413)" /> + <path + id="slice-0-slice-1-0-path846" + class="slice-1-0-path846-slice UnoptimicedTransforms" + d="m 96.470703,133.62561 v 54.91541 c 44.373807,-9e-5 80.345707,-28.48748 80.345707,-63.62696 0,-2.43961 -0.1734,-4.84716 -0.51096,-7.21533 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(21.341837,0,0,21.341837,4004.6518,-1123.6413)" /> + <path + transform="matrix(5.6466942,0,0,5.6466942,1526.7835,-1579.9605)" + id="slice-1-path976" + class="path976-slice UnoptimicedTransforms" + d="M 75.886874,1216.7975 193.63672,1146.3711 V 785.05273 l -9.41992,-16.70507 -64.6543,151.46093 -43.675626,8.82126 z m 0,-161.6054 6.318204,5.5149 -6.318204,54.7689 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + transform="matrix(5.6466942,0,0,5.6466942,2889.5756,-945.94322)" + id="slice-1-0-path976" + class="path976-slice UnoptimicedTransforms" + d="m 193.63672,785.05273 v 361.31837 l 11.0293,-6.5957 149.75976,68.5058 -36.7207,-160.539 111.43164,-121.25978 -164.02734,-14.6875 z" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + transform="scale(0.26458333)" + id="slice-0-path976" + class="path976-slice UnoptimicedTransforms" + d="" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <g + id="g1292" + inkscape:path-effect="#path-effect1294;#path-effect1309" + transform="matrix(21.341837,0,0,21.341837,222.36533,-1331.2608)"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + id="path1111" + inkscape:flatsided="false" + sodipodi:sides="5" + sodipodi:cx="269.10574" + sodipodi:cy="1607.3273" + sodipodi:r1="240.11061" + sodipodi:r2="120.05531" + sodipodi:arg1="0.79040597" + sodipodi:arg2="1.4187245" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 201.1178,1469.9256 -16.47718,52.0861 -152.498042,46.5664 129.720702,92.7168 -2.83594,159.4239 42.09046,-31.0833 z" + transform="scale(0.26458333)" + inkscape:transform-center-x="2.9739241" + inkscape:transform-center-y="-3.1681299" /> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1135" + cx="123.481" + cy="453.47375" + rx="42.992428" + ry="33.773975" + d="" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1159" + width="90.091156" + height="63.399643" + x="77.18277" + y="379.61249" + d="" + sodipodi:type="rect" /> + <path + id="path1259" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:transform-center-x="2.9739241" + inkscape:transform-center-y="-3.1681299" + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + d="m 125.29057,1540.1347 -93.147992,28.4434 93.147992,66.5768 z" + inkscape:original-d="m 438.03721,1777.9592 -150.74472,-51.9621 -128.26468,94.7217 2.83626,-159.4239 -129.721703,-92.7164 152.497633,-46.5672 48.09226,-152.0236 91.41245,130.6438 159.44436,-1.2394 -96.00163,127.3095 z" /> + <path + id="ellipse1261" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="" + inkscape:original-d="m 186.53605,453.58292 a 42.992428,33.773975 0 0 1 -42.99243,33.77397 42.992428,33.773975 0 0 1 -42.99242,-33.77397 42.992428,33.773975 0 0 1 42.99242,-33.77398 42.992428,33.773975 0 0 1 42.99243,33.77398 z" /> + <path + id="rect1263" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + d="" + inkscape:original-d="m 97.245392,379.72165 h 90.091158 v 63.39964 H 97.245392 Z" /> + </g> + <g + transform="matrix(21.341837,0,0,21.341837,222.36533,-1331.2608)" + id="slice-1-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline"> + <path + transform="scale(0.26458333)" + id="path1311" + d="m 201.1178,1789.6355 86.17517,-63.6394 82.80078,28.541 v -254.2637 l -45.94922,0.3575 -91.41211,-130.6426 -31.61462,99.9373 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1313" + d="m 97.919922,426.31445 c -10.576079,6.15312 -17.431641,16.02776 -17.431641,27.16016 0,11.1324 6.855562,21.0076 17.431641,27.16016 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1315" + d="m 77.183594,379.61328 v 63.39844 h 20.736328 v -63.39844 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1317" + d="m 125.29057,1635.1549 36.57271,26.14 -2.83594,159.4239 128.26563,-94.7208 6.97265,2.4043 v -270.4726 l -61.5332,-87.9414 -48.0918,152.0234 -59.35005,18.123 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1319" + d="" /> + <path + id="path1321" + d="m 97.246094,379.7207 v 63.40039 h 0.673828 V 379.7207 Z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + <g + id="slice-1-0-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline" + inkscape:path-effect="#path-effect1350" + transform="matrix(21.341837,0,0,21.341837,563.18096,-2123.0562)"> + <path + transform="scale(0.26458333)" + id="path1324" + d="m 483.58984,1499.3926 -113.49609,0.8808 v 254.2657 l 67.94336,23.4199 -50.44922,-151.2578 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 483.58984,1499.3926 -113.49609,0.8808 v 254.2657 l 67.94336,23.4199 -50.44922,-151.2578 z" /> + <path + id="path1326" + d="m 142.62793,423.22574 c -5.76586,-2.25703 -12.26795,-3.52652 -19.14746,-3.52652 -9.57312,0 -18.41593,2.45851 -25.560548,6.61523 v 54.32032 c 7.144618,4.15633 15.987428,6.61328 25.560548,6.61328 6.87951,0 13.3816,-1.26933 19.14746,-3.52613 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 123.48047,419.69922 c -9.57312,0 -18.41593,2.45851 -25.560548,6.61523 v 54.32032 c 7.144618,4.15633 15.987428,6.61328 25.560548,6.61328 23.74406,0 42.99219,-15.12059 42.99219,-33.77344 -1e-5,-18.65285 -19.24813,-33.77539 -42.99219,-33.77539 z" /> + <path + id="path1328" + d="M 142.62793,379.61328 H 97.919922 v 63.39844 h 44.708008 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m 97.919922,379.61328 v 63.39844 h 69.353518 v -63.39844 z" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1330" + d="m 463.23897,1499.5507 -139.09444,1.0802 -29.87891,-42.7012 v 270.4726 l 143.77149,49.5567 -50.44922,-151.2578 75.65108,-100.3212 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" + inkscape:original-d="m 294.26562,1457.9297 v 270.4726 l 143.77149,49.5567 -50.44922,-151.2578 96.00195,-127.3086 -159.44531,1.2383 z" /> + <path + id="path1332" + d="m 142.62793,419.81609 c -23.32157,0.38253 -42.07715,15.3533 -42.07715,33.76594 0,18.41264 18.75558,33.38532 42.07715,33.76789 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:original-d="m 143.54297,419.80859 c -23.74406,1e-5 -42.99219,15.12059 -42.99219,33.77344 0,18.65285 19.24813,33.77539 42.99219,33.77539 23.74406,0 42.99218,-15.12254 42.99219,-33.77539 0,-18.65285 -19.24813,-33.77344 -42.99219,-33.77344 z" /> + <path + id="path1334" + d="M 142.62793,379.7207 H 97.919922 v 63.40039 h 44.708008 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" + inkscape:original-d="m 97.919922,379.7207 v 63.40039 H 187.33594 V 379.7207 Z" /> + </g> + <g + transform="translate(-61.120238,11.653154)" + id="slice-0-g1292" + class="g1292-slice UnoptimicedTransforms" + style="display:inline"> + <path + transform="scale(0.26458333)" + id="path1337" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1339" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1341" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1343" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1345" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + <path + id="path1347" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + <g + id="slice-0-slice-1-0-g1292" + class="slice-1-0-g1292-slice UnoptimicedTransforms" + style="display:inline" + transform="matrix(21.341837,0,0,21.341837,2751.5104,-2447.089)"> + <path + transform="scale(0.26458333)" + id="path1352" + d="" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1354" + d="m 142.62793,483.72192 c 14.13453,-5.53235 23.84473,-16.99886 23.84473,-30.24731 -1e-5,-13.24845 -9.7102,-24.71594 -23.84473,-30.24887 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + id="path1356" + d="m 142.62793,443.01172 h 24.64551 v -63.39844 h -24.64551 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + transform="matrix(0.26458333,0,0,0.26458333,20.062621,0.10915402)" + id="path1358" + d="m 463.23897,1526.38 20.35087,-26.9874 -20.35087,0.1581 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:37.7953" /> + <path + id="path1360" + d="m 142.62793,487.34992 c 0.30425,0.005 0.60927,0.007 0.91504,0.007 23.74406,0 42.99218,-15.12254 42.99219,-33.77539 0,-18.65285 -19.24813,-33.77344 -42.99219,-33.77344 -0.30577,0 -0.61079,0.003 -0.91504,0.007 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + <path + id="path1362" + d="m 142.62793,443.12109 h 44.70801 V 379.7207 h -44.70801 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Spiro_mixed_0_92_5.svg b/testfiles/lpe_tests/Spiro_mixed_0_92_5.svg new file mode 100644 index 0000000..50e30d7 --- /dev/null +++ b/testfiles/lpe_tests/Spiro_mixed_0_92_5.svg @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + inkscape:test-threshold="1.0"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect60" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect58" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect54" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect52" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect48" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect46" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect42" + is_visible="true" + pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect40" + is_visible="true" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 41.44006,35.399686 c 0.224812,0.553036 20.243494,-14.522103 62.20634,-13.354755 18.25684,0.502344 40.44091,4.537793 62.48026,15.748922 13.08527,6.639856 26.48925,16.001608 37.31563,28.875483 0,8e-6 10e-6,1.3e-5 2e-5,1.7e-5 9.84908,11.707094 17.5263,26.720615 19.69595,43.526387 2.01956,15.70293 -1.24465,32.9429 -11.0944,46.97559 -9.40521,13.34396 -25.01497,22.97444 -42.36918,23.82097 -4.14748,0.17115 -8.3024,-0.18556 -12.3653,-1.0366 -12.08841,-2.53213 -22.9859,-9.348 -30.34952,-18.95373 -8.95891,-12.45154 -10.40734,-29.25908 -4.44017,-43.59722 -9.11675,7.18366 -16.0078,17.53373 -19.5577,28.87342 -4.983781,11.16063 -6.13306,23.57667 -3.941358,34.75983 0,0 10e-6,2e-5 10e-6,2e-5 2.613768,13.40965 9.986518,25.1228 19.304188,33.1116 10.72636,9.2159 23.98622,13.66056 35.97991,14.16522 15.17319,0.65166 28.41744,-4.70206 37.53053,-11.20097 10.33254,-7.35876 16.2633,-16.54391 19.41607,-22.47957 3.28268,-6.18022 4.39428,-9.86588 4.82897,-9.7544 0.29485,0.0756 0.19856,4.00046 -2.469,10.83393 -2.54633,6.52292 -8.03247,16.734 -18.79741,25.33709 -9.49784,7.58144 -23.70085,14.12495 -40.67327,13.9923 -13.43617,-0.11546 -28.40672,-4.60671 -40.90268,-14.81064 -10.84904,-8.87553 -19.511131,-21.96741 -22.818299,-37.43076 7e-6,0 -5e-6,-2e-5 -5e-6,-2e-5 -2.746852,-12.89898 -1.654998,-27.16646 3.993691,-40.26967 6.411213,-11.39384 16.852663,-21.43982 30.227333,-27.81728 -2.70398,12.99601 0.80589,28.68979 10.21856,40.24069 5.81762,7.61493 14.77421,13.15739 24.5087,15.21736 3.27177,0.69236 6.59691,0.9825 9.87789,0.83458 13.80635,-0.49189 26.92459,-8.62737 34.77766,-19.54209 8.35996,-11.5633 11.24825,-26.51365 9.70724,-40.12711 -1.65238,-14.663782 -8.41682,-28.234224 -17.1285,-39.026192 0,-5e-6 -10e-6,-9e-6 -2e-5,-1.4e-5 C 186.99143,60.412355 174.63217,51.446121 162.43382,44.845539 141.90084,33.762388 120.8654,29.223368 103.3593,28.002309 83.945124,26.654308 68.06292,29.261622 57.733664,31.573176 47.232071,33.923296 41.650437,35.917211 41.44006,35.399686 Z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect40;#path-effect42" + inkscape:original-d="m 41.44006,35.399686 c 40.94699,1.973072 81.89372,3.946408 122.84018,5.92001 40.94646,1.973601 3.4536,89.786534 5.18001,134.680194 1.7264,44.89367 -45.88007,-59.94009 -45.88007,-59.94009 0,0 -19.23976,43.90647 -28.860041,65.8601 -9.620279,21.95363 80.907051,1.97307 121.360171,2.96" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 63.640093,72.399741 c -0.288529,0.950576 -8.829359,-1.930576 -20.716536,2.829913 -5.269897,2.104646 -11.153361,6.053549 -15.382565,12.25643 -3.376718,4.93848 -5.688536,11.405404 -5.663025,18.331176 3e-6,0 0,10e-6 0,10e-6 0.01275,6.05691 1.85645,12.55275 5.662137,18.0085 4.066067,5.85763 10.581692,10.61627 18.058522,12.47214 7.58998,2.97613 16.168836,3.66626 23.678325,1.8489 0.248026,-0.06 0.494427,-0.12269 0.73913,-0.18799 -4.213983,5.64698 -9.945981,8.85764 -15.447369,9.36332 -6.625612,-0.91547 -12.431249,-4.5902 -16.105722,-9.82632 -3.815138,-5.50362 -4.999054,-12.23846 -3.646495,-18.40516 1.471194,-6.53262 5.635059,-11.89317 10.993167,-15.00696 3.537065,-1.99886 7.269118,-3.00363 10.7715,-3.38881 3.664337,-0.41677 7.169596,-0.31546 10.319221,-0.1131 7.434449,0.36473 12.716871,1.13699 17.899425,-0.37492 6.0066,-1.603067 10.47099,-5.790365 12.885677,-9.809732 2.764745,-4.571908 3.309885,-9.33764 3.404545,-12.279629 0.0996,-3.095668 -0.20809,-4.814705 0.29012,-4.977776 0.36021,-0.117905 1.56406,1.322204 2.35326,4.696783 0.74534,3.187025 1.14369,8.766571 -1.55512,14.861815 -2.383684,5.349794 -7.400384,11.239009 -15.29785,14.054379 -6.673684,2.25414 -13.145357,2.05784 -20.263304,1.9127 -3.002308,-0.0133 -6.06045,0.0242 -8.867246,0.50007 -2.664218,0.46554 -5.279246,1.23559 -7.359418,2.5904 -3.127245,1.95234 -5.647972,5.46731 -6.365617,9.28263 -0.70919,3.57962 0.141337,7.76459 2.389493,10.83317 2.112565,2.94563 5.726354,5.1539 9.452749,5.60339 4.483862,1.82352 9.45041,2.07802 13.237022,1.08579 -0.25888,0.19304 -0.519565,0.3826 -0.781985,0.56866 -7.9413,5.63064 -17.041007,7.77668 -25.1815,6.69311 -9.95171,-2.64184 -18.171221,-8.95295 -23.320664,-16.80875 -4.766656,-7.30028 -6.771325,-15.6314 -6.446184,-23.3888 0,0 3e-6,-1e-5 3e-6,-1e-5 0.382092,-8.855215 3.725627,-16.66288 8.303084,-22.476828 5.738163,-7.272118 13.155228,-11.284986 19.551362,-13.041154 15.48846,-4.239087 22.326045,2.57537 22.411858,2.292653 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect46;#path-effect48" + inkscape:original-d="M 63.640093,72.399741 C 50.320339,90.406169 37.00032,108.41286 23.680034,126.41982 10.35975,144.42678 69.5601,138.25984 69.5601,138.25984 c 0,0 -14.306422,-20.22696 -21.460031,-30.34005 -7.153608,-10.113083 25.160303,-2.96027 37.740055,-4.44 12.579755,-1.47974 10.360282,-20.226965 15.540026,-30.340049" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 145.78021,68.699734 c -0.54429,-0.0099 -4.81845,-10.140831 3.87169,-25.071657 3.89388,-6.678699 10.3726,-13.47916 19.56967,-17.804763 5.37421,-2.521624 11.46504,-4.077303 17.89136,-4.306206 2.90799,-0.103581 5.78129,0.06886 8.57728,0.497679 9.76897,1.507633 18.00867,6.017722 23.97106,11.561621 8.0951,7.54799 11.49317,16.40077 12.60812,22.413799 1.14662,6.183794 0.15146,9.679549 -0.64905,9.749531 -1.02446,0.08956 -1.86555,-3.195207 -4.23063,-8.217313 -2.32001,-4.926407 -6.36517,-11.864672 -13.41034,-17.339457 -5.19389,-4.052383 -12.01988,-7.304702 -19.72005,-8.340855 -2.20836,-0.299833 -4.48266,-0.41417 -6.78842,-0.331001 -5.08994,0.183594 -9.96378,1.313649 -14.29539,3.139607 -7.41629,3.116219 -13.1447,8.178816 -17.02771,13.270209 -8.18778,10.715754 -8.79529,20.807523 -10.36759,20.778806 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect52;#path-effect54" + inkscape:original-d="m 145.78021,68.699734 c 23.6803,-10.606945 47.36033,-21.213628 71.04011,-31.820046 23.67976,-10.606417 9.86694,19.239765 14.80002,28.860043" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 148.00022,87.939762 c 1.86534,-1.375687 19.93129,22.170108 43.43085,56.950128 7.14611,-15.93729 15.5595,-34.64514 24.11942,-53.515182 -0.0348,0.07673 4.64569,-10.225145 4.61089,-10.148412 -16.97017,-2.046756 -32.64607,-3.994748 -47.29774,-5.900042 -0.42109,10.969522 -0.76375,20.434469 -1.05269,29.604886 0,0 1e-5,-1e-5 1e-5,-1e-5 18.68223,-12.39543 31.66511,-19.054085 32.42935,-17.731371 0.75857,1.312916 -11.63678,9.343372 -34.17075,20.748681 0,0 -1e-5,0 -1e-5,0 -0.29378,-10.963789 -0.62675,-22.501857 -1.05269,-36.995212 16.92713,2.154857 35.83259,4.653001 56.3024,7.419976 -0.0328,0.07029 -5.30458,11.335975 -5.33742,11.406262 -9.98872,21.317364 -19.86305,42.235564 -28.09235,59.610344 -28.36777,-35.51878 -45.74038,-60.084853 -43.88927,-61.450048 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect58;#path-effect60" + inkscape:original-d="m 148.00022,87.939762 c 14.30695,19.486428 43.66006,59.200088 43.66006,59.200088 0,0 31.08004,-67.3401 31.08004,-67.3401 0,0 -51.80007,-6.660009 -51.80007,-6.660009 0,0 0,33.300049 0,33.300049 0,0 33.30005,-19.240027 33.30005,-19.240027" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Spiro_mm_1_0_2.svg b/testfiles/lpe_tests/Spiro_mm_1_0_2.svg new file mode 100644 index 0000000..6f04353 --- /dev/null +++ b/testfiles/lpe_tests/Spiro_mm_1_0_2.svg @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250mm" + height="250mm" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect60" + is_visible="true" + pattern="m -0.63412468,0.85439748 c 0,-2.75999998 2.23999998,-4.99999998 4.99999998,-4.99999998 2.76,0 5,2.24 5,4.99999998 0,2.76000002 -2.24,4.99999972 -5,4.99999972 -2.76,0 -4.99999998,-2.2399997 -4.99999998,-4.99999972 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + lpeversion="1" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect58" + lpeversion="1" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect54" + is_visible="true" + pattern="m -0.63412468,0.85439748 c 0,-2.75999998 2.23999998,-4.99999998 4.99999998,-4.99999998 2.76,0 5,2.24 5,4.99999998 0,2.76000002 -2.24,4.99999972 -5,4.99999972 -2.76,0 -4.99999998,-2.2399997 -4.99999998,-4.99999972 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + lpeversion="1" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect52" + lpeversion="1" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect48" + is_visible="true" + pattern="m -0.63412468,0.85439748 c 0,-2.75999998 2.23999998,-4.99999998 4.99999998,-4.99999998 2.76,0 5,2.24 5,4.99999998 0,2.76000002 -2.24,4.99999972 -5,4.99999972 -2.76,0 -4.99999998,-2.2399997 -4.99999998,-4.99999972 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + lpeversion="1" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + id="path-effect46" + lpeversion="1" + is_visible="true" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect42" + lpeversion="1" + is_visible="true" + pattern="m -0.63412468,0.85439748 c 0,-2.75999998 2.23999998,-4.99999998 4.99999998,-4.99999998 2.76,0 5,2.24 5,4.99999998 0,2.76000002 -2.24,4.99999972 -5,4.99999972 -2.76,0 -4.99999998,-2.2399997 -4.99999998,-4.99999972 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" /> + <inkscape:path-effect + effect="spiro" + lpeversion="1" + id="path-effect40" + is_visible="true" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 40.805935,31.254083 c -0.420754,-1.03505 21.588095,-14.484698 62.206345,-13.354756 18.38966,0.506 40.45345,4.544175 62.48026,15.748923 13.08527,6.639856 26.48925,16.001609 37.31563,28.875483 0,4e-6 2e-5,1.8e-5 2e-5,1.8e-5 9.88559,11.750487 17.52571,26.716092 19.69595,43.526389 2.01956,15.70293 -1.24465,32.9429 -11.0944,46.97559 -9.40521,13.34396 -25.01497,22.97444 -42.36918,23.82097 -4.14748,0.17115 -8.3024,-0.18556 -12.36531,-1.0366 -12.06968,-2.52821 -22.98564,-9.34768 -30.34951,-18.95373 -8.95891,-12.45154 -10.40734,-29.25908 -4.44017,-43.59722 -9.11675,7.18366 -16.0078,17.53373 -19.5577,28.87342 -4.983785,11.16063 -6.133064,23.57667 -3.941363,34.75983 0,0 1e-5,2e-5 1e-5,2e-5 2.613773,13.40965 9.986513,25.1228 19.304193,33.1116 10.72636,9.2159 23.98621,13.66057 35.97991,14.16522 15.17319,0.65167 28.41744,-4.70206 37.53053,-11.20097 10.33254,-7.35876 16.2633,-16.54391 19.41607,-22.47957 3.28268,-6.18023 4.39428,-9.86588 4.82897,-9.75441 0.43469,0.11148 0.18305,4.04021 -2.469,10.83394 -2.54633,6.52292 -8.03247,16.734 -18.79741,25.33709 -9.49784,7.58144 -23.70085,14.12495 -40.67327,13.99231 -13.43618,-0.11547 -28.40672,-4.60671 -40.90269,-14.81065 -10.84904,-8.87553 -19.511127,-21.96741 -22.818294,-37.43076 7e-6,0 -5e-6,-2e-5 -5e-6,-2e-5 -2.746852,-12.89898 -1.654996,-27.16646 3.993693,-40.26967 6.411216,-11.39384 16.852656,-21.43982 30.227336,-27.81728 -2.70398,12.99601 0.80589,28.68979 10.21856,40.24069 5.81762,7.61493 14.7742,13.15739 24.50869,15.21736 3.27178,0.69236 6.59692,0.9825 9.8779,0.83458 13.80635,-0.49189 26.92459,-8.62737 34.77766,-19.54209 8.35996,-11.5633 11.24825,-26.51365 9.70724,-40.12711 -1.65238,-14.663783 -8.41682,-28.234226 -17.1285,-39.026195 0,-4e-6 -1e-5,-9e-6 -1e-5,-1.3e-5 C 186.35731,56.266752 173.99805,47.300518 161.7997,40.699936 141.27361,29.620502 120.36383,25.08701 102.72518,23.856705 c -19.414179,-1.348 -35.296384,1.259314 -45.62564,3.570868 -10.501593,2.35012 -16.083228,4.344035 -16.293605,3.82651 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect40;#path-effect42" + inkscape:original-d="m 40.805935,31.254083 c 40.94699,1.973072 81.893725,3.946408 122.840185,5.92001 40.94646,1.973601 3.4536,89.786537 5.18001,134.680197 1.7264,44.89367 -45.88007,-59.94009 -45.88007,-59.94009 0,0 -19.23976,43.90647 -28.860046,65.8601 -9.620279,21.95363 80.907056,1.97307 121.360176,2.96" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 63.005968,68.254138 c -0.288529,0.950576 -8.82936,-1.930576 -20.716537,2.829913 -5.269897,2.104647 -11.153361,6.05355 -15.382565,12.256431 -3.376718,4.93848 -5.688536,11.405405 -5.663025,18.331178 2e-6,0 1e-6,1e-5 0,1e-5 0.01275,6.05691 1.856451,12.55275 5.662138,18.0085 4.066067,5.85763 10.581692,10.61627 18.058522,12.47214 7.592171,2.97699 16.192384,3.66056 23.678322,1.8489 0.248027,-0.06 0.494429,-0.12269 0.739133,-0.18799 -4.213983,5.64698 -9.945981,8.85764 -15.447369,9.36332 -6.625611,-0.91547 -12.431248,-4.5902 -16.105721,-9.82633 -3.815137,-5.50361 -4.999053,-12.23845 -3.646494,-18.40515 1.471193,-6.53262 5.635058,-11.89317 10.993164,-15.006957 3.537065,-1.998859 7.269119,-3.003629 10.7715,-3.38881 3.664338,-0.416772 7.169597,-0.315459 10.319221,-0.113103 7.43445,0.36473 12.716872,1.136992 17.899426,-0.374927 6.006601,-1.603062 10.470991,-5.79036 12.885679,-9.809727 2.764749,-4.571908 3.309888,-9.337639 3.404548,-12.279628 0.0991,-3.080772 -0.14725,-4.834618 0.29012,-4.977777 0.43736,-0.143158 1.57114,1.352487 2.35326,4.696784 0.78212,3.344297 1.15576,8.739321 -1.55512,14.861814 -2.383688,5.349794 -7.400388,11.239011 -15.297855,14.054381 -6.673684,2.25414 -13.145357,2.05784 -20.263304,1.9127 -3.002308,-0.0133 -6.06045,0.0242 -8.867246,0.50007 -2.664218,0.46554 -5.279246,1.23559 -7.359418,2.5904 -3.127244,1.95234 -5.647971,5.46731 -6.365616,9.28263 -0.709189,3.57962 0.141338,7.76459 2.389494,10.83317 2.112565,2.94563 5.726353,5.1539 9.452748,5.60339 4.484169,1.82365 9.462284,2.07491 13.237021,1.08579 -0.258881,0.19304 -0.519567,0.3826 -0.781988,0.56866 -7.941299,5.63064 -17.041005,7.77668 -25.181497,6.69311 -9.95171,-2.64184 -18.17122,-8.95295 -23.320664,-16.80875 -4.766657,-7.30028 -6.771326,-15.6314 -6.446185,-23.3888 0,0 3e-6,-10e-6 3e-6,-10e-6 0.382092,-8.855215 3.725627,-16.662881 8.303084,-22.47683 5.738163,-7.272118 13.155228,-11.284987 19.551363,-13.041155 14.433012,-3.950218 22.700387,1.342076 22.411858,2.292653 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect46;#path-effect48" + inkscape:original-d="M 63.005968,68.254138 C 49.686214,86.260566 36.366195,104.26726 23.045909,122.27422 c -13.3202837,18.00696 45.880066,11.84002 45.880066,11.84002 0,0 -14.306422,-20.22696 -21.460031,-30.34005 -7.153608,-10.113086 25.160303,-2.96027 37.740055,-4.440002 12.579755,-1.47974 10.360282,-20.226966 15.540031,-30.34005" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 145.14609,64.554131 c -1.5723,-0.02872 -4.29583,-11.038763 3.87169,-25.071656 3.89388,-6.6787 10.3726,-13.479161 19.56967,-17.804764 5.37421,-2.521624 11.46504,-4.077302 17.89136,-4.306205 2.90799,-0.103582 5.78129,0.06886 8.57728,0.497678 9.76897,1.507633 18.00867,6.017722 23.97106,11.561621 8.0951,7.54799 11.49317,16.40077 12.60812,22.413799 1.13383,6.114857 0.28168,9.668165 -0.64905,9.749531 -0.93072,0.08137 -1.87128,-3.207379 -4.23063,-8.217313 -2.32001,-4.926407 -6.36517,-11.864672 -13.41034,-17.339457 -5.19411,-4.052552 -12.07137,-7.31163 -19.72005,-8.340855 -2.20836,-0.299833 -4.48266,-0.41417 -6.78842,-0.331001 -5.08994,0.183594 -9.96378,1.313649 -14.29539,3.139607 -7.41629,3.116219 -13.1447,8.178816 -17.02771,13.270209 -8.18778,10.715754 -8.79529,20.807523 -10.36759,20.778806 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect52;#path-effect54" + inkscape:original-d="m 145.14609,64.554131 c 23.6803,-10.606945 47.36033,-21.213628 71.04011,-31.820046 23.67976,-10.606417 9.86694,19.239765 14.80002,28.860043" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 147.3661,83.794159 c 1.5563,-1.147771 19.80712,21.986331 43.43085,56.950131 7.14611,-15.93729 15.5595,-34.64514 24.11942,-53.515184 -0.0348,0.07673 4.64569,-10.225146 4.61089,-10.148413 -16.97017,-2.046757 -32.64607,-3.994748 -47.29774,-5.900042 -0.42109,10.969523 -0.76375,20.434471 -1.05269,29.604889 0,0 0,-1e-5 0,-1e-5 18.76272,-12.448827 31.75167,-18.904298 32.42936,-17.731374 0.67769,1.172924 -11.72291,9.386971 -34.17075,20.748684 0,0 -1e-5,0 -1e-5,0 -0.29378,-10.96379 -0.62675,-22.501859 -1.05269,-36.995215 16.92713,2.154857 35.83259,4.653001 56.3024,7.419976 -0.0328,0.07029 -5.30458,11.335976 -5.33742,11.406263 C 209.359,106.95122 199.48467,127.86943 191.25537,145.24421 163.026,109.89872 145.8098,84.94193 147.3661,83.794159 Z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect58;#path-effect60" + inkscape:original-d="m 147.3661,83.794159 c 14.30695,19.486431 43.66006,59.200091 43.66006,59.200091 0,0 31.08004,-67.340103 31.08004,-67.340103 0,0 -51.80007,-6.660009 -51.80007,-6.660009 0,0 0,33.300052 0,33.300052 0,0 33.30005,-19.24003 33.30005,-19.24003" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Spiro_px_1_0_2.svg b/testfiles/lpe_tests/Spiro_px_1_0_2.svg new file mode 100644 index 0000000..99c5fb3 --- /dev/null +++ b/testfiles/lpe_tests/Spiro_px_1_0_2.svg @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="250" + height="250" + viewBox="0 0 250 250" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <defs + id="defs2"> + <inkscape:path-effect + effect="skeletal" + id="path-effect60" + is_visible="true" + pattern="m -11.607038,-1.5988035 c 0,-2.76 2.2399995,-5 4.9999995,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,4.9999997 -5,4.9999997 -2.76,0 -4.9999995,-2.2399997 -4.9999995,-4.9999997 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect58" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect54" + is_visible="true" + pattern="m -11.607038,-1.5988035 c 0,-2.76 2.2399995,-5 4.9999995,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,4.9999997 -5,4.9999997 -2.76,0 -4.9999995,-2.2399997 -4.9999995,-4.9999997 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect52" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect48" + is_visible="true" + pattern="m -11.607038,-1.5988035 c 0,-2.76 2.2399995,-5 4.9999995,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,4.9999997 -5,4.9999997 -2.76,0 -4.9999995,-2.2399997 -4.9999995,-4.9999997 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect46" + is_visible="true" + lpeversion="1" /> + <inkscape:path-effect + effect="skeletal" + id="path-effect42" + is_visible="true" + pattern="m -11.607038,-1.5988035 c 0,-2.76 2.2399995,-5 4.9999995,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,4.9999997 -5,4.9999997 -2.76,0 -4.9999995,-2.2399997 -4.9999995,-4.9999997 z" + copytype="single_stretched" + prop_scale="1" + scale_y_rel="false" + spacing="0" + normal_offset="0" + tang_offset="0" + prop_units="false" + vertical_pattern="false" + fuse_tolerance="0" + lpeversion="1" + hide_knot="false" /> + <inkscape:path-effect + effect="spiro" + id="path-effect40" + is_visible="true" + lpeversion="1" /> + </defs> + <g id="t" transform="scale(0.445)"> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 29.833021,28.800882 c -0.420754,-1.03505 21.588094,-14.484699 62.206348,-13.354756 18.389651,0.505999 40.453451,4.544174 62.480261,15.748923 13.08527,6.639856 26.48925,16.001609 37.31563,28.875484 0,3e-6 2e-5,1.7e-5 2e-5,1.7e-5 9.88559,11.750487 17.52571,26.716093 19.69595,43.52639 2.01956,15.70293 -1.24465,32.9429 -11.0944,46.97559 -9.40521,13.34396 -25.01497,22.97444 -42.36918,23.82097 -4.14747,0.17115 -8.30239,-0.18556 -12.3653,-1.0366 -12.06968,-2.52821 -22.98565,-9.34768 -30.34952,-18.95373 -8.95891,-12.45154 -10.40734,-29.25908 -4.44017,-43.59722 -9.11675,7.18366 -16.007803,17.53373 -19.557705,28.87342 -4.983782,11.16063 -6.133063,23.57667 -3.941362,34.75983 0,0 10e-6,2e-5 10e-6,2e-5 2.61377,13.40965 9.986516,25.1228 19.304187,33.11161 10.72637,9.21589 23.98622,13.66056 35.97992,14.16521 15.17319,0.65167 28.41744,-4.70205 37.53053,-11.20097 10.33254,-7.35876 16.2633,-16.54391 19.41608,-22.47957 3.28267,-6.18023 4.39427,-9.86588 4.82896,-9.75441 0.43469,0.11148 0.18305,4.04021 -2.469,10.83394 -2.54633,6.52292 -8.03247,16.734 -18.79741,25.33709 -9.49784,7.58145 -23.70086,14.12496 -40.67327,13.99231 -13.43618,-0.11546 -28.40673,-4.60671 -40.90269,-14.81065 -10.849043,-8.87553 -19.511132,-21.96741 -22.818298,-37.43076 7e-6,0 -5e-6,-2e-5 -5e-6,-2e-5 -2.746851,-12.89898 -1.654995,-27.16646 3.993695,-40.26967 6.411219,-11.39384 16.852662,-21.43982 30.227338,-27.81728 -2.70398,12.99601 0.80589,28.68979 10.21856,40.24069 5.81763,7.61493 14.77421,13.1574 24.5087,15.21737 3.27177,0.69235 6.59691,0.98249 9.87789,0.83457 13.80635,-0.49189 26.92459,-8.62737 34.77766,-19.54209 8.35996,-11.5633 11.24825,-26.51365 9.70724,-40.12711 -1.65238,-14.663784 -8.41682,-28.234227 -17.1285,-39.026195 0,0 -1e-5,-1.4e-5 -1e-5,-1.4e-5 C 175.3844,53.813552 163.02514,44.847317 150.82679,38.246735 130.3007,27.1673 109.39092,22.633809 91.752267,21.403504 72.338088,20.055503 56.455882,22.662817 46.126626,24.974372 c -10.501593,2.35012 -16.083228,4.344035 -16.293605,3.82651 z" + id="path04" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect40;#path-effect42" + inkscape:original-d="m 29.833021,28.800882 c 40.94699,1.973072 81.893729,3.946408 122.840189,5.92001 40.94646,1.973601 3.4536,89.786538 5.18001,134.680198 1.7264,44.89367 -45.88007,-59.94009 -45.88007,-59.94009 0,0 -19.239764,43.90647 -28.86005,65.8601 -9.620279,21.95363 80.90706,1.97307 121.36018,2.96" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 52.033054,65.800937 c -0.288529,0.950576 -8.829359,-1.930576 -20.716537,2.829914 -5.269898,2.104646 -11.153361,6.053549 -15.382565,12.256431 -3.376718,4.93848 -5.688537,11.405405 -5.663025,18.331178 3e-6,1e-6 0,8e-6 0,8e-6 0.01275,6.056912 1.856451,12.552752 5.662138,18.008502 4.066067,5.85763 10.581692,10.61626 18.058522,12.47214 7.592168,2.97699 16.192378,3.66056 23.678314,1.8489 0.248029,-0.06 0.494434,-0.12269 0.739141,-0.18799 -4.213983,5.64698 -9.945981,8.85764 -15.447369,9.36332 -6.625611,-0.91547 -12.431247,-4.5902 -16.10572,-9.82633 -3.815137,-5.50361 -4.999053,-12.23845 -3.646495,-18.40515 1.471194,-6.53262 5.635058,-11.89317 10.993164,-15.006957 3.537065,-1.998859 7.269118,-3.00363 10.7715,-3.388811 3.664337,-0.416771 7.169596,-0.315459 10.319221,-0.113102 7.43445,0.364729 12.716872,1.136992 17.899426,-0.374928 6.006601,-1.603062 10.470991,-5.79036 12.885679,-9.809727 2.764749,-4.571907 3.309888,-9.337638 3.404552,-12.279626 0.09913,-3.080772 -0.147251,-4.834618 0.290115,-4.977776 0.437366,-0.143158 1.571143,1.352487 2.353261,4.696783 0.782119,3.344297 1.155757,8.73932 -1.555123,14.861812 -2.383685,5.349794 -7.400385,11.239011 -15.297852,14.054382 -6.673684,2.25414 -13.145357,2.05784 -20.263304,1.9127 -3.002308,-0.0133 -6.06045,0.0242 -8.867246,0.50007 -2.664218,0.46554 -5.279246,1.23559 -7.359418,2.5904 -3.127244,1.95234 -5.64797,5.46731 -6.365615,9.28263 -0.70919,3.57962 0.141337,7.76459 2.389493,10.83317 2.112565,2.94562 5.726353,5.1539 9.452748,5.60339 4.484169,1.82365 9.462284,2.07491 13.237021,1.08579 -0.258884,0.19304 -0.519573,0.3826 -0.781997,0.56867 -7.941297,5.63063 -17.040999,7.77667 -25.181488,6.6931 -9.95171,-2.64184 -18.17122,-8.95295 -23.3206641,-16.80875 -4.7666569,-7.30028 -6.7713262,-15.6314 -6.4461853,-23.388801 0,0 3.4e-6,-1e-5 3.4e-6,-1e-5 0.382091,-8.855215 3.725626,-16.66288 8.303083,-22.476829 5.738163,-7.272119 13.155229,-11.284988 19.551363,-13.041156 14.433013,-3.950218 22.700388,1.342076 22.411859,2.292653 z" + id="path03" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect46;#path-effect48" + inkscape:original-d="M 52.033054,65.800937 C 38.7133,83.807365 25.393281,101.81406 12.072995,119.82102 c -13.3202835,18.00696 45.880066,11.84002 45.880066,11.84002 0,0 -14.306422,-20.22696 -21.460031,-30.34005 -7.153608,-10.113087 25.160303,-2.960271 37.740055,-4.440003 12.579755,-1.47974 10.360282,-20.226966 15.540031,-30.34005" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 134.17318,62.10093 c -1.5723,-0.02872 -4.29583,-11.038763 3.87169,-25.071657 3.89388,-6.678699 10.3726,-13.47916 19.56967,-17.804763 5.3742,-2.521623 11.46503,-4.077301 17.89135,-4.306205 2.90799,-0.103582 5.7813,0.06886 8.57729,0.497678 9.76897,1.507633 18.00867,6.017723 23.97106,11.561621 8.09509,7.547989 11.49317,16.400767 12.60812,22.413795 1.13383,6.114855 0.28167,9.668163 -0.64905,9.749529 -0.93073,0.08136 -1.87128,-3.207378 -4.23063,-8.217311 -2.32001,-4.926406 -6.36517,-11.864669 -13.41034,-17.339453 -5.19411,-4.052552 -12.07137,-7.31163 -19.72005,-8.340855 -2.20836,-0.299833 -4.48266,-0.41417 -6.78842,-0.331001 -5.08994,0.183595 -9.96378,1.31365 -14.29539,3.139607 -7.41629,3.116219 -13.1447,8.178816 -17.02771,13.270209 -8.18778,10.715755 -8.79529,20.807523 -10.36759,20.778806 z" + id="path02" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect52;#path-effect54" + inkscape:original-d="m 134.17318,62.10093 c 23.6803,-10.606945 47.36033,-21.213628 71.04011,-31.820046 23.67976,-10.606417 9.86694,19.239765 14.80002,28.860043" /> + <path + style="fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 136.39319,81.340958 c 1.5563,-1.147771 19.80712,21.986322 43.43085,56.950132 7.14611,-15.93729 15.5595,-34.64514 24.11942,-53.515177 -0.0348,0.07673 4.64569,-10.225154 4.61089,-10.148421 -16.97017,-2.046757 -32.64607,-3.994748 -47.29774,-5.900043 -0.42109,10.969524 -0.76375,20.434472 -1.05269,29.604886 0,0 0,-3e-6 0,-3e-6 18.76272,-12.448829 31.75166,-18.904298 32.42935,-17.731375 0.67769,1.172924 -11.72291,9.38697 -34.17074,20.748683 0,0 -10e-6,0 -10e-6,0 -0.29378,-10.963791 -0.62675,-22.50186 -1.05269,-36.995216 16.92713,2.154857 35.83259,4.653001 56.3024,7.419976 -0.0328,0.07029 -5.30458,11.335985 -5.33743,11.406272 -9.98872,21.317358 -19.86304,42.235558 -28.09234,59.610338 -28.22937,-35.3455 -45.44557,-60.302281 -43.88927,-61.450052 z" + id="path01" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect58;#path-effect60" + inkscape:original-d="m 136.39319,81.340958 c 14.30695,19.486432 43.66006,59.200092 43.66006,59.200092 0,0 31.08004,-67.340104 31.08004,-67.340104 0,0 -51.80007,-6.660009 -51.80007,-6.660009 0,0 0,33.300052 0,33.300052 0,0 33.30005,-19.24003 33.30005,-19.24003" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/StitchSubPaths_multi_mm_1_0_2.svg b/testfiles/lpe_tests/StitchSubPaths_multi_mm_1_0_2.svg new file mode 100644 index 0000000..0a6cca7 --- /dev/null +++ b/testfiles/lpe_tests/StitchSubPaths_multi_mm_1_0_2.svg @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + scale_y_rel="false" + prop_scale="1.13" + strokepath="M -50.648807,99.69642 H 189.74404" + endpoint_spacing_variation="0.8;1" + endpoint_edge_variation="1;1" + startpoint_spacing_variation="2.4;1" + startpoint_edge_variation="0.7;1" + count="37" + is_visible="true" + id="path-effect25" + lpeversion="1" + effect="curvestitching" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect21" + is_visible="true" + count="37" + startpoint_edge_variation="0.7;1" + startpoint_spacing_variation="2.4;1" + endpoint_edge_variation="1;1" + endpoint_spacing_variation="0.8;1" + strokepath="M 0.01098622,16.036003 190.51099,0.16100278 68.046706,127.161 248.71933,109.01815 127.01099,207.29196" + prop_scale="1.13" + lpeversion="1" + scale_y_rel="false" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect12" + is_visible="true" + count="5" + startpoint_edge_variation="0;1" + startpoint_spacing_variation="0;1" + endpoint_edge_variation="0;1" + endpoint_spacing_variation="0;1" + strokepath="M 0,0 H 1" + prop_scale="1" + lpeversion="1" + scale_y_rel="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-117.14286" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:connector-curvature="0" + inkscape:original-d="M 176.20256,72.406433 A 58.964287,52.916664 0 0 1 117.23828,125.32309 58.964287,52.916664 0 0 1 58.273986,72.406433 58.964287,52.916664 0 0 1 117.23828,19.489765 58.964287,52.916664 0 0 1 176.20256,72.406433 Z m 50.6488,-11.3393 A 120.19643,92.226196 0 0 1 106.65495,153.29332 120.19643,92.226196 0 0 1 -13.541484,61.067133 120.19643,92.226196 0 0 1 106.65495,-31.159069 120.19643,92.226196 0 0 1 226.85136,61.067133 Z" + inkscape:path-effect="#path-effect25" + d="M 181.60378,71.197203 233.74455,59.52388 m -44.15192,24.800987 49.30494,-3.865879 m -60.26681,20.407062 47.8536,1.9921 m -73.62355,1.2328 33.57127,7.75868 m -19.81139,-10.27434 30.93731,20.19616 m -38.99095,-3.64176 24.92377,22.01039 m -39.65525,-13.14768 18.3101,23.80696 m -30.04198,-17.63792 9.7449,25.14005 m -26.79569,-37.60529 2.20739,24.52415 m 7.32162,-24.06825 -11.51215,25.70644 m -2.31584,-19.93919 -21.608368,28.00071 M 99.12004,118.55419 73.488744,143.49123 M 91.230272,121.19152 52.531546,145.20685 M 67.568268,118.9927 21.959949,140.99618 M 60.147841,103.43728 6.568185,124.67954 M 73.858423,93.774814 19.948622,106.12947 M 83.837254,95.002542 32.878829,97.705954 M 83.913412,92.991976 31.116263,88.632512 M 54.626269,81.479361 -19.602502,66.201973 M 68.302205,62.927883 2.8511211,45.041589 M 75.495313,63.769333 20.200453,39.106319 M 81.401538,62.718829 37.234272,35.029349 M 78.478861,55.161376 35.517754,18.8915 M 89.319342,51.429452 59.050027,19.176404 M 83.039673,37.372542 51.244705,-9.6158712 M 85.834258,7.6847055 58.992135,-41.622695 M 119.52566,22.380256 96.860692,-26.363701 M 112.99078,7.6024972 102.89393,-44.174283 m 31.69968,64.933711 -4.48102,-51.71681 m 4.81732,69.893458 4.83121,-34.5707904 m -3.17728,14.5606694 19.96063,-46.577078 m 0.39877,57.810996 24.00937,-45.543308 M 157.63796,44.731441 186.28015,8.1877321 M 155.99535,47.734187 190.07296,19.782292 M 165.19969,49.30317 209.39472,24.807262 m -43.38839,38.55989 43.68141,-16.867371 m -17.84017,17.253137 50.58655,-9.19928" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + id="path23" /> + <path + id="path16" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.861994" + d="m -119.48145,153.56084 36.018478,-26.44668 5.678838,145.7912 33.398331,-28.48619 -1.254433,114.07927 M -95.298835,164.8184 -58.772301,144.88024 -75.134253,289.48341 -40.680185,267.0908 -58.6444,379.27261 m -33.446973,-197.47957 37.144182,-14.59925 -35.961966,140.80884 35.547375,-17.31954 -32.849079,108.49754 m -7.887847,-211.13701 29.468386,-9.50082 -58.711968,131.95155 28.999232,-12.33666 -48.835352,101.02984 m 95.57253,-194.83504 32.656122,3.76404 -105.204712,99.20015 33.197134,0.88412 -84.408334,74.27602 m 128.949247,-146.58365 29.173772,7.7886 -121.891249,77.33989 30.39461,5.21044 -96.46416,57.16162 m 156.711049,-116.65274 25.193228,12.75283 -137.033727,44.8709 27.08724,10.69237 -107.27825,31.89753 m 187.252391,-60.75039 19.244473,19.18479 -144.062664,-3.63823 21.73221,17.96529 -111.66726,-5.69595 m 199.30396,-10.04769 12.576655,23.44698 -136.039205,-47.4134 15.3096,23.09214 -104.58737,-39.38354 m 203.13763,78.71603 -1.864125,30.88697 -101.533545,-102.70718 0.94717,31.48329 -76.32895,-82.25164 m 147.68289,143.34034 -14.04159,34.25573 -73.54257,-124.98021 -11.13497,35.20969 -53.33452,-99.57664 m 130.55507,155.51704 -19.17372,31.97542 -54.24316,-134.51496 -16.42522,33.33775 -37.98216,-106.42071 m 101.99379,185.21608 -33.1039,31.12589 -23.82187,-144.04136 -30.20411,32.79827 -12.88428,-113.47853 m 62.38797,192.68947 -40.36575,27.97589 -4.41397,-146.4222 -37.4809,29.92721 2.87748,-114.79061 m 64.5864,190.00917 -47.43405,24.72564 12.26889,-146.60866 -44.5054,26.90477 16.55322,-114.43142 m 65.32582,204.57336 -47.97832,17.52156 31.99264,-143.23679 -45.53363,20.10561 31.52017,-110.77909 m 24.76311,218.65109 -46.40017,10.24701 52.12558,-136.6682 -44.5958,13.15633 46.46945,-104.70371 m -22.15596,213.50456 -48.21535,3.28264 71.54783,-127.70363 -46.79982,6.43264 61.40436,-96.86807 m -81.11501,191.33001 -64.47267,-11.25244 98.90466,-111.58027 -62.66526,-7.53179 84.54775,-82.46615 m -50.64999,194.02248 -57.74522,-13.63669 104.86874,-104.49673 -56.5568,-9.93975 88.01349,-76.75433 m -82.80702,200.18714 -52.7626,-19.55174 116.83804,-90.10808 -52.23221,-15.82944 96.27902,-64.98715 m -110.72436,183.73803 -47.09057,-22.91596 125.17856,-76.97992 -47.1696,-19.30993 101.7003,-54.56342 m -142.66416,156.14571 -48.98332,-34.70849 136.48367,-57.6521 -49.23132,-30.80457 110.52206,-38.16527 m -142.63102,153.80436 -40.85665,-32.14681 138.6522,-48.52444 -41.71928,-28.6598 110.90854,-31.67166 m -179.95757,109.36236 -43.89506,-52.61797 148.1605,-21.23809 -44.80062,-48.44826 118.55064,-7.93336 m -179.79024,78.60197 -39.69883,-56.95214 149.61513,-8.31836 -40.9306,-52.826655 119.002911,2.482262 m -154.723051,138.299083 -35.31215,-53.13017 148.7232,-5.04309 -36.82117,-49.35335 117.655211,4.36591 m -204.543051,64.87934 -26.05607,-57.32235 147.47832,18.72908 -28.16696,-53.88632 115.292278,22.94879 m -187.472518,81.84745 -21.79737,-52.84613 145.64851,24.47708 -24.15194,-49.86899 113.256543,26.5977 m -212.113453,59.08441 -14.71897,-36.18077 140.89655,35.22511 -17.43337,-34.63054 108.582142,32.14488 m -212.029242,-42.89655 -3.00497,-50.61177 127.92335,71.83369 -6.17982,-49.03945 96.991168,61.98863 m -192.605278,-30.22828 -0.34135,-46.80611 122.48597,79.77941 -3.555152,-45.70477 92.4785351,67.39904 m -201.4172231,-55.23245 4.56648,-40.43542 108.248813,97.10119 1.39239,-40.22877 80.9805761,79.48999 M -191.66096,156.17837 l 11.41591,-36.02901 84.478286,117.96552 8.400333,-36.67598 61.990269,94.5562 m -141.469958,-151.31287 22.14833,-35.17159 56.151919,134.24993 19.145395,-36.30773 38.964995,106.71229 M -151.3753,151.15477 l 25.70147,-30.1633 34.304291,141.189 23.032284,-31.8263 21.932641,111.17814 m -59.358156,-196.20158 35.416235,-24.84841 1.413642,145.71775 32.950114,-26.99559 -4.38026,113.77804" + inkscape:path-effect="#path-effect21" + inkscape:original-d="m -103.23416,251.46659 c 0,29.22507 -26.39921,52.91666 -58.96429,52.91666 -32.56508,0 -58.96429,-23.69159 -58.96429,-52.91666 0,-29.22507 26.39921,-52.91667 58.96429,-52.91667 32.56508,0 58.96429,23.6916 58.96429,52.91667 z m 50.648796,-11.3393 c -4e-6,50.93512 -53.813766,92.22618 -120.196416,92.22619 -66.38265,0 -120.19643,-41.29107 -120.19643,-92.22619 0,-50.93512 24.39959,-121.52378 90.78225,-121.52378 66.38265,0 149.610599,70.58866 149.610596,121.52378 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssss" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -362.13133,-75.043974 c 63.5,-5.291667 26.46322,128.40225 190.5,-15.875 -0.5272,65.244843 -35.49193,110.908322 -122.46428,126.999999 58.47397,8.359857 112.26995,55.22788 180.67262,-18.142857 l -121.70834,98.273812" + id="path27" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/StitchSubPaths_multi_px_1_0_2.svg b/testfiles/lpe_tests/StitchSubPaths_multi_px_1_0_2.svg new file mode 100644 index 0000000..e466d32 --- /dev/null +++ b/testfiles/lpe_tests/StitchSubPaths_multi_px_1_0_2.svg @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + scale_y_rel="false" + prop_scale="1.13" + strokepath="M -50.648807,99.69642 H 189.74404" + endpoint_spacing_variation="0.8;1" + endpoint_edge_variation="1;1" + startpoint_spacing_variation="2.4;1" + startpoint_edge_variation="0.7;1" + count="37" + is_visible="true" + id="path-effect25" + effect="curvestitching" + lpeversion="1" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect21" + is_visible="true" + count="37" + startpoint_edge_variation="0.7;1" + startpoint_spacing_variation="2.4;1" + endpoint_edge_variation="1;1" + endpoint_spacing_variation="0.8;1" + strokepath="M 0.01098622,16.036003 190.51099,0.16100278 68.046706,127.161 248.71933,109.01815 127.01099,207.29196" + prop_scale="1.13" + scale_y_rel="false" + lpeversion="1" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect12" + is_visible="true" + count="5" + startpoint_edge_variation="0;1" + startpoint_spacing_variation="0;1" + endpoint_edge_variation="0;1" + endpoint_spacing_variation="0;1" + strokepath="M 0,0 H 1" + prop_scale="1" + scale_y_rel="false" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-117.14286" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:connector-curvature="0" + inkscape:original-d="M 1297.5682,413.22492 A 181.78616,163.14141 0 0 1 1115.782,576.36631 181.78616,163.14141 0 0 1 933.99585,413.22492 181.78616,163.14141 0 0 1 1115.782,250.0835 181.78616,163.14141 0 0 1 1297.5682,413.22492 Z M 1453.7178,378.266 A 370.56408,284.3322 0 0 1 1083.1538,662.59818 370.56408,284.3322 0 0 1 712.58966,378.266 370.56408,284.3322 0 0 1 1083.1538,93.933782 370.56408,284.3322 0 0 1 1453.7178,378.266 Z" + inkscape:path-effect="#path-effect25" + d="m 1314.2201,409.49688 160.7493,-35.98871 m -136.1198,76.46113 152.0065,-11.91847 m -185.8018,62.91475 147.532,6.14157 m -226.9804,3.80075 103.4998,23.91989 m -61.0783,-31.67564 95.3794,62.26448 m -120.232,-11.2305 76.7178,67.84193 m -122.1975,-40.52884 56.0847,73.33906 m -92.2626,-54.32579 29.7745,77.45152 m -82.2385,-115.86041 6.7593,75.59736 m 22.6107,-74.19357 -35.4971,79.25143 m -7.1292,-61.47259 -66.5238,86.30496 m 30.6116,-112.08576 -78.7121,76.82086 m 54.4385,-68.69932 -118.95421,73.98459 m 46.02228,-80.76553 -140.49975,67.82221 m 117.5935,-115.77561 -165.18543,65.48962 m 207.45499,-95.27887 -166.20325,38.08925 m 196.96787,-34.30418 -157.1042,8.33458 m 157.339,-14.53313 -162.77297,-13.44018 m 72.48105,-22.05307 -228.84636,-47.1 M 964.91272,384.00267 763.12785,328.85946 M 987.08899,386.59685 816.61562,310.5611 m 188.68218,72.79705 -136.16713,-85.3663 M 996.28723,360.05862 863.83866,248.23907 M 1029.6869,348.55043 936.41117,249.1203 M 1010.3198,305.21192 912.53936,160.3811 M 1019.0721,213.70938 936.6537,61.759511 m 186.1771,197.234609 -69.8212,-150.2648 m 49.6776,104.70592 -31.1277,-159.626996 M 1169.2844,253.9987 1155.2872,94.595471 m 15.1456,215.419749 14.6662,-106.53675 m -9.6999,44.87094 61.1638,-143.53477 m 1.6241,178.1653 73.9189,-140.39634 m -71.7721,185.31966 88.3035,-112.66377 m -93.3677,121.9212 105.0609,-86.17532 m -76.684,91.01247 136.2527,-75.52055 m -133.7659,118.87964 134.6693,-52.00189 m -55.001,53.1912 155.9576,-28.36126" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.65752" + id="path23" /> + <path + id="path16" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.65752" + d="m 431.07165,864.84056 119.20801,-45.07122 -47.80015,157.76412 112.29634,-46.14994 -54.4033,125.97828 m -88.70032,-153.01048 114.47707,-24.28006 -66.32413,147.38624 108.37941,-26.5103 -67.65361,114.9497 m -109.02694,-159.78981 110.97258,-7.92245 -83.29045,136.52876 105.56366,-10.9875 -79.91715,104.2409 m -108.96361,-211.38704 79.57033,6.31608 -90.89592,121.79126 76.5159,2.6641 -80.82648,90.9304 m 89.54102,-209.2282 76.74597,40.2706 -133.52025,75.7548 75.01177,35.5068 -112.55577,50.9699 m 80.6874,-135.3998 60.61664,47.3521 -142.22967,51.7492 60.21873,42.7372 -116.6471,31.7664 m 103.96277,-124.0728 43.21786,54.4089 -148.81527,17.6474 44.18716,50.2112 -118.94058,4.9485 m 148.5335,-75.0817 21.91903,61.6474 -145.79953,-31.2051 24.26924,58.2445 -113.38921,-33.0281 m 171.26086,-65.2576 2.54572,63.1307 -129.59027,-72.9262 5.79611,60.7287 -98.17836,-64.7384 m 229.27301,53.3651 -34.81957,71.7655 -80.35805,-128.9736 -30.30793,70.2526 -55.28174,-108.359 m 136.51746,127.7915 -66.49312,76.4515 -39.9296,-152.0211 -60.87788,75.2265 -19.9037,-126.4709 m 145.92313,110.9209 -77.69818,66.31 -16.76474,-156.5027 -71.926745,65.8989 -0.700527,-128.2929 M 206.75917,1208.2407 92.094875,1269.0868 120.64885,1105.9599 13.093289,1166.9446 52.27491,1034.4935 m 61.48635,164.0778 -133.043413,49.8855 55.16445,-160.5069 -125.377581,50.7065 62.088162,-128.7884 m 114.35766,144.2778 -151.30833,39.1028 79.13298,-155.8633 -143.023408,40.5406 82.983574,-123.6261 m 169.162006,183.0857 -147.471203,16.4992 96.09195,-142.5783 -139.89763,19.136 95.190404,-110.12497 M 140.80128,1147.3302 4.1602908,1141.9592 114.43967,1015.3556 -15.745422,1013.6989 88.484924,918.99179 M 124.4261,1140.5837 -12.630803,1115.0071 116.17948,1005.9044 -14.882758,984.96526 103.39469,906.57166 M 17.995983,1078.464 -164.42292,1010.0428 10.376256,935.24869 -164.15262,873.49635 -4.1960375,827.58099 M 51.564133,1028.9352 -107.17531,954.92711 62.597702,889.22827 -89.742761,822.03182 62.779289,783.83884 M 62.175407,1031.1018 -76.885652,941.87891 95.419661,896.55107 -38.658837,814.64489 112.74753,794.16356 M 72.844219,1027.3972 -45.338096,930.91714 125.54065,901.2267 10.946787,812.14773 158.06557,804.58229 M 57.777263,991.54093 -63.4418,862.01362 119.47162,865.3066 1.7311918,744.57492 158.3982,766.9809 M 88.520668,985.4015 -5.6457773,866.71449 167.26446,873.80265 74.985824,763.06756 219.94393,786.67009 M 60.313446,909.93806 -41.0567,732.08842 144.05627,791.36557 44.745437,624.14577 200.01945,696.22845 M 61.335622,766.53086 -25.912532,578.11957 154.27974,654.33753 68.252499,476.83264 217.64149,563.32297 m -50.7407,282.14741 -73.127136,-174.83472 173.040796,73.22116 -72.6856,-164.78017 141.8208,82.14092 M 142.54241,760.42943 99.308544,578.6674 257.83663,677.44323 213.37785,505.53542 339.65003,608.02493 M 208.91605,811.89881 178.9844,646.28646 329.86209,743.25611 297.99549,586.4382 416.44894,685.081 M 211.1976,868.41295 203.03148,760.256 339.71549,841.75151 328.49692,738.85782 432.89253,816.98749 m -213.87611,-48.68917 26.40702,-144.90934 109.01565,132.45355 21.71488,-138.47246 78.20017,122.2343 M 284.48312,796.70673 318.04736,666.47246 418.7369,799.8842 447.33823,675.0551 518.15489,795.75542 m -221.21912,32.66765 45.53746,-104.50546 81.91269,138.28538 40.24972,-100.99351 54.80646,120.42084 m -212.31379,-61.97024 61.14946,-84.18592 52.50026,148.92978 55.56844,-82.34876 30.21117,125.32783 m -156.28497,-116.98249 88.08871,-76.68142 13.70735,160.96906 81.68553,-75.67709 -3.20457,133.2583 M 367.36626,846.2954 l 93.52968,-58.41136 -9.35822,159.37293 87.36297,-58.61777 -21.44632,129.244 M 466.14215,840.92628 582.14498,801.08427 531.72577,956.44583 641.10595,915.22998 585.21929,1038.5911" + inkscape:path-effect="#path-effect21" + inkscape:original-d="m 436.06827,965.26513 c 0,90.10057 -81.38843,163.14137 -181.78616,163.14137 -100.39773,0 -181.786166,-73.0408 -181.786166,-163.14137 0,-90.10052 81.388436,-163.14142 181.786166,-163.14142 100.39773,0 181.78616,73.0409 181.78616,163.14142 z m 156.1496,-34.95892 c -10e-6,157.03229 -165.90716,284.33219 -370.56404,284.33219 -204.65687,0 -370.56408,-127.2999 -370.56408,-284.33219 0,-157.03233 75.223632,-374.65628 279.88054,-374.65628 204.65687,0 461.24759,217.62395 461.24758,374.65628 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssss" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.815706px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M -362.10845,-41.362828 C -166.33874,-57.676971 -280.52267,354.49969 225.20066,-90.305254 223.57531,110.84378 115.77948,251.62371 -152.35518,301.23415 27.919337,327.00748 193.77167,471.501 404.65624,245.29995 L 29.430957,548.27687" + id="path27" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/StitchSubPaths_path_0_92_5.svg b/testfiles/lpe_tests/StitchSubPaths_path_0_92_5.svg new file mode 100644 index 0000000..537330f --- /dev/null +++ b/testfiles/lpe_tests/StitchSubPaths_path_0_92_5.svg @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + scale_y_rel="false" + prop_scale="1.13" + strokepath="M -50.648807,99.69642 H 189.74404" + endpoint_spacing_variation="0.8;1" + endpoint_edge_variation="1;1" + startpoint_spacing_variation="2.4;1" + startpoint_edge_variation="0.7;1" + count="37" + is_visible="true" + id="path-effect25" + effect="curvestitching" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect21" + is_visible="true" + count="37" + startpoint_edge_variation="0.7;1" + startpoint_spacing_variation="2.4;1" + endpoint_edge_variation="1;1" + endpoint_spacing_variation="0.8;1" + strokepath="M 0.01098622,16.036003 190.51099,0.16100278 68.046706,127.161 248.71933,109.01815 127.01099,207.29196" + prop_scale="1.13" + scale_y_rel="false" /> + <inkscape:path-effect + effect="curvestitching" + id="path-effect12" + is_visible="true" + count="5" + startpoint_edge_variation="0;1" + startpoint_spacing_variation="0;1" + endpoint_edge_variation="0;1" + endpoint_spacing_variation="0;1" + strokepath="M 0,0 H 1" + prop_scale="1" + scale_y_rel="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-94.285714" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:connector-curvature="0" + inkscape:original-d="M 139.09524,111.03572 A 58.964287,52.916664 0 0 1 80.130952,163.95238 58.964287,52.916664 0 0 1 21.166663,111.03572 58.964287,52.916664 0 0 1 80.130952,58.119052 58.964287,52.916664 0 0 1 139.09524,111.03572 Z m 50.6488,-11.3393 A 120.19643,92.226196 0 0 1 69.547622,191.92261 120.19643,92.226196 0 0 1 -50.648807,99.69642 120.19643,92.226196 0 0 1 69.547622,7.470218 120.19643,92.226196 0 0 1 189.74404,99.69642 Z" + inkscape:path-effect="#path-effect25" + d="m 144.49646,109.82649 52.14077,-11.673323 m -44.15192,24.800983 49.30494,-3.86587 m -60.26681,20.40706 47.8536,1.9921 m -73.62355,1.2328 33.57127,7.75868 m -19.81139,-10.27434 30.93731,20.19616 m -38.99095,-3.64176 24.92377,22.01039 m -39.65525,-13.14768 18.3101,23.80696 m -30.041978,-17.63792 9.744898,25.14005 m -26.795685,-37.60529 2.207386,24.52415 m 7.321623,-24.06825 -11.51215,25.70644 m -2.315843,-19.93919 -21.608369,28.00071 m 9.974487,-36.36587 -25.631296,24.93704 m 17.741528,-22.29971 -38.698726,24.01533 m 15.036721,-26.21415 -45.608319,22.00348 m 38.187892,-37.5589 -53.579656,21.24227 M 36.7511,132.40411 -17.1587,144.75876 m 63.888632,-11.12693 -50.9584256,2.70341 M 46.806089,131.62127 -5.9910593,127.2618 M 17.518946,120.10865 -56.709825,104.83126 M 31.194881,101.55717 -34.256203,83.670878 M 38.387989,102.39862 -16.906871,77.735608 M 44.294214,101.34812 0.12694771,73.658638 M 41.371537,93.790665 -1.5895704,57.520789 M 52.212018,90.05874 21.942703,57.805692 M 45.932349,76.00183 14.137381,29.013416 M 48.726934,46.313993 21.884811,-2.9934074 M 82.418341,61.009543 59.753369,12.265586 M 75.883462,46.231784 65.786604,-5.5449964 M 97.48629,59.388715 93.005272,7.6719049 m 4.817316,69.8934571 4.831202,-34.57079 M 99.476513,57.555241 119.43715,10.978163 m 0.39877,57.810996 24.00937,-45.543308 m -23.31465,60.114876 28.64218,-36.543709 m -30.2848,39.546455 34.07762,-27.951895 M 128.09237,87.932456 172.2874,63.436548 m -43.38839,38.559892 43.68141,-16.867372 m -17.84017,17.253142 50.58655,-9.199285" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + id="path23" /> + <path + id="path16" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.86199427" + d="m -104.69371,218.74902 36.01848,-26.44668 5.678833,145.7912 33.398335,-28.48619 -1.254437,114.07927 m -51.949505,-193.90046 36.363259,-20.84496 -13.059976,144.97445 34.214722,-23.24704 -15.447482,112.60144 m -41.165295,-197.16015 37.399943,-16.39737 -29.532162,142.4049 35.615661,-19.03653 -28.036583,109.97845 m -23.025577,-211.26549 29.753528,-11.53523 -48.845444,136.00402 29.004051,-14.33866 -41.434081,104.40066 m 77.135928,-203.47593 33.502717,0.44808 -93.682005,110.22594 33.68113,-2.49584 -75.84368,83.10589 m 105.713201,-166.02853 30.9649229,3.4129 -107.2674939,96.73097 31.676431,0.62233 -85.704771,72.4668 m 128.553647,-150.5068 28.244292,7.29878 -122.772179,75.76817 29.55214,4.79574 -96.98594,56.05096 m 164.075783,-113.14772 24.190311,12.77276 -138.607464,39.48867 26.1947,10.85317 -108.31151,27.83311 m 185.782469,-76.48264 19.557289,17.17632 -144.019098,0.78942 22.02242,15.97754 -111.6825,-2.046 m 215.395399,17.94167 7.554178,27.02193 -125.307347,-71.313 10.34792,27.05358 -95.71683,-57.96764 m 177.30561,101.01081 -2.349425,32.40689 -102.973325,-101.46388 0.5332,32.86612 -77.34076,-81.54723 m 161.14805,119.85718 -7.12319,31.95826 -87.45341,-115.1394 -4.32337,32.80969 -64.89547,-91.79757 m 139.0561,157.97921 -20.18264,33.63701 -56.61616,-133.76348 -17.30225,34.86554 -39.61762,-106.10921 m 100.86397,174.22267 -27.13929,33.01049 -39.90031,-140.0886 -24.22361,34.44915 -25.93418,-110.78568 m 103.24034,170.72731 -34.42834,32.94666 -26.50839,-143.86757 -31.36674,34.48957 -14.70779,-113.62741 m 106.33678,184.86767 -37.28542,26.9486 -5.51228,-145.96709 -34.58279,28.95834 1.57496,-114.2892 m 68.89889,207.94184 -38.08165,19.98426 17.48928,-144.63963 -35.93233,22.43651 19.05405,-112.21641 m 24.14318,212.22778 -41.91655,14.53875 37.80682,-140.87667 -40.04122,17.26499 34.97515,-108.53942 m -31.93276,204.4015 -60.47234,5.86864 65.48044,-133.04115 -58.0559,8.98237 58.71112,-101.2934 m 1.86688,199.46145 -54.8616,3.60411 70.05902,-129.62668 -52.95093,6.78288 61.30311,-98.36862 m -30.59913,213.36101 -49.66078,-2.50782 85.68536,-118.91989 -48.51976,0.80713 72.29463,-89.34944 m -66.16307,202.37866 -43.35877,-6.01008 97.97623,-107.9567 -42.97478,-2.74471 80.59989,-80.53813 m -106.45396,181.45165 -44.47855,-14.07411 113.73148,-91.79717 -44.43416,-10.68281 92.66078,-67.10416 m -114.97073,172.02126 -36.26549,-12.42848 119.54857,-82.32635 -36.93808,-9.40034 95.78711,-60.21071 m -158.22539,138.03044 -39.21069,-25.93799 134.51263,-57.28792 -40.07679,-22.64515 107.53173,-39.23936 m -164.92458,107.26869 -36.31537,-29.19037 139.2606,-44.33696 -37.5055,-26.01677 110.669178,-28.96656 m -145.239348,137.60785 -33.62669,-29.77229 141.29057,-36.50644 -35.05487,-26.76574 111.787452,-22.96826 m -198.337682,78.42171 -25.34086,-36.22529 145.82845,-1.97318 -27.45719,-33.6889 113.937309,4.08248 m -186.827019,70.54939 -21.30406,-38.06436 145.18078,13.07736 -23.68011,-35.79963 112.827733,15.72222 M -227.85567,269.47 l -14.06561,-28.96253 139.74996,36.88494 -16.79451,-27.95119 107.616453,32.28721 m -207.794763,-57.58609 -1.19944,-42.74219 122.078855,79.46364 -4.343645,-41.9112 92.303312,66.53574 m -185.056322,-57.29014 2.52147,-43.24984 115.127284,89.35043 -0.694181,-42.64534 86.4854918,74.07424 m -193.0794548,-77.87461 7.81985,-39.05697 98.847232,106.5225 4.671128,-39.19385 73.38592231,86.38716 M -171.49583,215.36833 l 14.7254,-35.27977 74.232965,124.72203 11.753642,-36.15669 53.750313,99.53932 m -130.45299,-161.30949 25.15512,-34.45267 47.809437,137.58065 22.166475,-35.72616 32.207442,109.11503 m -114.189114,-168.22307 26.99616,-29.65415 30.186687,142.1812 24.347026,-31.37829 18.626431,111.84853 m -56.349595,-197.66487 35.537575,-24.69554 0.767639,145.72405 33.080207,-26.85337 -4.886387,113.75929" + inkscape:path-effect="#path-effect21" + inkscape:original-d="m -88.446424,316.65477 a 58.964287,52.916664 0 0 1 -58.964286,52.91666 58.964287,52.916664 0 0 1 -58.96429,-52.91666 58.964287,52.916664 0 0 1 58.96429,-52.91667 58.964287,52.916664 0 0 1 58.964286,52.91667 z m 50.6488,-11.3393 a 120.19643,92.226196 0 0 1 -120.196416,92.22619 120.19643,92.226196 0 0 1 -120.19643,-92.22619 120.19643,92.226196 0 0 1 120.19643,-92.2262 120.19643,92.226196 0 0 1 120.196416,92.2262 z" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -415.77381,-43.178571 190.5,-15.875 -122.46428,126.999999 180.67262,-18.142857 -121.70834,98.273809" + id="path27" + inkscape:connector-curvature="0" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/TaperStroke_multi_mm_1_0_2.svg b/testfiles/lpe_tests/TaperStroke_multi_mm_1_0_2.svg new file mode 100644 index 0000000..06568ab --- /dev/null +++ b/testfiles/lpe_tests/TaperStroke_multi_mm_1_0_2.svg @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + miter_limit="100" + jointype="extrapolated" + smoothing="0.5" + end_offset="0.67360159" + attach_start="0.41940719" + stroke_width="10" + is_visible="true" + id="path-effect855" + lpeversion="1" + effect="taper_stroke" /> + <inkscape:path-effect + effect="taper_stroke" + id="path-effect821" + is_visible="true" + stroke_width="20" + attach_start="0.27032183" + end_offset="0.34276945" + smoothing="0.5" + lpeversion="1" + jointype="round" + miter_limit="100" /> + <inkscape:path-effect + effect="taper_stroke" + id="path-effect12" + is_visible="true" + lpeversion="1" + stroke_width="0.86199427" + attach_start="0.99999" + end_offset="0.70967753" + smoothing="0.5" + jointype="extrapolated" + miter_limit="100" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="1425.9377" + inkscape:cy="560" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:0.861994" + id="path10" + sodipodi:sides="5" + sodipodi:cx="-86.337611" + sodipodi:cy="-46.812901" + sodipodi:r1="132.97243" + sodipodi:r2="66.486214" + sodipodi:arg1="0.50433761" + sodipodi:arg2="1.1326561" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -58.149312,13.823759 c 44.104299,2.024917 88.228366,3.619291 88.228366,3.619291 0,0 -44.084532,-2.455461 -88.188832,-4.480378 l -0.227232,-0.01043 -53.48038,70.549501 0.75905,0.14612 -23.46663,-85.3621651 -83.62291,-29.0618669 0.0956,0.767049 73.93265,-48.696452 1.79858,-88.510725 -0.69997,0.32794 69.159529,55.26611 84.734491,-25.64077 -0.528194,-0.56437 -31.189718,82.852782 14.7735265,21.227937 C 11.82695,-8.0287117 30.079054,17.44305 30.079054,17.44305 c 0,0 -17.544587,-25.9641567 -35.4429318,-51.682116 l -14.6440932,-21.041955 0.0496,0.398042 31.417561,-83.458021 -85.353479,25.82807 0.39389,0.0758 -69.664735,-55.66983 -1.81172,89.1573 0.19383,-0.351179 -74.47273,49.052181 84.23377,29.2741639 -0.27409,-0.2928666 23.63806,85.9857377 53.871048,-71.064867 -0.363232,0.170179 z" + inkscape:transform-center-x="7.7675472" + inkscape:transform-center-y="5.0814265" + inkscape:path-effect="#path-effect12" /> + <path + sodipodi:nodetypes="csccc" + inkscape:original-d="M -170.24833,133.85971 C -180.39249,155.29419 31.061861,307.1068 2.1088133,232.88946 -34.948547,137.89776 142.98363,98.210484 152.54333,111.18113 163.19151,90.662364 126.54687,5.0819821 124.57309,8.3716211 74.570311,11.202398 51.970321,53.180004 15.715955,75.651374" + inkscape:path-effect="#path-effect855" + inkscape:connector-curvature="0" + id="path853" + d="m -97.233167,199.28071 c -10.040053,-7.2386 -19.153653,-13.86262 -28.487253,-20.89618 -9.21195,-6.94455 -16.81991,-12.88493 -24.0751,-19.04957 -7.37474,-6.28884 -11.90208,-10.45311 -16.02158,-15.43298 0,0 0,0 0,0 -1.9088,-2.3209 -3.05244,-3.97189 -3.86991,-5.78467 -0.40955,-0.91041 -0.62755,-1.63692 -0.7204,-2.31752 -0.17318,-1.27979 0.15908,-1.94008 0.15908,-1.94008 0,0 -0.47591,0.57336 -0.53942,1.95576 -0.0343,0.7211 0.0486,1.55568 0.30841,2.5763 0.50539,1.996 1.41634,4.04123 2.97023,6.68883 1e-5,0 1e-5,0 1e-5,0 3.26887,5.60122 7.47812,10.96408 13.99283,18.10045 6.41038,7.0387 13.75155,14.20701 22.39247,21.824 8.68986,7.66215 18.08448,15.20878 28.04263,22.38744 C -59.041315,239.14202 -5.9382976,270.0319 7.1392498,253.2295 11.150623,248.07557 10.34802,240.25199 6.7669101,231.07228 -10.423737,187.00631 22.20477,155.62113 62.050214,136.03669 c 32.452543,-15.95076 67.915996,-23.07603 82.651806,-22.17372 1.74593,0.10691 2.96464,0.31757 3.74424,0.55349 0.071,0.0215 0.13544,0.0424 0.19358,0.0623 0.52216,0.17944 -0.12144,-0.3312 -0.12144,-0.3312 l 4.76416,6.46404 3.69876,-7.12742 C 167.90863,92.427583 138.17962,19.756516 130.36372,7.247455 129.3284,5.5904653 124.48848,-1.2056195 120.28562,5.7991456 l 4.00486,-2.4195313 C 106.97819,4.3597043 92.854749,9.7528503 80.347596,17.340782 67.026558,25.467648 55.944264,36.488885 46.835309,45.883232 36.629486,56.357991 32.355541,61.033792 25.075263,67.687864 c -5.652776,5.166558 -9.359308,7.96351 -9.359308,7.96351 0,0 4.243609,-1.873014 10.863484,-5.97121 C 34.022661,65.072255 41.286743,59.664904 51.703482,51.214823 61.819118,43.049281 73.490639,33.152753 85.534532,25.890384 96.846883,19.027323 109.52633,14.23146 124.8557,13.363628 l 2.64291,-0.149622 1.36195,-2.269909 c 0,0 -7.31885,1.074017 -7.31885,1.074017 0,0 -0.0508,-0.05578 -0.0508,-0.05578 0,0 -0.0123,-0.01461 -0.008,-0.0096 0.005,0.0064 0.0159,0.02004 0.0336,0.04392 0.0198,0.02653 0.0448,0.06106 0.0763,0.106108 0.035,0.05005 0.075,0.108947 0.12105,0.178881 0.0512,0.0777 0.10741,0.165297 0.16952,0.2647 0.71347,1.141879 1.63926,2.888124 2.87385,5.453016 9.92571,20.620877 30.49317,77.110967 23.34844,90.878682 l 8.46292,-0.66338 c -1.37355,-1.86364 -3.46126,-2.83563 -5.22552,-3.36953 -13.34631,-4.03887 -56.438246,3.90071 -93.703605,22.21701 -42.24623,20.76446 -80.055132,56.71877 -60.1884184,107.6445 3.14286267,8.05631 2.58115619,11.37339 1.79706267,12.38082 -0.41980687,0.53938 -1.88349377,1.35096 -5.81782337,0.991 -17.4366069,-1.59528 -55.6978379,-23.59032 -90.6631229,-48.79775 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 94.318643,225.70786 c -7.97233,-6.95982 -20.53432,-15.24217 -26.820466,-19.76739 0,0 -2e-6,-1e-5 -2e-6,-1e-5 -3.835428,-2.82546 -5.867884,-4.16922 -8.159899,-6.51114 -1.0145,-1.04959 -1.635364,-1.7474 -2.131607,-2.6257 -0.791862,-1.43085 -0.669283,-2.46771 -0.669283,-2.46771 0,0 -0.950903,0.62326 -1.243473,2.74362 -0.17971,1.16499 -0.161026,2.55253 0.116506,4.20698 0.543191,3.40115 1.822077,7.04176 3.947653,11.35825 0,0 2e-6,0 2e-6,0 4.638648,9.54602 12.057617,19.71511 21.85088,28.16728 44.644646,38.74938 125.556386,93.45361 150.943206,80.6401 11.42518,-5.76664 11.03132,-18.97379 6.05855,-31.72083 -30.03528,-76.99154 105.44542,-112.08697 132.97143,-110.40149 0.29196,0.0179 0.56305,0.039 0.81384,0.0627 0.22572,0.0213 0.43264,0.0445 0.62164,0.0688 0.1701,0.0219 0.32327,0.0445 0.46064,0.0671 0.12364,0.0204 0.23202,0.0403 0.32655,0.0594 0.0851,0.0172 0.15645,0.0331 0.21576,0.0473 0.0534,0.0128 0.0945,0.0236 0.12514,0.0322 0.0276,0.008 0.0443,0.0129 0.0521,0.0154 0,0 -2.51857,-2.0924 -2.51857,-2.0924 a 10,10 0 0 0 16.92584,-1.32677 C 400.47628,152.61712 369.74209,78.441782 361.38977,65.074204 360.12796,63.05473 350.99219,50.022301 342.78387,63.702864 l 8.00971,-4.839064 c -36.85613,2.086509 -60.0052,23.172794 -80.91237,42.25727 -7.87692,7.14323 -14.60101,16.69975 -19.16901,23.2106 -4.78374,6.81834 -8.21053,11.7959 -8.21053,11.7959 0,0 6.00799,-0.68124 14.29654,-3.87894 8.51048,-3.28333 18.2964,-8.75711 26.56659,-16.3562 20.78438,-18.972405 39.68864,-35.426174 68.55922,-37.060602 a 10,10 0 0 0 8.00971,-4.839064 c 0,0 -15.62031,1.499971 -15.62031,1.499971 0.0238,0.03575 0.0549,0.08363 0.0952,0.147726 0.0448,0.07122 0.0967,0.155578 0.15737,0.256692 0.0674,0.112349 0.14171,0.239152 0.2245,0.383612 0.092,0.160511 0.19114,0.337151 0.29867,0.532743 0.11949,0.217324 0.24647,0.452859 0.38199,0.709061 1.40868,2.663012 3.35666,6.823689 5.61099,12.119831 2.99341,7.032492 6.37988,15.72476 9.53589,24.92634 7.97008,23.23744 12.76984,46.82702 9.83498,52.48241 l 16.92584,-1.32677 c -10.19719,-13.8356 -63.60546,-3.09759 -105.15959,17.32669 -43.44662,21.35447 -83.84572,59.59335 -62.64097,113.94895 1.87659,4.81039 2.13815,7.01715 2.02963,8.29206 -0.006,0.0653 -0.0116,0.10667 -0.0148,0.12644 -0.003,0.0175 7.3e-4,-1.4e-4 7.3e-4,-1.4e-4 0,0 0.0249,-0.0845 0.0249,-0.0845 0,0 0.0504,-0.13505 0.0504,-0.13505 0,0 1.47126,-1.60128 1.47126,-1.60128 0,0 -3.14028,0.42025 -9.90815,-1.64087 -28.57253,-8.70161 -83.90907,-45.86656 -118.913587,-76.24878 z" + id="path14" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect821" + inkscape:original-d="M 56.537386,194.33591 C 46.393225,215.77039 257.84757,367.583 228.89452,293.36566 191.83716,198.37396 369.76934,158.68668 379.32904,171.65733 389.97722,151.13856 353.33258,65.558174 351.3588,68.847814 301.35602,71.678584 278.75603,113.6562 242.50167,136.12757" + sodipodi:nodetypes="csccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/TaperStroke_multi_px_1_0_2.svg b/testfiles/lpe_tests/TaperStroke_multi_px_1_0_2.svg new file mode 100644 index 0000000..7835806 --- /dev/null +++ b/testfiles/lpe_tests/TaperStroke_multi_px_1_0_2.svg @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + miter_limit="100" + jointype="extrapolated" + smoothing="0.5" + end_offset="0.67360159" + attach_start="0.41940719" + stroke_width="24.539679" + is_visible="true" + id="path-effect855" + effect="taper_stroke" + lpeversion="1" /> + <inkscape:path-effect + effect="taper_stroke" + id="path-effect821" + is_visible="true" + stroke_width="49.079358" + attach_start="0.27032183" + end_offset="0.34276945" + smoothing="0.5" + jointype="round" + miter_limit="100" + lpeversion="1" /> + <inkscape:path-effect + effect="taper_stroke" + id="path-effect12" + is_visible="true" + stroke_width="2.1153063" + attach_start="0.99999" + end_offset="0.70967753" + smoothing="0.5" + jointype="extrapolated" + miter_limit="100" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="1425.9377" + inkscape:cy="560" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:2.11531" + id="path10" + sodipodi:sides="5" + sodipodi:cx="106.92111" + sodipodi:cy="129.54472" + sodipodi:r1="326.31006" + sodipodi:r2="163.15503" + sodipodi:arg1="0.50433761" + sodipodi:arg2="1.1326561" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 176.09428,278.34514 c 108.23054,4.96908 216.50958,8.88162 216.50958,8.88162 0,0 -108.18203,-6.02562 -216.41256,-10.99471 l -0.55762,-0.0256 -131.239125,173.12621 1.862672,0.35857 -57.586358,-209.476 -205.207929,-71.31689 0.23458,1.88231 181.428355,-119.499524 4.413652,-217.202466 -1.717697,0.80476 169.71525,135.621238 207.93571,-62.92162 -1.29617,-1.384943 -76.53856,203.318065 36.25376,52.09267 c 43.92196,63.11105 88.71204,125.61793 88.71204,125.61793 0,0 -43.05385,-63.71521 -86.97582,-126.82625 l -35.93613,-51.63628 0.12173,0.97678 77.09768,-204.803304 -209.45469,63.381264 0.96659,0.186074 -170.955024,-136.611954 -4.445894,218.789134 0.47566,-0.861784 -182.753702,120.37247 206.70698,71.83786 -0.672618,-0.71868 58.007028,211.00623 132.19783,-174.3909 -0.89136,0.41762 z" + inkscape:transform-center-x="19.061304" + inkscape:transform-center-y="12.469663" + inkscape:path-effect="#path-effect12" /> + <path + sodipodi:nodetypes="csccc" + inkscape:original-d="M -98.993112,572.9095 C -123.88656,625.50903 395.01563,998.0523 323.96578,815.92533 233.02821,582.81875 669.66806,485.42745 693.12726,517.257 719.25755,466.9046 629.33278,256.89309 624.48919,264.96576 501.78397,271.9124 446.32432,374.9241 357.35727,430.06812" + inkscape:path-effect="#path-effect855" + inkscape:connector-curvature="0" + id="path853" + d="m 80.18375,733.45054 c -24.637966,-17.7633 -47.002449,-34.01842 -69.906814,-51.27856 -22.605827,-17.0417 -41.27551,-31.61919 -59.079504,-46.74704 0,0 -1.1e-5,-10e-6 -1.1e-5,-10e-6 -8.546921,-7.26276 -15.891425,-13.8066 -22.685546,-20.3252 -6.769083,-6.50228 -12.009881,-11.96721 -16.6309,-17.54682 0,0 -5e-6,0 -5e-6,0 -4.684122,-5.69542 -7.490582,-9.74689 -9.49663,-14.19539 -1.005007,-2.23413 -1.539973,-4.01695 -1.767838,-5.68714 -0.424964,-3.14055 0.390386,-4.76088 0.390386,-4.76088 0,0 -1.167858,1.40701 -1.323728,4.79938 -0.0841,1.76955 0.11917,3.81758 0.756833,6.32216 1.240219,4.89812 3.475656,9.91703 7.288864,16.41416 0,0 4e-6,10e-6 4e-6,10e-6 3.759093,6.44266 8.308383,13.0253 14.169192,20.59044 5.886827,7.60467 12.494724,15.40232 20.168756,23.82747 3e-6,0 7e-6,10e-6 1e-5,10e-6 15.730872,17.27274 33.745861,34.86355 54.9504019,53.5554 21.3246511,18.80265 44.3787471,37.32186 68.8157241,54.93805 108.072385,77.91233 238.385485,153.71511 270.477365,112.48255 9.84378,-12.64756 7.87422,-31.84639 -0.91371,-54.3731 -42.1853,-108.13649 37.88401,-185.1547 135.66345,-233.2143 79.63751,-39.14265 166.66368,-56.62782 202.82488,-54.41357 4.28447,0.26235 7.27513,0.7793 9.18825,1.35824 0.17432,0.0528 0.33237,0.10395 0.47504,0.15298 1.28136,0.44035 -0.298,-0.81275 -0.298,-0.81275 l 11.69109,15.86253 9.07664,-17.49045 c 26.81526,-51.67232 -46.13877,-230.00479 -65.31874,-260.70162 -2.54063,-4.0662 -14.41767,-20.74357 -24.73133,-3.5541 l 9.8278,-5.93745 c -42.48381,2.40511 -77.14228,15.63971 -107.83444,34.26026 -32.6894,19.94307 -59.88499,46.98883 -82.23807,70.04225 -25.04477,25.70473 -35.53289,37.17899 -53.39846,53.50787 -13.87173,12.67857 -22.96744,19.5422 -22.96744,19.5422 0,0 10.41368,-4.59632 26.65864,-14.65316 18.26543,-11.30766 36.09125,-24.57712 61.6536,-45.31335 24.82344,-20.03798 53.46498,-44.32374 83.02031,-62.14536 27.76015,-16.84174 58.87511,-28.61063 96.49288,-30.74027 l 6.48563,-0.36716 3.34217,-5.57029 c 0,0 -17.96022,2.63561 -17.96022,2.63561 0,0 -0.12479,-0.1369 -0.12479,-0.1369 0,0 -0.0301,-0.0358 -0.0203,-0.0235 0.0125,0.0156 0.0389,0.0492 0.0825,0.10777 0.0485,0.0651 0.10992,0.14984 0.18713,0.26039 0.0858,0.12283 0.18398,0.26735 0.29705,0.43897 0.12563,0.19068 0.26359,0.40563 0.416,0.64956 1.75083,2.80214 4.02268,7.08736 7.05233,13.38153 24.35737,50.60297 74.82926,189.22784 57.29632,223.01337 l 20.76773,-1.62792 c -3.37064,-4.5733 -8.49382,-6.95853 -12.82324,-8.2687 -32.75144,-9.91128 -138.49766,9.5722 -229.94565,54.51983 -103.67089,50.95531 -196.45272,139.18604 -147.70045,264.15613 7.71248,19.76994 6.33407,27.90994 4.40993,30.38213 -1.03019,1.32362 -4.62203,3.31521 -14.27675,2.4319 -42.78887,-3.91479 -136.6807,-57.8899 -222.48439,-119.74812 z" + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:24.5397;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-width:24.5397;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 550.24574,798.30193 c -11.54996,-10.03072 -24.06043,-19.30287 -35.75514,-27.57992 -10.88042,-7.72907 -21.1719,-14.56822 -30.06143,-20.92864 -9.41202,-6.93359 -14.3996,-10.23114 -20.02413,-15.97814 -2.48955,-2.57567 -4.01313,-4.28807 -5.23089,-6.44338 -1.9432,-3.51128 -1.6424,-6.05569 -1.6424,-6.05569 0,0 -2.33348,1.52945 -3.05144,6.73275 -0.441,2.85884 -0.39515,6.26382 0.2859,10.32381 1.33298,8.34631 4.47133,17.28024 9.68743,27.87277 5.38495,11.05127 12.38345,22.45212 21.05477,33.97817 9.35455,12.44669 20.30594,24.50778 32.56658,35.14343 109.55654,95.08976 308.11135,229.33221 370.40979,197.88821 28.03703,-14.1511 27.07051,-46.56107 14.86749,-77.84191 -73.70563,-188.93476 258.75963,-275.05782 326.30763,-270.92168 0.7164,0.0439 1.3817,0.0957 1.9971,0.15379 0.5539,0.0523 1.0617,0.10914 1.5255,0.1689 0.4174,0.0538 0.7933,0.10919 1.1304,0.16468 0.3034,0.0499 0.5693,0.099 0.8013,0.14573 0.2088,0.0421 0.384,0.0811 0.5295,0.11604 0.131,0.0314 0.2318,0.058 0.3071,0.079 0.068,0.0189 0.1086,0.0316 0.1277,0.0377 0,0 -6.1805,-5.13469 -6.1805,-5.13469 a 24.539679,24.539679 0 0 0 41.5355,-3.25584 c 30.1133,-58.02748 -45.3075,-240.05138 -65.8038,-272.85499 -3.0965,-4.95573 -25.5153,-36.9369 -45.6583,-3.36524 l 19.6556,-11.87489 c -90.4438,5.12023 -147.2508,56.8653 -198.55634,103.69799 -19.32972,17.52925 -35.83041,40.98065 -47.04015,56.95806 -11.73913,16.73198 -20.14837,28.94676 -20.14837,28.94676 0,0 14.74341,-1.67173 35.08326,-9.5188 20.88444,-8.05717 44.89878,-21.48965 65.1935,-40.1376 51.0043,-46.55766 97.3947,-86.93468 168.2421,-90.94551 a 24.539679,24.539679 0 0 0 19.6556,-11.87489 c 0,0 -38.3317,3.68087 -38.3317,3.68087 0.058,0.0877 0.1346,0.20522 0.2337,0.36251 0.11,0.17477 0.2374,0.38179 0.3862,0.62992 0.1653,0.2757 0.3477,0.58687 0.5509,0.94137 0.2257,0.39389 0.469,0.82736 0.7329,1.30733 0.2932,0.53331 0.6048,1.1113 0.9374,1.74002 3.4569,6.53494 8.2371,16.74511 13.7692,29.74167 7.3457,17.25751 15.656,38.58805 23.4008,61.16844 19.5583,57.02393 31.3368,114.912 24.1347,128.79014 l 41.5355,-3.25584 c -25.0236,-33.95213 -156.0858,-7.60139 -258.0583,42.51914 -106.61659,52.40316 -205.75467,146.24016 -153.71891,279.62704 4.6051,11.80456 5.24695,17.21988 4.98065,20.34848 -0.0136,0.16032 -0.0284,0.26176 -0.0364,0.31026 -0.007,0.0431 0.002,-3.2e-4 0.002,-3.2e-4 0,0 0.061,-0.20746 0.061,-0.20746 0,0 0.12368,-0.3314 0.12368,-0.3314 0,0 3.61043,-3.9295 3.61043,-3.9295 0,0 -7.70615,1.03128 -24.31429,-4.02664 C 771.93981,964.06053 636.1457,872.85892 550.24574,798.30193 Z" + id="path14" + inkscape:connector-curvature="0" + inkscape:path-effect="#path-effect821" + inkscape:original-d="M 457.53175,721.31616 C 432.63831,773.91568 951.54048,1146.459 880.49063,964.33198 789.55306,731.2254 1226.1929,633.83409 1249.6521,665.66365 c 26.1303,-50.3524 -63.7945,-260.36392 -68.6381,-252.29125 -122.7052,6.94662 -178.1648,109.95834 -267.13186,165.10236" + sodipodi:nodetypes="csccc" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Transform2Points_multi_mm_1_0_2.svg b/testfiles/lpe_tests/Transform2Points_multi_mm_1_0_2.svg new file mode 100644 index 0000000..58e6b12 --- /dev/null +++ b/testfiles/lpe_tests/Transform2Points_multi_mm_1_0_2.svg @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 296.99999" + version="1.1" + id="svg1048" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs1042"> + <inkscape:path-effect + effect="offset" + id="path-effect3681" + is_visible="true" + lpeversion="1" + linejoin_type="extrp_arc" + unit="mm" + offset="60.493735" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1662" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="88.776151" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1654" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="18.737882" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1650" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="59.515401" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1646" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="58.317287" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1642" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-24.333219" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1640" + is_visible="true" + lpeversion="1" + linejoin_type="round" + unit="mm" + offset="29.883462" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1638" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="-18.128821" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + <inkscape:path-effect + effect="offset" + id="path-effect1636" + is_visible="true" + lpeversion="1" + linejoin_type="miter" + unit="mm" + offset="19.962127" + miter_limit="4" + attempt_force_join="true" + update_on_knot_move="true" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.08" + inkscape:cx="-11265.935" + inkscape:cy="7059.9816" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + units="mm" /> + <metadata + id="metadata1045"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:27.0512;stroke-miterlimit:4;stroke-dasharray:none" + id="path1644" + sodipodi:sides="5" + sodipodi:cx="-399.80942" + sodipodi:cy="-180.44173" + sodipodi:r1="360.73807" + sodipodi:r2="180.36903" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -644.74023,-815.44922 -40.77149,450.125 -393.91408,221.59766 L -663.92969,34.142578 -574.9082,477.25781 -277.34375,137.0625 171.5918,189.32422 -60,-198.79883 l 188.43555,-410.8125 -440.69727,100.31836 z" + inkscape:transform-center-x="379.29723" + inkscape:transform-center-y="-183.09287" + inkscape:path-effect="#path-effect1646" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1611" + sodipodi:sides="5" + sodipodi:cx="-311.88177" + sodipodi:cy="86.136711" + sodipodi:r1="133.35405" + sodipodi:r2="66.677025" + sodipodi:arg1="0.57435009" + sodipodi:arg2="1.2026686" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -324.08789,54.492188 -2.03125,22.43164 -19.63086,11.042969 20.70508,8.863281 4.43554,22.082032 14.83008,-16.95313 22.3711,2.60352 -11.54102,-19.341797 9.39063,-20.472656 -21.96094,5 z" + inkscape:transform-center-x="2.4433845" + inkscape:transform-center-y="0.51611801" + inkscape:path-effect="#path-effect1638" + transform="matrix(0.41044644,0,0,0.41346166,-2004.1061,1672.8518)" /> + <path + id="path1648" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1598.6191,1541.1289 c -80.3815,2e-4 -130.3907,80.8619 -130.3907,156.4434 0,75.5814 50.0093,156.4433 130.3907,156.4433 80.3817,2e-4 130.3886,-80.8632 130.3886,-156.4433 0,-75.5802 -50.007,-156.4434 -130.3886,-156.4434 z" + inkscape:path-effect="#path-effect1650" + inkscape:original-d="m -1570.7428,1689.4779 a 29.561346,37.160658 0 0 1 -29.5613,37.1607 29.561346,37.160658 0 0 1 -29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,37.1606 z m 42.9973,8.0942 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1616" + style="fill:none;fill-rule:nonzero;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1766.1172,2176.748 c -59.8491,0 -100.7558,62.208 -100.7558,126.8106 0,64.6026 40.9067,126.8105 100.7558,126.8105 59.8493,2e-4 100.7578,-62.2072 100.7578,-126.8105 0,-64.6034 -40.9086,-126.8107 -100.7578,-126.8106 z" + inkscape:path-effect="#path-effect1640" + inkscape:original-d="m -1738.2397,2295.4647 a 29.561346,37.160658 0 0 1 -29.5614,37.1606 29.561346,37.160658 0 0 1 -29.5613,-37.1606 29.561346,37.160658 0 0 1 29.5613,-37.1607 29.561346,37.160658 0 0 1 29.5614,37.1607 z m 42.9972,8.0941 a 70.873827,96.928135 0 0 1 -70.8739,96.9281 70.873827,96.928135 0 0 1 -70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8738,-96.9281 70.873827,96.928135 0 0 1 70.8739,96.9281 z" /> + <path + id="path1652" + style="fill:#c83737;fill-rule:evenodd;stroke:#000000;stroke-width:11.1438;stroke-miterlimit:4;stroke-dasharray:none" + d="m -1279.7363,1605.9277 c -77.1046,0 -133.8106,85.6297 -133.8106,183 0,84.1137 42.5225,159.3512 104.1074,178.2129 26.239,59.2627 76.4951,101.6602 136.6856,101.6602 89.1788,0 156.9707,-92.2128 156.9707,-199.5957 0,-107.383 -67.792,-199.5958 -156.9707,-199.5957 -1.8737,0 -3.6775,0.1378 -5.5059,0.2285 -23.6771,-37.8416 -59.3046,-63.9102 -101.4765,-63.9102 z m 80.9961,105.2657 c 9.5804,22.3932 15.3379,48.8925 15.3379,77.7343 0,84.0689 -46.3335,145.5235 -96.334,145.5235 -0.6657,0 -1.3775,-0.097 -2.0547,-0.127 -6.559,-19.9407 -10.457,-41.827 -10.457,-65.1191 0,-79.5882 41.7018,-142.1601 93.5078,-158.0117 z" + inkscape:path-effect="#path-effect1654" + inkscape:original-d="m -1034.5217,1869.2049 a 138.23195,180.85736 0 0 1 -138.232,180.8573 138.23195,180.85736 0 0 1 -138.2319,-180.8573 138.23195,180.85736 0 0 1 138.2319,-180.8574 138.23195,180.85736 0 0 1 138.232,180.8574 z m -130.1426,-80.2774 a 115.07191,164.26231 0 0 1 -115.072,164.2624 115.07191,164.26231 0 0 1 -115.0719,-164.2624 115.07191,164.26231 0 0 1 115.0719,-164.2623 115.07191,164.26231 0 0 1 115.072,164.2623 z" /> + <g + id="g1660" + inkscape:path-effect="#path-effect1662" + transform="matrix(1.1103049,0,0,1.1184615,-2592.2041,1717.8817)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="ellipse1656" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,209.44531 c -104.302606,-1e-5 -207.291016,72.14096 -207.291016,181.49805 0,109.35709 102.98843,181.49805 207.291016,181.49805 104.302586,0 207.291014,-72.14096 207.291014,-181.49805 0,-109.35709 -102.98844,-181.49805 -207.291014,-181.49805 z" /> + <path + id="path1658" + inkscape:test-ignore="1" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m -634.36133,245.58203 a 79.664469,79.664469 0 0 0 -67.90429,37.76367 l -3.89258,6.29492 -7.39453,0.36133 a 79.664469,79.664469 0 0 0 -56.90039,131.0586 l 4.7871,5.65039 -1.94336,7.15039 a 79.664469,79.664469 0 0 0 107.0625,94.60937 l 6.85352,-2.80664 6.19922,4.05664 a 79.664469,79.664469 0 0 0 123.0625,-72.58789 l -0.55078,-7.38281 5.76953,-4.63867 a 79.664469,79.664469 0 0 0 -31,-139.47266 l -7.19531,-1.75781 -2.62891,-6.92383 a 79.664469,79.664469 0 0 0 -74.32422,-51.375 z" + inkscape:original-d="m -603.8755,463.05932 -41.24201,-26.98797 -45.61276,18.67429 12.9226,-47.56323 -31.85542,-37.60964 49.22862,-2.40772 25.92503,-41.91833 17.50235,46.07517 47.87798,11.7027 -38.41157,30.88374 z" /> + </g> + <g + id="g1634" + inkscape:path-effect="#path-effect1636" + transform="matrix(1.1103049,0,0,1.1184615,-1814.3473,2305.6139)"> + <ellipse + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path1627" + cx="-54.396549" + cy="390.94354" + rx="127.62676" + ry="101.8336" + d="m -54.396484,271.19531 c -78.090216,-1e-5 -145.541016,51.5633 -145.541016,119.74805 0,68.18475 67.4508,119.74805 145.541016,119.74805 78.090211,0 145.541015,-51.5633 145.541015,-119.74805 0,-68.18475 -67.450807,-119.74805 -145.541015,-119.74805 z" /> + <path + id="path1629" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="-2.1853814" + inkscape:transform-center-y="-4.9767892" + d="m 1.9179688,162.68945 -40.0624998,64.77735 -76.076169,3.7207 49.226559,58.12109 -19.96875,73.5 70.486329,-28.85742 63.732421,41.70508 -5.662109,-75.95508 59.35742,-47.72656 -73.986326,-18.08399 z" + inkscape:original-d="m 28.693756,340.79243 -41.24201,-26.98797 -45.612767,18.67429 12.922603,-47.56323 -31.855423,-37.60964 49.228618,-2.40772 25.9250314,-41.91833 17.5023566,46.07517 47.877974,11.7027 -38.411567,30.88374 z" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.411951px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -2601.4453,730.88281 a 180.07746,180.07746 0 0 0 -87.6231,23.08008 c -144.0639,80.94049 -341.893,452.97931 -373.6328,561.99221 -3.6587,12.566 -9.6368,37.5238 -1.7363,59.2969 l 7.6289,21.0253 19.4727,11.0039 c 43.9323,24.8288 44.1482,28.099 51.4121,33.4356 10.2406,7.5235 19.3853,14.9325 26.5468,21.8125 1.0225,0.9823 1.9746,1.9265 2.8555,2.8281 0.7928,0.8115 1.5187,1.578 2.1817,2.3028 0.5891,0.6441 1.1179,1.2422 1.5937,1.7988 6.1336,91.3732 93.6603,78.8898 336.4629,113.5898 287.3297,41.0635 535.3255,-80.3362 651.123,-489.539 62.6256,-221.30461 -118.1922,-232.18481 -272.1836,-205.0391 -142.0528,25.0412 -293.5601,66.31375 -348.9082,32.48242 -11.4665,-7.0089 -29.0032,-26.708 -13.8671,-102.38671 a 424.28252,424.28252 0 0 1 26.7773,-85.57032 180.07746,180.07746 0 0 0 -28.1035,-2.11328 z" + id="path3679" + inkscape:test-ignore="1" + sodipodi:nodetypes="ccsssc" + inkscape:path-effect="#path-effect3681" + inkscape:original-d="m -3007.5731,1354.6181 c -12.6856,-34.9602 210.6842,-470.68828 348.1365,-547.91411 -90.7945,453.96261 743.8726,-110.62832 636.0671,270.33221 -108.2015,382.3603 -327.0952,482.8939 -584.3548,446.1279 -257.2596,-36.7661 -284.9184,-25.6639 -284.9184,-64.6282 0,-38.9644 -114.9304,-103.9178 -114.9304,-103.9178 z" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Transform2Points_multi_px_1_0_2.svg b/testfiles/lpe_tests/Transform2Points_multi_px_1_0_2.svg new file mode 100644 index 0000000..e814687 --- /dev/null +++ b/testfiles/lpe_tests/Transform2Points_multi_px_1_0_2.svg @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + lock_angle="false" + lock_lenght="false" + flip_horizontal="false" + flip_vertical="false" + from_original_width="false" + elastic="true" + offset="0" + stretch="1" + helper_size="3" + last_knot="8" + first_knot="1" + is_visible="true" + id="path-effect826" + end="-200.81584,243.9868" + start="66.930747,552.16325" + effect="transform_2pts" + lpeversion="1" + lock_length="false" /> + <inkscape:path-effect + effect="transform_2pts" + start="1210.7212,1168.8432" + end="751.63379,243.25357" + id="path-effect822" + is_visible="true" + first_knot="1" + last_knot="7" + helper_size="3" + stretch="1" + offset="0" + elastic="false" + from_original_width="false" + flip_vertical="false" + flip_horizontal="false" + lock_lenght="false" + lock_angle="false" + lpeversion="1" + lock_length="false" /> + <inkscape:path-effect + effect="transform_2pts" + start="-265.8744,-128.70673" + end="-109.14255,-128.70673" + id="path-effect817" + is_visible="true" + first_knot="1" + last_knot="2" + helper_size="3" + stretch="1" + offset="0" + elastic="false" + from_original_width="true" + flip_vertical="false" + flip_horizontal="false" + lock_lenght="false" + lock_angle="false" + lpeversion="1" + lock_length="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.175" + inkscape:cx="-1031.0035" + inkscape:cy="780.58029" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path815" + sodipodi:sides="5" + sodipodi:cx="-193.58212" + sodipodi:cy="-130.79874" + sodipodi:r1="84.710526" + sodipodi:r2="42.355263" + sodipodi:arg1="1.3366398" + sodipodi:arg2="1.9649583" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m -173.92737,-48.399918 -35.92064,-43.291402 -56.02639,5.04801 30.07248,-47.54034 -22.11405,-51.72434 54.50646,13.90986 42.35915,-37.01541 3.61437,56.1371 48.29344,28.84756 -52.27266,20.78478 z" + inkscape:transform-center-x="-10.703601" + inkscape:transform-center-y="3.712852" + inkscape:path-effect="#path-effect817" + transform="matrix(1.762299,0,0,1.7747858,694.50637,325.45746)" /> + <path + inkscape:connector-curvature="0" + inkscape:original-d="m 66.930747,552.16325 -112.169226,-37.64197 -94.380841,71.71726 0.88557,-119.06719 -96.89255,-68.23566 112.71653,-35.94559 34.497958,-113.88922 68.777078,96.8516 118.213466,-2.15174 -70.209978,95.80314 z" + inkscape:path-effect="#path-effect826" + id="path824" + d="m 66.930747,552.16325 -160.607532,-49.37839 -51.217365,116.06257 -95.61858,-181.57258 -167.72758,-97.10638 101.512,-62.83962 -52.44398,-176.07762 158.35645,142.73557 135.315439,-11.71556 -3.642381,151.055 z" + inkscape:transform-center-y="-8.33421" + inkscape:transform-center-x="8.5685778" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:17.6853;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:17.6853;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="8.9041596" + inkscape:transform-center-y="-8.327653" + d="M 1210.7212,1168.8432 871.95795,1050.1551 582.77136,1263.929 590.23315,902.7664 299.03979,691.883 642.41425,587.36043 751.63379,243.25357 956.38932,539.81761 1315.0837,538.0312 1098.2551,825.84035 Z" + id="path819" + inkscape:path-effect="#path-effect822" + inkscape:original-d="m 1210.7212,1168.8432 -112.1693,-37.642 -94.3808,71.7173 0.8856,-119.0672 -96.89259,-68.2357 112.71649,-35.94554 34.498,-113.88923 68.7771,96.85161 118.2134,-2.15174 -70.2099,95.8031 z" + inkscape:connector-curvature="0" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/Transform2Points_path_0_92_5.svg b/testfiles/lpe_tests/Transform2Points_path_0_92_5.svg new file mode 100644 index 0000000..71c3fc4 --- /dev/null +++ b/testfiles/lpe_tests/Transform2Points_path_0_92_5.svg @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + lock_angle="false" + lock_lenght="false" + flip_horizontal="false" + flip_vertical="false" + from_original_width="false" + elastic="true" + offset="0" + stretch="1" + helper_size="3" + last_knot="8" + first_knot="1" + is_visible="true" + id="path-effect826" + end="-324.28743,-27.076008" + start="-172.35714,146.56548" + effect="transform_2pts" /> + <inkscape:path-effect + effect="transform_2pts" + start="476.67598,494.03273" + end="216.17116,-27.489144" + id="path-effect822" + is_visible="true" + first_knot="1" + last_knot="7" + helper_size="3" + stretch="1" + offset="0" + elastic="false" + from_original_width="false" + flip_vertical="false" + flip_horizontal="false" + lock_lenght="false" + lock_angle="false" /> + <inkscape:path-effect + effect="transform_2pts" + start="-83.631556,-14.62824" + end="73.100292,-14.62824" + id="path-effect817" + is_visible="true" + first_knot="1" + last_knot="2" + helper_size="3" + stretch="1" + offset="0" + elastic="false" + from_original_width="true" + flip_vertical="false" + flip_horizontal="false" + lock_lenght="false" + lock_angle="false" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.175" + inkscape:cx="-1045.2892" + inkscape:cy="71.886311" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:connector-curvature="0" + inkscape:original-d="m -172.35714,146.56548 -63.64938,-21.20931 -53.55552,40.40896 0.50251,-67.08819 -54.98077,-38.44727 63.95994,-20.25348 19.57554,-64.170676 39.02691,54.570856 67.07912,-1.21239 -39.83999,53.98011 z" + inkscape:path-effect="#path-effect826" + id="path824" + d="m -172.35714,146.56548 -91.28473,-27.84133 -29.25591,65.3705 -54.17894,-102.29662 -95.28131,-54.727991 57.80028,-35.3814693 -29.63117,-99.1942597 89.90149,80.429682 76.96824,-6.577433 -2.23812,85.089724 z" + inkscape:transform-center-y="-4.7206335" + inkscape:transform-center-x="5.0469249" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:transform-center-x="5.0469249" + inkscape:transform-center-y="-4.7206335" + d="M 476.67598,494.03273 284.46022,427.1346 120.38112,547.55179 124.60708,344.0711 -40.619703,225.23357 154.20781,166.37368 216.17116,-27.489144 332.35524,139.61417 535.87748,138.63789 412.85565,300.77325 Z" + id="path819" + inkscape:path-effect="#path-effect822" + inkscape:original-d="m 476.67598,494.03273 -63.64938,-21.20931 -53.55552,40.40896 0.50251,-67.08819 -54.98077,-38.44727 63.95994,-20.25348 19.57554,-64.17068 39.02691,54.57086 67.07912,-1.21239 -39.83999,53.98011 z" + inkscape:connector-curvature="0" /> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/VonCoch_multi_mm_1_0_2.svg b/testfiles/lpe_tests/VonCoch_multi_mm_1_0_2.svg new file mode 100644 index 0000000..499f103 --- /dev/null +++ b/testfiles/lpe_tests/VonCoch_multi_mm_1_0_2.svg @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="vonkoch" + id="path-effect833" + is_visible="true" + ref_path="m -375.70834,324.59225 h 207.13096" + generator="m -375.70834,390.73809 h 69.04365 m 69.04366,0 h 69.04365" + similar_only="false" + nbgenerations="2" + drawall="true" + lpeversion="1" + maxComplexity="1000" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect821" + is_visible="true" + ref_path="m -189.93073,104.61994 c 26.3037,-257.08984 -114.35051,-192.499198 -22.75111,-179.916663" + generator="m -205.04978,179.39766 h 87.91828 m 87.918286,0 h 87.918281" + similar_only="false" + nbgenerations="2" + drawall="true" + maxComplexity="1000" + lpeversion="1" + ref_path-nodetypes="cc" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect817" + is_visible="true" + ref_path="m -131.6818,-17.162038 c 61.776508,8.4289062 -20.6309,-55.972593 57.339248,-128.511902" + generator="m -131.6818,76.440842 h 63.462291 m 63.4622881,0 H 58.705067" + similar_only="true" + nbgenerations="2" + drawall="true" + maxComplexity="996" + lpeversion="1" + ref_path-nodetypes="cc" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.12374369" + inkscape:cx="-1713.4312" + inkscape:cy="306.16165" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:path-effect="#path-effect817" + inkscape:transform-center-y="-57.638119" + inkscape:transform-center-x="-25.866601" + d="M 20.75941,91.114129 -26.191387,72.356933 -68.260242,100.40014 -64.929682,49.950983 -104.60035,18.606952 -55.591149,6.1848558 -38.040113,-41.230025 -11.081323,1.5418516 39.436477,3.5818748 7.088729,42.438445 Z m -169.02186,68.003811 -0.90244,-22.7828 -19.27952,-12.17251 21.38885,-7.89854 5.61905,-22.097426 14.12147,17.901226 22.75229,-1.48445 -12.66131,18.96211 8.44265,21.17998 -21.9466,-6.182 z m -59.06481,-57.11365 9.21698,-4.558063 1.47043,-10.176769 7.18318,7.357355 10.13307,-1.746338 -4.77753,9.105165 4.79215,9.09747 -10.13586,-1.73006 -7.17135,7.36889 -1.48677,-10.1744 z m 23.32278,52.27231 9.21699,-4.55806 1.47042,-10.17677 7.18318,7.35735 10.13307,-1.74634 -4.77753,9.10516 4.79215,9.09748 -10.13586,-1.73006 -7.17135,7.36889 -1.48677,-10.1744 z m 162.666607,4.84133 -0.902435,-22.78279 -19.279525,-12.17251 21.388856,-7.89854 5.619043,-22.097427 14.12147552,17.901227 22.75228448,-1.48445 -12.6613044,18.9621 8.4426424,21.17999 -21.9465921,-6.182 z m -59.064805,-57.11364 9.216985,-4.558064 1.470425,-10.176768 7.183182,7.357354 10.133068,-1.746338 -4.777534,9.105156 4.792156,9.09748 -10.135861,-1.73006 -7.171353,7.36889 -1.486772,-10.1744 z m 23.322782,52.27231 9.216984,-4.55807 1.470424,-10.17677 7.183182,7.35736 10.133068,-1.74634 -4.777534,9.10516 4.792156,9.09747 -10.13586,-1.73005 -7.171353,7.36888 -1.486772,-10.17439 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="1.4668581" + sodipodi:arg1="0.83853957" + sodipodi:r2="38.06776" + sodipodi:r1="76.135521" + sodipodi:cy="34.494614" + sodipodi:cx="-30.140963" + sodipodi:sides="5" + id="path819" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:7.56548;stroke-miterlimit:4;stroke-dasharray:none" + sodipodi:type="star" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:7.56548;stroke-miterlimit:4;stroke-dasharray:none" + id="path815" + sodipodi:sides="5" + sodipodi:cx="215.78219" + sodipodi:cy="37.926102" + sodipodi:r1="76.135521" + sodipodi:r2="38.06776" + sodipodi:arg1="0.83853957" + sodipodi:arg2="1.4668581" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 266.68257,94.545618 -46.9508,-18.757197 -42.06885,28.043209 3.33056,-50.449159 -39.67067,-31.344031 49.0092,-12.4220962 17.55104,-47.4148808 26.95879,42.7718766 50.5178,2.0400232 -32.34775,38.8565702 z m -371.1691,166.483262 -0.90244,-22.7828 -19.27953,-12.17251 21.38886,-7.89853 5.619046,-22.09744 14.121475,17.90123 22.752286,-1.48445 -12.661305,18.96211 8.442643,21.17998 -21.946593,-6.182 z m -136.76752,-122.26957 9.21698,-4.55807 1.47043,-10.17677 7.18318,7.35736 10.13307,-1.74634 -4.77754,9.10516 4.79216,9.09747 -10.13586,-1.73005 -7.17136,7.36888 -1.48677,-10.17439 z m 23.32278,52.2723 9.21698,-4.55806 1.47043,-10.17677 7.18318,7.35736 10.13307,-1.74634 -4.77753,9.10516 4.79215,9.09747 -10.13586,-1.73006 -7.17135,7.36889 -1.48677,-10.17439 z m 240.369314,69.99726 -0.902435,-22.7828 -19.2795253,-12.1725 21.3888563,-7.89854 5.619043,-22.09743 14.121475,17.90123 22.752285,-1.48446 -12.661305,18.96211 8.442642,21.17999 -21.946591,-6.18201 z M -114.32947,138.7593 l 9.21698,-4.55806 1.47043,-10.17677 7.183182,7.35736 10.133068,-1.74634 -4.777534,9.10516 4.792156,9.09747 -10.135861,-1.73006 -7.171351,7.36889 -1.48677,-10.17439 z m 23.322783,52.27231 9.216984,-4.55807 1.470425,-10.17676 7.183182,7.35735 10.133067,-1.74634 -4.777534,9.10516 4.792156,9.09747 -10.13586,-1.73005 -7.171353,7.36888 -1.486772,-10.17439 z m -136.969053,208.59615 11.87722,-21.44111 -10.9293,-21.93947 24.06197,4.67024 17.48833,-17.17405 2.9939,24.32748 21.73768,11.32532 -22.21164,10.36497 -4.0537,24.17348 -16.72145,-17.92157 z m -57.49882,-188.64685 11.01273,0.95162 7.0272,-8.53254 2.49808,10.76779 10.28645,4.04657 -9.46883,5.70325 -0.66982,11.03345 -8.35014,-7.24299 -10.70043,2.77249 4.30816,-10.17967 z m 67.12627,-58.34461 1.63171,4.71032 4.80529,1.32619 -3.97555,3.00741 0.22364,4.97992 -4.08874,-2.85163 -4.66707,1.75157 1.44857,-4.76982 -3.10805,-3.89739 4.984,-0.0963 z m -26.55992,8.03834 1.63171,4.71032 4.80529,1.32619 -3.97555,3.00741 0.22364,4.97992 -4.08874,-2.85163 -4.66708,1.75157 1.44858,-4.76982 -3.10805,-3.89739 4.984,-0.0963 z m -48.28595,111.35321 11.01273,0.95161 7.0272,-8.53253 2.49808,10.76779 10.28645,4.04657 -9.46883,5.70324 -0.66982,11.03346 -8.35015,-7.24299 -10.70042,2.77248 4.30816,-10.17966 z m 67.12626,-58.34461 1.63172,4.71032 4.80529,1.32618 -3.97555,3.00742 0.22363,4.97992 -4.08873,-2.85163 -4.66708,1.75157 1.44857,-4.76982 -3.10805,-3.89739 4.98401,-0.0963 z m -26.55992,8.03834 1.63172,4.71032 4.80529,1.32618 -3.97556,3.00742 0.22364,4.97992 -4.08874,-2.85163 -4.66707,1.75157 1.44857,-4.76982 -3.10805,-3.89739 4.98401,-0.0963 z m -91.99801,-78.56493 9.59016,7.01664 11.21695,-3.9223 -3.7097,11.28905 7.19655,9.4559 -11.88288,-0.0396 -6.76923,9.76636 -3.63432,-11.31354 -11.38018,-3.41995 9.63675,-6.95252 z m 94.23061,-16.18164 -1.1275,5.23892 3.6765,3.89882 -5.33092,0.5466 -2.5719,4.70137 -2.1672,-4.9011 -5.26602,-0.99323 3.99152,-3.57564 -0.68268,-5.31522 4.63409,2.69123 z m 23.97937,35.83428 -2.36476,0.49832 -0.93012,2.23054 -1.20468,-2.09504 -2.4088,-0.19531 1.62023,-1.79313 -0.5586,-2.35125 2.20604,0.98682 2.06356,-1.25784 -0.25682,2.40302 z m -2.25082,-13.26343 -2.36476,0.49832 -0.93012,2.23054 -1.20468,-2.09503 -2.40879,-0.19532 1.62023,-1.79312 -0.55861,-2.35126 2.20604,0.98683 2.06356,-1.25784 -0.25682,2.40301 z m -50.6208,-29.99665 -1.12749,5.23892 3.6765,3.89882 -5.33093,0.54661 -2.5719,4.70136 -2.16719,-4.9011 -5.26603,-0.99323 3.99152,-3.57564 -0.68267,-5.31521 4.63409,2.69123 z m 23.97937,35.83428 -2.36476,0.49832 -0.93012,2.23054 -1.20468,-2.09503 -2.40879,-0.19532 1.62022,-1.79313 -0.5586,-2.35125 2.20604,0.98682 2.06356,-1.25784 -0.25682,2.40302 z m -2.25081,-13.26343 -2.36477,0.49832 -0.93011,2.23055 -1.20469,-2.09504 -2.40879,-0.19532 1.62023,-1.79312 -0.5586,-2.35125 2.20604,0.98682 2.06356,-1.25784 -0.25682,2.40301 z m -97.76137,85.60873 9.59016,7.01665 11.21695,-3.9223 -3.70971,11.28904 7.19656,9.4559 -11.88288,-0.0396 -6.76923,9.76636 -3.63433,-11.31353 -11.38017,-3.41996 9.63675,-6.95252 z m 94.23061,-16.18164 -1.1275,5.23892 3.6765,3.89883 -5.33092,0.5466 -2.57191,4.70136 -2.16719,-4.9011 -5.26603,-0.99322 3.99153,-3.57565 -0.68268,-5.31521 4.63409,2.69123 z m 23.97937,35.83428 -2.36477,0.49832 -0.93011,2.23054 -1.20469,-2.09503 -2.40879,-0.19532 1.62023,-1.79312 -0.5586,-2.35126 2.20604,0.98683 2.06356,-1.25784 -0.25682,2.40301 z m -2.25082,-13.26343 -2.36476,0.49832 -0.93012,2.23055 -1.20468,-2.09504 -2.4088,-0.19531 1.62023,-1.79313 -0.5586,-2.35125 2.20604,0.98682 2.06356,-1.25784 -0.25682,2.40302 z m -50.6208,-29.99665 -1.1275,5.23892 3.6765,3.89883 -5.33092,0.5466 -2.5719,4.70136 -2.1672,-4.9011 -5.26602,-0.99322 3.99152,-3.57565 -0.68268,-5.31521 4.63409,2.69123 z m 23.97937,35.83428 -2.36476,0.49832 -0.93012,2.23054 -1.20468,-2.09503 -2.4088,-0.19532 1.62023,-1.79312 -0.5586,-2.35126 2.20604,0.98683 2.06356,-1.25784 -0.25682,2.40301 z m -2.25082,-13.26343 -2.36476,0.49833 -0.93012,2.23054 -1.20468,-2.09504 -2.40879,-0.19531 1.62023,-1.79313 -0.5586,-2.35125 2.20604,0.98682 2.06355,-1.25784 -0.25682,2.40302 z m 216.114196,172.93556 11.877219,-21.44111 -10.9293,-21.93946 24.061973,4.67023 17.4883301,-17.17404 2.9938982,24.32747 21.7376827,11.32532 -22.2116421,10.36497 -4.0537039,24.17348 -16.721448,-17.92157 z M -109.638,210.98091 l 11.012732,0.95162 7.027203,-8.53254 2.498082,10.76779 10.286453,4.04657 -9.468832,5.70325 -0.669825,11.03346 -8.350142,-7.243 -10.700431,2.77249 4.30816,-10.17967 z m 67.126274,-58.34461 1.631712,4.71032 4.805291,1.32619 -3.975552,3.00741 0.223639,4.97992 -4.088739,-2.85163 -4.667074,1.75157 1.448572,-4.76982 -3.108049,-3.89739 4.984006,-0.0963 z m -26.559922,8.03834 1.631712,4.71032 4.805291,1.32619 -3.975552,3.00741 0.223639,4.97992 -4.088739,-2.85163 -4.667074,1.75157 1.448573,-4.76982 -3.10805,-3.89739 4.984006,-0.0963 z m -48.285952,111.35321 11.01273,0.95162 7.027203,-8.53254 2.498082,10.76779 10.286452,4.04657 -9.468831,5.70325 -0.669825,11.03345 -8.350141,-7.24299 -10.70043,2.77248 4.30816,-10.17966 z m 67.12627,-58.34461 1.631712,4.71032 4.805291,1.32618 -3.975552,3.00742 0.223639,4.97992 -4.088739,-2.85163 -4.667074,1.75157 1.448573,-4.76982 -3.108049,-3.89739 4.984005,-0.0963 z m -26.559921,8.03834 1.631713,4.71032 4.80529,1.32618 -3.975552,3.00742 0.223639,4.97992 -4.088739,-2.85163 -4.667073,1.75157 1.448572,-4.76982 -3.108049,-3.89739 4.984006,-0.0963 z m -91.998009,-78.56493 9.59015,7.01664 11.21696,-3.9223 -3.70971,11.28905 7.19656,9.4559 -11.88288,-0.0396 -6.76924,9.76636 -3.63432,-11.31354 -11.38017,-3.41995 9.63675,-6.95252 z m 94.230605,-16.18164 -1.127497,5.23891 3.6765,3.89883 -5.330923,0.5466 -2.571904,4.70137 -2.167194,-4.9011 -5.266024,-0.99323 3.991522,-3.57565 -0.682677,-5.31521 4.634091,2.69123 z m 23.979371,35.83428 -2.364764,0.49832 -0.930116,2.23054 -1.204684,-2.09504 -2.408793,-0.19531 1.620228,-1.79313 -0.5586,-2.35125 2.20604,0.98682 2.063559,-1.25784 -0.25682,2.40302 z m -2.250817,-13.26343 -2.364764,0.49832 -0.930115,2.23054 -1.204684,-2.09503 -2.408793,-0.19532 1.620228,-1.79312 -0.558601,-2.35126 2.206041,0.98683 2.063558,-1.25784 -0.25682,2.40301 z m -50.620799,-29.99665 -1.1275,5.23892 3.6765,3.89882 -5.33092,0.54661 -2.57191,4.70136 -2.16719,-4.9011 -5.26602,-0.99323 3.99152,-3.57564 -0.68268,-5.31521 4.63409,2.69122 z m 23.979368,35.83428 -2.364764,0.49832 -0.930115,2.23054 -1.204684,-2.09503 -2.408793,-0.19532 1.620228,-1.79313 -0.558601,-2.35125 2.20604,0.98682 2.063559,-1.25784 -0.25682,2.40302 z m -2.250816,-13.26343 -2.364764,0.49832 -0.930115,2.23055 -1.204685,-2.09504 -2.408793,-0.19532 1.620229,-1.79312 -0.558601,-2.35125 2.20604,0.98682 2.063559,-1.25784 -0.25682,2.40301 z m -97.761372,85.60873 9.59016,7.01665 11.21695,-3.9223 -3.7097,11.28904 7.19656,9.4559 -11.88289,-0.0396 -6.76923,9.76637 -3.63432,-11.31354 -11.38018,-3.41995 9.63675,-6.95253 z m 94.230613,-16.18164 -1.127497,5.23892 3.676499,3.89883 -5.330922,0.5466 -2.571904,4.70136 -2.167195,-4.9011 -5.266024,-0.99322 3.991523,-3.57565 -0.682678,-5.31521 4.634091,2.69123 z m 23.979371,35.83428 -2.364764,0.49832 -0.930116,2.23054 -1.204684,-2.09503 -2.408793,-0.19532 1.620228,-1.79312 -0.558601,-2.35126 2.206041,0.98683 2.063559,-1.25784 -0.25682,2.40301 z m -2.250817,-13.26343 -2.364764,0.49833 -0.930115,2.23054 -1.204684,-2.09504 -2.408794,-0.19531 1.620229,-1.79313 -0.558601,-2.35125 2.20604,0.98682 2.063559,-1.25784 -0.25682,2.40302 z m -50.620797,-29.99665 -1.1275,5.23892 3.6765,3.89883 -5.33092,0.5466 -2.57191,4.70136 -2.16719,-4.9011 -5.26603,-0.99322 3.99153,-3.57565 -0.68268,-5.31521 4.63409,2.69123 z m 23.979366,35.83428 -2.364764,0.49832 -0.930116,2.23054 -1.204684,-2.09503 -2.408793,-0.19532 1.620228,-1.79312 -0.5586,-2.35126 2.20604,0.98683 2.063559,-1.25784 -0.25682,2.40301 z m -2.250817,-13.26342 -2.364764,0.49832 -0.930115,2.23054 -1.204684,-2.09504 -2.408793,-0.19531 1.620228,-1.79313 -0.558601,-2.35125 2.206041,0.98682 2.063559,-1.25784 -0.256821,2.40302 z" + inkscape:transform-center-x="-24.653541" + inkscape:transform-center-y="-55.686245" + inkscape:path-effect="#path-effect817;#path-effect821" /> + <g + id="g831" + inkscape:path-effect="#path-effect833" + transform="matrix(0.75654809,0,0,0.75654809,31.053871,32.274512)"> + <path + id="path823" + d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z m -88.19446,66.14584 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z m 121.45635,-22.04861 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z" /> + <path + id="path825" + d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z m -138.08731,62.61805 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 138.08731,-20.87268 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/VonCoch_multi_px_1_0_2.svg b/testfiles/lpe_tests/VonCoch_multi_px_1_0_2.svg new file mode 100644 index 0000000..8120b1d --- /dev/null +++ b/testfiles/lpe_tests/VonCoch_multi_px_1_0_2.svg @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="793.70081" + height="1122.5197" + viewBox="0 0 793.70081 1122.5197" + version="1.1" + id="svg8" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="vonkoch" + id="path-effect833" + is_visible="true" + ref_path="m -375.70834,324.59225 h 207.13096" + generator="m -375.70834,390.73809 h 69.04365 m 69.04366,0 h 69.04365" + similar_only="false" + nbgenerations="2" + drawall="true" + maxComplexity="1000" + lpeversion="1" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect821" + is_visible="true" + ref_path="m -189.93073,104.61994 c 26.3037,-257.08984 -114.35051,-192.499198 -22.75111,-179.916663" + generator="m -205.04978,179.39766 h 87.91828 m 87.918286,0 h 87.918281" + similar_only="false" + nbgenerations="2" + drawall="true" + maxComplexity="1000" + ref_path-nodetypes="cc" + lpeversion="1" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect817" + is_visible="true" + ref_path="m -131.6818,-17.162038 c 61.776508,8.4289062 -20.6309,-55.972593 57.339248,-128.511902" + generator="m -131.6818,76.440842 h 63.462291 m 63.4622881,0 H 58.705067" + similar_only="true" + nbgenerations="2" + drawall="true" + maxComplexity="996" + ref_path-nodetypes="cc" + lpeversion="1" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.12374369" + inkscape:cx="-1713.4312" + inkscape:cy="306.16165" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:document-rotation="0" + units="px" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:path-effect="#path-effect817" + inkscape:transform-center-y="-213.76068" + inkscape:transform-center-x="169.85268" + d="M 837.02217,382.99589 692.77257,325.3671 563.52204,411.52582 573.7547,256.52802 451.87227,160.22798 602.44601,122.06287 656.36905,-23.612563 739.19607,107.7979 l 155.20871,6.26768 -99.38382,119.38125 z m -955.50171,165.92388 -2.77261,-69.99687 -59.23358,-37.3983 65.7142,-24.26712 17.263709,-67.89119 43.386212,54.99896 69.903139,-4.56077 -38.900047,58.25835 L 2.8202927,523.13531 -64.60747,504.14199 Z M -362.3896,185.8973 l 28.31787,-14.00401 4.51767,-31.26666 22.0693,22.60442 31.1324,-5.36538 -14.67829,27.9743 14.72321,27.95069 -31.14098,-5.31535 -22.03295,22.63984 -4.5679,-31.25937 z m 23.32279,52.2723 28.31787,-14.004 4.51767,-31.26666 22.0693,22.60441 31.1324,-5.36537 -14.67829,27.9743 14.72321,27.95068 -31.14098,-5.31535 -22.03295,22.63984 -4.5679,-31.25936 z M 8.4450358,548.91975 5.6724333,478.92288 -53.561145,441.52459 l 65.714196,-24.26713 17.263705,-67.89119 43.38621,54.99897 69.903134,-4.56078 -38.90004,58.25836 25.93881,65.07247 -67.427764,-18.99332 z M -235.46501,185.89729 l 28.31787,-14.004 4.51767,-31.26666 22.0693,22.60441 31.1324,-5.36537 -14.67829,27.9743 14.72321,27.95068 -31.14098,-5.31535 -22.03295,22.63984 -4.5679,-31.25936 z m 23.32279,52.2723 28.31787,-14.004 4.51767,-31.26666 22.06929,22.60442 31.1324,-5.36538 -14.67829,27.9743 14.72322,27.95068 -31.14098,-5.31535 -22.03296,22.63984 -4.56789,-31.25936 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="1.4668581" + sodipodi:arg1="0.83853957" + sodipodi:r2="116.95774" + sodipodi:r1="233.91548" + sodipodi:cy="209.04054" + sodipodi:cx="680.63806" + sodipodi:sides="5" + id="path819" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:23.2439;stroke-miterlimit:4;stroke-dasharray:none" + sodipodi:type="star" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:23.2439;stroke-miterlimit:4;stroke-dasharray:none" + id="path815" + sodipodi:sides="5" + sodipodi:cx="1436.2018" + sodipodi:cy="219.58328" + sodipodi:r1="233.91548" + sodipodi:r2="116.95774" + sodipodi:arg1="0.83853957" + sodipodi:arg2="1.4668581" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 1592.5859,393.53863 -144.2496,-57.62879 -129.2505,86.15872 10.2326,-154.9978 -121.8824,-96.30004 150.5737,-38.16511 53.9231,-145.675434 82.827,131.410464 155.2087,6.26768 -99.3838,119.38125 z M 16.015712,862.02655 l -2.772603,-69.99687 -59.233582,-37.39829 65.7142,-24.26713 17.263706,-67.89119 43.386212,54.99896 69.903135,-4.56077 -38.90004,58.25836 25.93881,65.07247 -67.427766,-18.99332 z m -482.640522,-563.20473 28.31786,-14.004 4.51767,-31.26666 22.0693,22.60441 31.1324,-5.36537 -14.67829,27.9743 14.72322,27.95069 -31.14098,-5.31535 -22.03296,22.63984 -4.56789,-31.25937 z m 23.32279,52.2723 28.31787,-14.004 4.51767,-31.26666 22.06929,22.60442 31.1324,-5.36538 -14.67828,27.9743 14.72321,27.95068 -31.14098,-5.31535 -22.03296,22.63985 -4.56789,-31.25937 z m 586.2423,510.93239 -2.7726,-69.99687 -59.233578,-37.39829 65.714198,-24.26712 17.2637,-67.89119 43.38621,54.99896 69.90314,-4.56077 -38.90005,58.25835 25.93881,65.07248 -67.42776,-18.99332 z m -482.6405,-563.2047 28.31787,-14.004 4.51767,-31.26666 22.06929,22.60442 31.1324,-5.36538 -14.67828,27.9743 14.72321,27.95068 -31.14098,-5.31535 -22.03296,22.63985 -4.56789,-31.25937 z m 23.3228,52.2723 28.31786,-14.004 4.51767,-31.26666 22.0693,22.60441 31.13239,-5.36537 -14.67828,27.9743 14.72321,27.95068 -31.14098,-5.31535 -22.03295,22.63984 -4.5679,-31.25936 z m -136.04703,668.06869 36.49106,-65.87472 -33.57871,-67.40586 73.92696,14.34864 53.73039,-52.76481 9.19833,74.7427 66.78591,34.79541 -68.24209,31.84489 -12.45442,74.26955 -51.37425,-55.0615 z m -129.44106,-786.77683 33.83503,2.9237 21.59008,-26.215 7.675,33.0825 31.60365,12.4325 -29.09163,17.52242 -2.05794,33.89871 -25.65461,-22.25306 -32.87554,8.51806 13.23621,-31.27556 z m 300.23906,-197.881349 5.01321,14.471779 14.76356,4.074515 -12.21431,9.239865 0.6871,15.30008 -12.56207,-8.761227 -14.33891,5.381454 4.45053,-14.654601 -9.54904,-11.974159 15.31265,-0.295814 z m -26.55991,8.038346 5.0132,14.471778 14.76356,4.074515 -12.21431,9.239864 0.6871,15.30008 -12.56206,-8.761227 -14.33892,5.381454 4.45053,-14.654601 -9.54903,-11.974158 15.31264,-0.295814 z m -281.39874,250.889943 33.83504,2.9237 21.59007,-26.21501 7.675,33.08251 31.60365,12.4325 -29.09163,17.52241 -2.05794,33.89871 -25.65461,-22.25306 -32.87553,8.51806 13.2362,-31.27556 z m 300.23905,-197.881344 5.01321,14.471774 14.76356,4.07452 -12.21431,9.23986 0.6871,15.30008 -12.56207,-8.76122 -14.33891,5.38145 4.45053,-14.6546 -9.54904,-11.97416 15.31265,-0.29581 z m -26.55991,8.038344 5.0132,14.47178 14.76356,4.07451 -12.21431,9.23987 0.6871,15.30008 -12.56206,-8.76123 -14.33892,5.38145 4.45053,-14.6546 -9.54903,-11.97415 15.31264,-0.29582 z m -313.04669,-106.066771 29.46438,21.557637 34.46248,-12.0507049 -11.39753,34.6839739 22.11039,29.051892 -36.50845,-0.121762 -20.79751,30.005765 -11.16592,-34.759231 -34.96396,-10.507311 29.60753,-21.360622 z m 386.28885,-14.405201 -3.46407,16.09582315 11.29552,11.97858885 -16.3785,1.679354 -7.9018,14.444264 -6.6584,-15.057926 -16.1791,-3.0515422 12.26338,-10.9856637 -2.09743,-16.3302211 14.23758,8.268412 z m 76.91437,156.441262 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60009 4.97792,-5.50911 -1.71622,-7.2239 6.77774,3.03188 6.33999,-3.86453 -0.78904,7.38291 z m -2.25082,-13.26343 -7.2654,1.53103 -2.85765,6.85302 -3.70122,-6.4367 -7.40067,-0.60008 4.97792,-5.50912 -1.71622,-7.22389 6.77774,3.03187 6.33999,-3.86453 -0.78904,7.38292 z m -103.55579,-150.603623 -3.46408,16.0958231 11.29552,11.9785882 -16.37849,1.6793537 -7.90181,14.444264 -6.65839,-15.0579254 -16.17911,-3.0515423 12.26338,-10.9856633 -2.09743,-16.330221 14.23758,8.268412 z m 76.91436,156.441253 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60008 4.97792,-5.50912 -1.71622,-7.22389 6.77774,3.03187 6.33999,-3.86453 -0.78904,7.38292 z m -2.25082,-13.26342 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60009 4.97792,-5.50911 -1.71622,-7.2239 6.77774,3.03188 6.33999,-3.86453 -0.78904,7.38291 z m -442.75461,-36.7747 29.46439,21.55764 34.46248,-12.050708 -11.39754,34.683978 22.11039,29.05189 -36.50845,-0.12176 -20.7975,30.00576 -11.16593,-34.75923 -34.96396,-10.50731 29.60753,-21.36062 z m 386.28886,-14.405201 -3.46407,16.095823 11.29552,11.978589 -16.3785,1.679354 -7.90181,14.444265 -6.65839,-15.057926 -16.17911,-3.051543 12.26339,-10.985664 -2.09743,-16.330221 14.23758,8.268412 z m 76.91437,156.441261 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60008 4.97792,-5.50912 -1.71622,-7.22389 6.77774,3.03187 6.33999,-3.86453 -0.78904,7.38292 z m -2.25082,-13.26342 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60009 4.97792,-5.50911 -1.71622,-7.2239 6.77774,3.03188 6.33999,-3.86453 -0.78904,7.38291 z m -103.5558,-150.603632 -3.46407,16.095823 11.29552,11.978589 -16.3785,1.679353 -7.9018,14.444267 -6.6584,-15.057928 -16.1791,-3.051542 12.26338,-10.985664 -2.09743,-16.330221 14.23758,8.268412 z m 76.91437,156.441252 -7.2654,1.53102 -2.85765,6.85303 -3.70122,-6.4367 -7.40067,-0.60008 4.97792,-5.50912 -1.71622,-7.22389 6.77774,3.03187 6.33999,-3.86453 -0.78904,7.38292 z m -2.25082,-13.26342 -7.2654,1.53102 -2.85765,6.85302 -3.70122,-6.43669 -7.40067,-0.60008 4.97792,-5.50912 -1.71622,-7.22389 6.77774,3.03187 6.33999,-3.86453 -0.78904,7.38292 z m -69.00093,815.72068 36.49105,-65.87471 -33.57871,-67.40586 73.92697,14.34864 53.73039,-52.76481 9.19832,74.7427 66.785916,34.79541 -68.242086,31.84489 -12.45443,74.26954 -51.37425,-55.0615 z m -129.44107,-786.77682 33.83504,2.92369 21.59007,-26.215 7.675,33.0825 31.60365,12.4325 -29.09163,17.52242 -2.05794,33.89871 -25.65461,-22.25306 -32.87553,8.51806 13.2362,-31.27556 z m 300.23907,-197.88136 5.0132,14.471778 14.763569,4.074516 -12.214314,9.239864 0.687098,15.300081 -12.562063,-8.761228 -14.33892,5.381455 4.45053,-14.654602 -9.54903,-11.974159 15.31264,-0.295814 z m -26.55992,8.038346 5.0132,14.471778 14.76357,4.074515 -12.21431,9.239864 0.68709,15.30008 -12.56206,-8.761227 -14.33892,5.381454 4.45054,-14.654601 -9.54904,-11.974158 15.31264,-0.295814 z m -281.39874,250.889944 33.83504,2.9237 21.59007,-26.21501 7.675,33.08251 31.60365,12.4325 -29.09163,17.52241 -2.05794,33.89871 -25.65461,-22.25306 -32.87553,8.51806 13.2362,-31.27556 z m 300.23906,-197.881345 5.0132,14.471775 14.763567,4.07452 -12.214317,9.23986 0.6871,15.30008 -12.56206,-8.76122 -14.33892,5.38145 4.45053,-14.6546 -9.54903,-11.97416 15.31264,-0.29581 z m -26.55992,8.038345 5.0132,14.47178 14.76357,4.07451 -12.21431,9.23987 0.68709,15.30008 -12.56206,-8.76123 -14.33891,5.38145 4.45053,-14.6546 -9.54904,-11.97415 15.31264,-0.29582 z m -313.04669,-106.0667731 29.46439,21.5576371 34.46247,-12.0507049 -11.39753,34.6839749 22.11039,29.051892 -36.50845,-0.121762 -20.7975,30.005766 -11.16593,-34.759232 -34.96396,-10.507312 29.60753,-21.360622 z m 386.288858,-14.4052019 -3.464073,16.0958241 11.295519,11.9785889 -16.378495,1.679354 -7.901808,14.444264 -6.658394,-15.057926 -16.179107,-3.0515421 12.263384,-10.9856639 -2.097429,-16.330222 14.237581,8.2684128 z m 76.914366,156.441265 -7.2653985,1.53102 -2.85764661,6.85302 -3.70121979,-6.43669 -7.4006721,-0.60009 4.9779193,-5.50911 -1.7162203,-7.2239 6.777743,3.03188 6.3399897,-3.86453 -0.7890437,7.38291 z m -2.2508192,-13.26343 -7.26539851,1.53103 -2.85764649,6.85302 -3.7012195,-6.4367 -7.4006723,-0.60008 4.9779195,-5.50912 -1.7162205,-7.22389 6.777743,3.03187 6.3399894,-3.86453 -0.7890437,7.38292 z M -95.719478,-24.307855 -99.183551,-8.2120321 -87.888033,3.7665563 -104.26653,5.44591 l -7.9018,14.444264 -6.6584,-15.0579254 -16.1791,-3.0515423 12.26338,-10.9856634 -2.09743,-16.3302209 14.23758,8.268412 z m 76.914362,156.441255 -7.265399,1.53102 -2.857646,6.85302 -3.70122,-6.43669 -7.400672,-0.60008 4.977919,-5.50912 -1.71622,-7.22389 6.777743,3.03187 6.339989,-3.86453 -0.789043,7.38292 z m -2.25082,-13.26342 -7.265398,1.53102 -2.857646,6.85302 -3.70122,-6.43669 -7.400671,-0.60009 4.977919,-5.50911 -1.71622,-7.2239 6.777742,3.03188 6.339989,-3.86453 -0.789044,7.38291 z m -442.754614,-36.774701 29.46439,21.557641 34.46248,-12.050709 -11.39754,34.683979 22.1104,29.05189 -36.50846,-0.12176 -20.7975,30.00576 -11.16593,-34.75923 -34.96396,-10.50731 29.60753,-21.36062 z m 386.288866,-14.405202 -3.464073,16.095824 11.295519,11.978589 -16.378495,1.679354 -7.901808,14.444266 -6.658399,-15.057927 -16.1791,-3.051543 12.26338,-10.985664 -2.09743,-16.330222 14.237584,8.268413 z m 76.91436701,156.441263 -7.26539901,1.53102 -2.857647,6.85302 -3.701219,-6.43669 -7.400673,-0.60008 4.97792,-5.50912 -1.716221,-7.22389 6.777744,3.03187 6.3399893,-3.86453 -0.7890438,7.38292 z m -2.25081961,-13.26342 -7.2653984,1.53102 -2.857647,6.85302 -3.701219,-6.43669 -7.400672,-0.60009 4.977919,-5.50911 -1.71622,-7.2239 6.777742,3.03188 6.3399899,-3.86453 -0.7890437,7.38291 z M -106.41393,60.264287 -109.878,76.36011 l 11.295515,11.978589 -16.378495,1.679353 -7.90181,14.444268 -6.65839,-15.057929 -16.17911,-3.051542 12.26339,-10.985664 -2.09743,-16.330221 14.23758,8.268412 z m 76.914362,156.441253 -7.265399,1.53103 -2.857646,6.85302 -3.70122,-6.4367 -7.400672,-0.60008 4.97792,-5.50912 -1.716221,-7.22389 6.777743,3.03187 6.33999,-3.86453 -0.789044,7.38292 z m -2.250819,-13.26342 -7.265399,1.53102 -2.857646,6.85302 -3.701219,-6.43669 -7.400672,-0.60008 4.977919,-5.50912 -1.71622,-7.22389 6.777742,3.03187 6.339989,-3.86453 -0.789043,7.38292 z" + inkscape:transform-center-x="84.864687" + inkscape:transform-center-y="-333.1692" + inkscape:path-effect="#path-effect817;#path-effect821" /> + <g + id="g831" + inkscape:path-effect="#path-effect833" + transform="matrix(2.3243857,0,0,2.3243857,868.65045,202.21959)"> + <path + id="path823" + d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z m -88.19446,66.14584 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z m 121.45635,-22.04861 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z" /> + <path + id="path825" + d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z m -138.08731,62.61805 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 138.08731,-20.87268 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpe_tests/VonCoch_path_0_92_5.svg b/testfiles/lpe_tests/VonCoch_path_0_92_5.svg new file mode 100644 index 0000000..fb0b2e5 --- /dev/null +++ b/testfiles/lpe_tests/VonCoch_path_0_92_5.svg @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.3 (unknown)" + sodipodi:docname="1.svg"> + <defs + id="defs2"> + <inkscape:path-effect + effect="vonkoch" + id="path-effect833" + is_visible="true" + ref_path="m -375.70834,324.59225 h 207.13096" + generator="m -375.70834,390.73809 h 69.04365 m 69.04366,0 h 69.04365" + similar_only="false" + nbgenerations="2" + drawall="true" + maxComplexity="1000" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect821" + is_visible="true" + ref_path="m -189.93073,104.61994 c 26.3037,-257.08984 -114.35051,-192.499198 -22.75111,-179.916663" + generator="m -205.04978,179.39766 h 87.91828 m 87.918286,0 h 87.918281" + similar_only="false" + nbgenerations="2" + drawall="true" + maxComplexity="1000" + ref_path-nodetypes="cc" /> + <inkscape:path-effect + effect="vonkoch" + id="path-effect817" + is_visible="true" + ref_path="m -131.6818,-17.162038 c 61.776508,8.4289062 -20.6309,-55.972593 57.339248,-128.511902" + generator="m -131.6818,76.440842 h 63.462291 m 63.4622881,0 H 58.705067" + similar_only="true" + nbgenerations="2" + drawall="true" + maxComplexity="996" + ref_path-nodetypes="cc" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.35" + inkscape:cx="-161.42857" + inkscape:cy="437.95857" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + inkscape:path-effect="#path-effect817" + inkscape:transform-center-y="-6.4894191" + inkscape:transform-center-x="3.2264591" + d="M 34.017851,64.166661 -28.041384,39.373534 -83.647702,76.440842 -79.245396,9.7575037 -131.6818,-31.672819 l 64.780013,-16.419443 23.19884,-62.672658 35.6339415,56.535568 66.7740725,2.696491 -42.757023,51.36034307 z m -168.746041,95.459919 -1.19284,-30.11414 -25.48354,-16.08954 28.27164,-10.44023 7.42722,-29.208227 18.66566,23.661718 30.073815,-1.962139 -16.735623,25.063978 11.159425,27.99556 -29.008857,-8.17133 z m -70.32159,-51.95491 12.18295,-6.02482 1.9436,-13.451577 9.49468,9.724899 13.39382,-2.308296 -6.31492,12.035134 6.33424,12.02498 -13.39751,-2.28678 -9.47904,9.74014 -1.96521,-13.44844 z m 23.32278,52.27231 12.18295,-6.02482 1.9436,-13.45158 9.49468,9.7249 13.39382,-2.3083 -6.31491,12.03514 6.33423,12.02498 -13.39751,-2.28678 -9.47904,9.74014 -1.96521,-13.44844 z M -7.8036148,159.62658 -8.9964486,129.51244 -34.479988,113.4229 -6.2083491,102.98267 1.218864,73.774443 19.884532,97.43616 49.958342,95.474021 33.22272,120.538 44.382143,148.53356 15.373292,140.36223 Z m -70.3215802,-51.95491 12.182945,-6.02482 1.943598,-13.451578 9.49468,9.724899 13.393818,-2.308296 -6.31491,12.035135 6.334237,12.02498 -13.397509,-2.28678 -9.479044,9.74014 -1.965206,-13.44844 z m 23.322781,52.27231 12.182945,-6.02482 1.943598,-13.45158 9.494679,9.7249 13.393818,-2.3083 -6.31491,12.03514 6.334237,12.02497 -13.397509,-2.28677 -9.479044,9.74014 -1.965205,-13.44844 z" + inkscape:randomized="0" + inkscape:rounded="0" + inkscape:flatsided="false" + sodipodi:arg2="1.4668581" + sodipodi:arg1="0.83853957" + sodipodi:r2="50.317703" + sodipodi:r1="100.6354" + sodipodi:cy="-10.672619" + sodipodi:cx="-33.261906" + sodipodi:sides="5" + id="path819" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + sodipodi:type="star" + transform="translate(-47.625,13.607143)" /> + <path + sodipodi:type="star" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + id="path815" + sodipodi:sides="5" + sodipodi:cx="-33.261906" + sodipodi:cy="-10.672619" + sodipodi:r1="100.6354" + sodipodi:r2="50.317703" + sodipodi:arg1="0.83853957" + sodipodi:arg2="1.4668581" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="M 34.017851,64.166661 -28.041384,39.373534 -83.647702,76.440842 -79.245396,9.7575037 -131.6818,-31.672819 l 64.780013,-16.419443 23.19884,-62.672658 35.6339415,56.535568 66.7740725,2.696491 -42.757023,51.36034307 z m -168.746041,95.459919 -1.19284,-30.11414 -25.48354,-16.08954 28.27164,-10.44023 7.42722,-29.208227 18.66566,23.661718 30.073815,-1.962139 -16.735623,25.063978 11.159425,27.99556 -29.008857,-8.17133 z m -70.32159,-51.95491 12.18295,-6.02482 1.9436,-13.451577 9.49468,9.724899 13.39382,-2.308296 -6.31492,12.035134 6.33424,12.02498 -13.39751,-2.28678 -9.47904,9.74014 -1.96521,-13.44844 z m 23.32278,52.27231 12.18295,-6.02482 1.9436,-13.45158 9.49468,9.7249 13.39382,-2.3083 -6.31491,12.03514 6.33423,12.02498 -13.39751,-2.28678 -9.47904,9.74014 -1.96521,-13.44844 z M -7.8036148,159.62658 -8.9964486,129.51244 -34.479988,113.4229 -6.2083491,102.98267 1.218864,73.774443 19.884532,97.43616 49.958342,95.474021 33.22272,120.538 44.382143,148.53356 15.373292,140.36223 Z m -70.3215802,-51.95491 12.182945,-6.02482 1.943598,-13.451578 9.49468,9.724899 13.393818,-2.308296 -6.31491,12.035135 6.334237,12.02498 -13.397509,-2.28678 -9.479044,9.74014 -1.965206,-13.44844 z m 23.322781,52.27231 12.182945,-6.02482 1.943598,-13.45158 9.494679,9.7249 13.393818,-2.3083 -6.31491,12.03514 6.334237,12.02497 -13.397509,-2.28677 -9.479044,9.74014 -1.965205,-13.44844 z m -144.411186,129.62665 15.69922,-28.34071 -14.44627,-28.99943 31.80494,6.17309 23.11596,-22.70054 3.95731,32.15589 28.73272,14.96973 -29.35919,13.70034 -5.35816,31.95234 -22.1023,-23.68861 z m -35.65017,-86.96772 14.55655,1.25783 9.2885,-11.27825 3.30195,14.2328 13.59656,5.34872 -12.51583,7.53852 -0.88537,14.58394 -11.03716,-9.57374 -14.14375,3.66465 5.69449,-13.45541 z m 29.26574,-30.66267 2.15679,6.22607 6.3516,1.75294 -5.25486,3.97519 0.29561,6.58241 -5.40447,-3.76926 -6.16891,2.31521 1.91472,-6.30472 -4.1082,-5.15153 6.58782,-0.12727 z m -26.55992,8.03834 2.15679,6.22607 6.3516,1.75294 -5.25486,3.97518 0.2956,6.58242 -5.40446,-3.76926 -6.16891,2.31521 1.91472,-6.30472 -4.1082,-5.15153 6.58782,-0.12727 z m -10.42543,83.67126 14.55655,1.25784 9.28851,-11.27825 3.30195,14.23279 13.59656,5.34873 -12.51584,7.53851 -0.88537,14.58395 -11.03716,-9.57374 -14.14375,3.66465 5.6945,-13.45541 z m 29.26575,-30.66266 2.15679,6.22607 6.35159,1.75294 -5.25485,3.97518 0.2956,6.58242 -5.40446,-3.76926 -6.16891,2.31521 1.91471,-6.30472 -4.10819,-5.15153 6.58782,-0.12727 z m -26.55992,8.03834 2.15678,6.22606 6.3516,1.75295 -5.25485,3.97518 0.2956,6.58242 -5.40446,-3.76926 -6.16891,2.31521 1.91471,-6.30472 -4.10819,-5.15154 6.58782,-0.12726 z m -53.56341,-77.34142 12.67621,9.27455 14.82648,-5.18447 -4.90346,14.92178 9.51236,12.49874 -15.70671,-0.0524 -8.94752,12.90911 -4.80382,-14.95415 -15.04224,-4.52047 12.73779,-9.1898 z m 43.99714,-11.85726 -1.49032,6.92477 4.85958,5.15344 -7.04638,0.72249 -3.39953,6.21423 -2.86458,-6.47824 -6.96059,-1.31284 5.27597,-4.72626 -0.90236,-7.02561 6.12531,3.55725 z m 12.96787,15.94087 -3.12572,0.65868 -1.22942,2.94831 -1.59235,-2.7692 -3.18392,-0.25817 2.1416,-2.37014 -0.73835,-3.10787 2.91593,1.30438 2.7276,-1.66261 -0.33947,3.17629 z m -2.25081,-13.26343 -3.12573,0.65868 -1.22942,2.94832 -1.59234,-2.7692 -3.18393,-0.25817 2.14161,-2.37014 -0.73836,-3.10787 2.91593,1.30437 2.7276,-1.6626 -0.33946,3.17629 z m -39.6093,-10.10324 -1.49032,6.92477 4.85957,5.15344 -7.04638,0.72249 -3.39952,6.21423 -2.86458,-6.47824 -6.9606,-1.31283 5.27597,-4.72627 -0.90236,-7.02561 6.12531,3.55725 z m 12.96787,15.94087 -3.12573,0.65868 -1.22942,2.94831 -1.59234,-2.7692 -3.18393,-0.25817 2.14161,-2.37014 -0.73836,-3.10787 2.91593,1.30438 2.7276,-1.6626 -0.33946,3.17628 z m -2.25082,-13.26342 -3.12573,0.65867 -1.22942,2.94832 -1.59234,-2.7692 -3.18393,-0.25817 2.14161,-2.37014 -0.73835,-3.10787 2.91592,1.30437 2.7276,-1.6626 -0.33946,3.17629 z m -36.5164,101.17775 12.6762,9.27455 14.82649,-5.18447 -4.90346,14.92179 9.51236,12.49874 -15.70671,-0.0524 -8.94753,12.90912 -4.80382,-14.95416 -15.04223,-4.52047 12.73778,-9.18979 z m 43.99714,-11.85726 -1.49032,6.92477 4.85957,5.15344 -7.04637,0.7225 -3.39953,6.21422 -2.86458,-6.47823 -6.96059,-1.31284 5.27596,-4.72627 -0.90236,-7.02561 6.12531,3.55725 z m 12.96787,15.94087 -3.12573,0.65868 -1.22942,2.94832 -1.59234,-2.76921 -3.18393,-0.25816 2.14161,-2.37014 -0.73835,-3.10788 2.91593,1.30438 2.72759,-1.6626 -0.33946,3.17629 z m -2.25081,-13.26342 -3.12573,0.65868 -1.22942,2.94831 -1.59235,-2.7692 -3.18392,-0.25817 2.1416,-2.37014 -0.73835,-3.10787 2.91593,1.30437 2.7276,-1.6626 -0.33947,3.17629 z m -39.60931,-10.10324 -1.49031,6.92476 4.85957,5.15344 -7.04638,0.7225 -3.39952,6.21423 -2.86459,-6.47824 -6.96059,-1.31284 5.27597,-4.72627 -0.90236,-7.0256 6.12531,3.55724 z m 12.96788,15.94086 -3.12573,0.65868 -1.22942,2.94832 -1.59235,-2.76921 -3.18392,-0.25816 2.1416,-2.37014 -0.73835,-3.10787 2.91593,1.30437 2.7276,-1.6626 -0.33947,3.17629 z m -2.25082,-13.26342 -3.12573,0.65868 -1.22942,2.94831 -1.59234,-2.7692 -3.18393,-0.25817 2.14161,-2.37014 -0.73836,-3.10787 2.91593,1.30438 2.7276,-1.66261 -0.33946,3.17629 z m 254.936422,57.92 15.6992229,-28.34071 -14.4462709,-28.99943 31.8049472,6.17309 23.1159528,-22.70054 3.957316,32.15589 28.732715,14.96973 L 36.127653,276.529 30.769495,308.48134 8.6672013,284.79273 Z m -35.65017,-86.96772 14.55655,1.25783 9.288508,-11.27825 3.301948,14.2328 13.596561,5.34872 -12.515835,7.53852 -0.885371,14.58394 -11.037159,-9.57374 -14.14375,3.66465 5.694495,-13.45541 z m 29.265748,-30.66267 2.156786,6.22607 6.3516,1.75294 -5.254857,3.97519 0.295604,6.58242 -5.404467,-3.76927 -6.168905,2.31521 1.914712,-6.30472 -4.108197,-5.15153 6.587824,-0.12727 z m -26.559923,8.03834 2.156787,6.22607 6.351599,1.75294 -5.254857,3.97518 0.295604,6.58242 -5.404466,-3.76926 -6.168906,2.31521 1.914713,-6.30472 -4.108197,-5.15153 6.587823,-0.12727 z m -10.425428,83.67126 14.556549,1.25784 9.288508,-11.27825 3.301947,14.2328 13.59656,5.34872 -12.515834,7.53851 -0.885371,14.58395 -11.037158,-9.57374 -14.14375,3.66465 5.694495,-13.45541 z m 29.265746,-30.66266 2.156787,6.22607 6.351599,1.75294 -5.254857,3.97518 0.295604,6.58242 -5.404466,-3.76926 -6.168905,2.31521 1.914712,-6.30472 -4.108197,-5.15153 6.587824,-0.12727 z m -26.559921,8.03834 2.156786,6.22606 6.351599,1.75295 -5.254856,3.97518 0.295604,6.58242 -5.404466,-3.76926 -6.168905,2.31521 1.914712,-6.30472 -4.108197,-5.15153 6.587823,-0.12727 z m -53.563404,-77.34142 12.6762,9.27455 14.82649,-5.18447 -4.90346,14.92178 9.512359,12.49874 -15.706709,-0.0524 -8.94753,12.90911 -4.80382,-14.95415 -15.04223,-4.52047 12.73778,-9.1898 z m 43.997137,-11.85726 -1.490317,6.92477 4.859571,5.15344 -7.046375,0.72249 -3.399526,6.21423 -2.864582,-6.47824 -6.960594,-1.31284 5.275967,-4.72626 -0.902358,-7.02561 6.125309,3.55725 z m 12.967873,15.94087 -3.125728,0.65868 -1.229421,2.94831 -1.592343,-2.7692 -3.183926,-0.25817 2.141606,-2.37014 -0.738354,-3.10787 2.915929,1.30438 2.727598,-1.66261 -0.339463,3.17629 z m -2.250816,-13.26343 -3.125728,0.65868 -1.229421,2.94832 -1.592343,-2.7692 -3.183926,-0.25817 2.141607,-2.37014 -0.738355,-3.10787 2.915929,1.30437 2.727598,-1.6626 -0.339463,3.17629 z m -39.609304,-10.10324 -1.49032,6.92477 4.859575,5.15344 -7.046375,0.72249 -3.39953,6.21423 -2.86458,-6.47824 -6.96059,-1.31283 5.27596,-4.72627 -0.90235,-7.02561 6.12531,3.55725 z m 12.967873,15.94087 -3.125728,0.65868 -1.229421,2.94831 -1.592343,-2.7692 -3.183926,-0.25817 2.141607,-2.37014 -0.738355,-3.10787 2.915929,1.30438 2.727598,-1.6626 -0.339463,3.17628 z m -2.250816,-13.26342 -3.125728,0.65867 -1.22942,2.94832 -1.592344,-2.7692 -3.183925,-0.25817 2.141606,-2.37014 -0.738354,-3.10787 2.915928,1.30437 2.727598,-1.6626 -0.339463,3.17629 z m -36.516407,101.17775 12.67621,9.27455 14.82649,-5.18446 -4.90346,14.92178 9.512357,12.49874 -15.706707,-0.0524 -8.94753,12.90912 -4.80382,-14.95416 -15.04224,-4.52047 12.73779,-9.18979 z m 43.997145,-11.85725 -1.490317,6.92476 4.859571,5.15344 -7.046376,0.7225 -3.399525,6.21423 -2.864583,-6.47824 -6.960595,-1.31284 5.275968,-4.72627 -0.902358,-7.0256 6.125309,3.55724 z m 12.967873,15.94086 -3.125729,0.65868 -1.22942,2.94832 -1.592343,-2.76921 -3.183926,-0.25816 2.141606,-2.37014 -0.738354,-3.10787 2.915929,1.30437 2.727598,-1.6626 -0.339463,3.17629 z m -2.250816,-13.26342 -3.125729,0.65868 -1.22942,2.94831 -1.592343,-2.7692 -3.183926,-0.25817 2.141606,-2.37014 -0.738354,-3.10787 2.915929,1.30438 2.727598,-1.66261 -0.339463,3.17629 z m -39.609302,-10.10324 -1.49032,6.92476 4.85957,5.15344 -7.04637,0.7225 -3.39953,6.21423 -2.86458,-6.47824 -6.96059,-1.31284 5.27596,-4.72627 -0.90236,-7.0256 6.12531,3.55724 z m 12.96787,15.94086 -3.12573,0.65868 -1.22942,2.94832 -1.59234,-2.7692 -3.18393,-0.25817 2.14161,-2.37014 -0.73836,-3.10787 2.91593,1.30437 2.7276,-1.6626 -0.33946,3.17629 z m -2.25082,-13.26342 -3.12572,0.65868 -1.22942,2.94831 -1.59235,-2.7692 -3.18392,-0.25817 2.1416,-2.37014 -0.73835,-3.10787 2.91593,1.30438 2.7276,-1.66261 -0.33947,3.17629 z" + inkscape:transform-center-x="3.2264591" + inkscape:transform-center-y="-6.4894191" + inkscape:path-effect="#path-effect817;#path-effect821" + transform="translate(277.43452,18.142857)" /> + <g + id="g831" + inkscape:path-effect="#path-effect833"> + <path + id="path823" + d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z m -88.19446,66.14584 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z m 121.45635,-22.04861 a 22.048611,22.048611 0 0 1 -22.04861,22.04861 22.048611,22.048611 0 0 1 -22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,-22.04861 22.048611,22.048611 0 0 1 22.04861,22.04861 z m -29.39815,22.04861 a 7.3495366,7.3495366 0 0 1 -7.34953,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34953,7.34953 z m 46.02911,0 a 7.3495366,7.3495366 0 0 1 -7.34954,7.34954 7.3495366,7.3495366 0 0 1 -7.34954,-7.34954 7.3495366,7.3495366 0 0 1 7.34954,-7.34953 7.3495366,7.3495366 0 0 1 7.34954,7.34953 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -243.41666,324.59225 a 66.145836,66.145836 0 0 1 -66.14584,66.14584 66.145836,66.145836 0 0 1 -66.14584,-66.14584 66.145836,66.145836 0 0 1 66.14584,-66.14583 66.145836,66.145836 0 0 1 66.14584,66.14583 z" /> + <path + id="path825" + d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z m -138.08731,62.61805 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 138.08731,-20.87268 a 12.347222,14.993055 0 0 1 -12.34722,14.99305 12.347222,14.993055 0 0 1 -12.34723,-14.99305 12.347222,14.993055 0 0 1 12.34723,-14.99306 12.347222,14.993055 0 0 1 12.34722,14.99306 z m -46.0291,20.87268 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z m 46.0291,0 a 4.1157405,4.9976849 0 0 1 -4.11574,4.99768 4.1157405,4.9976849 0 0 1 -4.11574,-4.99768 4.1157405,4.9976849 0 0 1 4.11574,-4.99769 4.1157405,4.9976849 0 0 1 4.11574,4.99769 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:original-d="m -168.57738,329.88394 a 37.041668,44.979168 0 0 1 -37.04167,44.97917 37.041668,44.979168 0 0 1 -37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,-44.97917 37.041668,44.979168 0 0 1 37.04167,44.97917 z" /> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/testfiles/lpespaths-test.h b/testfiles/lpespaths-test.h new file mode 100644 index 0000000..09f96b7 --- /dev/null +++ b/testfiles/lpespaths-test.h @@ -0,0 +1,194 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * LPE test file wrapper + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <src/file.h> +#include <src/helper-fns.h> +#include <src/inkscape.h> +#include <src/object/sp-root.h> +#include <src/svg/svg.h> +#include "src/extension/init.h" + +#include <2geom/pathvector.h> + +using namespace Inkscape; + +/* This class allow test LPE's. To make possible in latest release of Inkscape + * LPE is not updated on load (if in the future any do we must take account) so we load + * a svg, get all "d" attribute from paths, shapes... + * Update all path effects with root object and check equality of paths. + * We use some helpers inside the SVG document to test: + * inkscape:test-threshold="0.1" can be global using in root element or per item + * inkscape:test-ignore="1" ignore this element from tests + * Question: Maybe is better store SVG as files instead inline CPP files, there is a + * 1.2 started MR, I can't finish without too much work than a cmake advanced user + */ + +class LPESPathsTest : public ::testing::Test { +protected: + void SetUp() override + { + // setup hidden dependency + Application::create(false); + Inkscape::Extension::init(); + const testing::TestInfo* const test_info = + testing::UnitTest::GetInstance()->current_test_info(); + svg = test_info->file();; +#ifdef INKSCAPE_TESTS_DIR + svg = INKSCAPE_TESTS_DIR; +#else + size_t pos = svg.find("lpespaths-test.h"); + svg.erase(pos); +#endif + svg += "/lpe_tests/"; // gitlab use this separator + /* svg += test_info->test_suite_name(); */ + svg += test_info->name(); + svg += ".svg"; + } + + void pathCompare(const gchar *a, const gchar *b, const gchar *id, double precission = 0.001) + { + failed.push_back(id); + Geom::PathVector apv = sp_svg_read_pathv(a); + Geom::PathVector bpv = sp_svg_read_pathv(b); + size_t totala = apv.curveCount(); + size_t totalb = bpv.curveCount(); + ASSERT_TRUE(totala == totalb); + std::vector<Geom::Coord> pos; + // find initial + size_t initial = 0; + for (size_t i = 0; i < totala; i++) { + Geom::Point pointa = apv.pointAt(0.0); + Geom::Point pointb = bpv.pointAt(float(i)); + if (Geom::are_near(pointa[Geom::X], pointb[Geom::X], precission) && + Geom::are_near(pointa[Geom::Y], pointb[Geom::Y], precission)) + { + initial = i; + break; + } + } + if (initial != 0 && initial == totala) { + std::cout << "[ WARN ] Curve reversed. We not block here. We reverse the path and test node positions on reverse" << std::endl; + bpv.reverse(); + } else if (initial != 0) { + std::cout << "[ WARN ] Different starting node. We not block here. We gap the origin to " << initial << " de " << totala << " and test with the pathvector reindexed" << std::endl; + } + for (size_t i = 0; i < apv.curveCount(); i++) { + if (initial >= totala) { + initial = 0; + } + Geom::Point pointa = apv.pointAt(float(i)+0.2); + Geom::Point pointb = bpv.pointAt(float(initial)+0.2); + Geom::Point pointc = apv.pointAt(float(i)+0.4); + Geom::Point pointd = bpv.pointAt(float(initial)+0.4); + Geom::Point pointe = apv.pointAt(float(i)); + Geom::Point pointf = bpv.pointAt(float(initial)); + ASSERT_NEAR(pointa[Geom::X], pointb[Geom::X], precission); + ASSERT_NEAR(pointa[Geom::Y], pointb[Geom::Y], precission); + ASSERT_NEAR(pointc[Geom::X], pointd[Geom::X], precission); + ASSERT_NEAR(pointc[Geom::Y], pointd[Geom::Y], precission); + ASSERT_NEAR(pointe[Geom::X], pointf[Geom::X], precission); + ASSERT_NEAR(pointe[Geom::Y], pointf[Geom::Y], precission); + initial++; + } + failed.pop_back(); + } + + void TearDown( ) override + { + Glib::ustring ids = ""; + for (auto fail : failed) { + if (ids != "") { + ids += ","; + } + ids += fail; + } + if (ids != "") { + FAIL() << "[FAILED IDS] " << ids; + } + } + + // you can override custom threshold from svg file using in + // root svg from global and override with per shape "inkscape:test-threshold" + void testDoc(std::string file) + { + double precission = 0.001; + SPDocument *doc = nullptr; + doc = SPDocument::createNewDoc(file.c_str(), false); + ASSERT_TRUE(doc != nullptr); + std::vector<SPObject *> objs; + std::vector<const gchar *> ids; + std::vector<const gchar *> ds; + for (auto obj : doc->getObjectsByElement("path")) { + objs.push_back(obj); + } + for (auto obj : doc->getObjectsByElement("ellipse")) { + objs.push_back(obj); + } + for (auto obj : doc->getObjectsByElement("circle")) { + objs.push_back(obj); + } + for (auto obj : doc->getObjectsByElement("rect")) { + objs.push_back(obj); + } + for (auto obj : objs) { + if (!g_strcmp0(obj->getAttribute("d"), "M 0,0")) { + if (obj->getAttribute("id")) { + std::cout << "[ WARN ] Item with id:" << obj->getAttribute("id") << " has empty path data" << std::endl; + } + } else if (obj->getAttribute("d") && obj->getAttribute("id")) { + ds.push_back(obj->getAttribute("d")); + ids.push_back(obj->getAttribute("id")); + } + } + sp_file_fix_lpe(doc); + doc->ensureUpToDate(); + SPLPEItem *lpeitem = dynamic_cast<SPLPEItem *>(doc->getRoot()); + sp_lpe_item_update_patheffect(lpeitem, true, true); + // we need to double update because clippaths or mask + if (doc->getObjectsByElement("clipPath").size() || doc->getObjectsByElement("mask").size()) { + sp_lpe_item_update_patheffect(lpeitem, true, true); + } + if (lpeitem->getAttribute("inkscape:test-threshold")) { + precission = helperfns_read_number(lpeitem->getAttribute("inkscape:test-threshold")); + } + size_t index = 0; + for (auto id : ids) { + SPObject *obj = doc->getObjectById(id); + if (obj) { + if (obj->getAttribute("inkscape:test-threshold")) { + precission = helperfns_read_number(obj->getAttribute("inkscape:test-threshold")); + } + if (!obj->getAttribute("inkscape:test-ignore")) { + pathCompare(ds[index], obj->getAttribute("d"), obj->getAttribute("id"), precission); + } else { + std::cout << "[ WARN ] Item with id:" << obj->getAttribute("id") << " ignored by inkscape:test-ignore" << std::endl; + } + } else { + std::cout << "[ WARN ] Item with id:" << id << " removed on apply LPE" << std::endl; + } + index++; + } + } + std::string svg = ""; + std::vector< const gchar *> failed; +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt new file mode 100644 index 0000000..260dfa3 --- /dev/null +++ b/testfiles/rendering_tests/CMakeLists.txt @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +# Tests to run for 64-bit builds only. These fail in 32-bit builds (possibly due to rounding issues) +# TODO: Figure out actual cause and see if we can fix it +if(${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(RENDERING_TESTS_64bit + test-rtl-vertical + + # .otf font with compressed SVG glyphs + text-gzipped-svg-glyph + ) +endif() + +#add your test here (do not put the .svg extension) +set(RENDERING_TESTS + # -- Generic tests -- + test-empty + test-dont-crash + test-use + + # -- Selector tests -- + selector-important-002 + selector-important-003 + + multi-style + style-parsing + + # -- Text tests -- + ## Many (if not all) of these tests are sensitive to the text rendering stack: FreeType, HarfBuzz, Pango. + + # test-baseline-shift + ## Small differences with code adapted for Pango 1.44. + + test-glyph-y-pos + ## to be fixed since an update happened between harfbuzz 1.5.1(OK) and 1.6.0(FAIL). + ## If you re-enable the test, you may have to *slightly* fix the expected rendering (hoping the fix happens upstream). + ## Please also check that the rendering with harfbuzz <=1.5.1 is not *too* wrong (for older systems) + ## cf Tav's post : https://www.patreon.com/posts/into-sinkhole-19021727 + ## and bug https://bugzilla.gnome.org/show_bug.cgi?id=787526 + + # text-shaping + ## Expected rendering generated with Pango 1.44. Currently fails with + ## CI as CI uses Pango 1.40. Enable after updating CI to Ubuntu 20.04. + + text-glyphs-combining + ## Expected rendering generated with Pango 1.44. + + text-glyphs-vertical + ## Expected rendering generated with Pango 1.44. + + # -- LPE tests -- + test-powerstroke-join + + # <symbol> geometric properties (SVG 2.0 feature) + symbol-svg2-geometry-properties + + ${RENDERING_TESTS_64bit} +) + + +foreach(rendering_test ${RENDERING_TESTS}) + set(testname "render_${rendering_test}") + add_test(NAME ${testname} + COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/inkscape ${CMAKE_CURRENT_SOURCE_DIR}/${rendering_test} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/testfiles/rendering_tests) + set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${INKSCAPE_TEST_PROFILE_DIR_ENV}/${testname};${CMAKE_CTEST_ENV}") +endforeach() + diff --git a/testfiles/rendering_tests/README b/testfiles/rendering_tests/README new file mode 100644 index 0000000..6ebcb4c --- /dev/null +++ b/testfiles/rendering_tests/README @@ -0,0 +1,26 @@ +HOWTO + +# Add a rendering test: + - create the svg file + - 0.92: + - inkscape <yourfile>.svg -d 96 -e expected_rendering/<yourfile>.png + - inkscape <yourfile>.svg -d 384 -e expected_rendering/<yourfile>-large.png + - 1.0: + - inkscape -d 96 --export-filename=expected_rendering/<yourfile>.png <yourfile>.svg + - inkscape -d 384 --export-filename=expected_rendering/<yourfile>-large.png <yourfile>.svg + - add the test in CMakeLists.txt + - use stable if possible to generate the reference png files + - git add <yourfile>.svg expected_rendering/<yourfile>-large.png expected_rendering/<yourfile>.png + +# Fix a failing test (due to a change in code): + - DO *NOT* MODIFY the expected rendering (or the svg) before getting advice from inkscape-devel@ + - fix your code if possible + - IF you change introduces a greater compatibility with css or browsers + - AND you cannot reasonably "update" files from older versions to match the appearance + - AND inkscape-devel@ has a consensus that it's the only way + -> do as you must + - manually double check the changes + +# Fix a failing test (due to a change in pixman or cairo): + - update renderings. Use a *stable* version to generate the renderings, NOT TRUNK + - manually check appearances diff --git a/testfiles/rendering_tests/expected_rendering/multi-style.png b/testfiles/rendering_tests/expected_rendering/multi-style.png Binary files differnew file mode 100644 index 0000000..7c7c2fb --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/multi-style.png diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png b/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png Binary files differnew file mode 100644 index 0000000..e92eef0 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-002.png b/testfiles/rendering_tests/expected_rendering/selector-important-002.png Binary files differnew file mode 100644 index 0000000..b0af9bd --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/selector-important-002.png diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png b/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png Binary files differnew file mode 100644 index 0000000..91cb3af --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-003.png b/testfiles/rendering_tests/expected_rendering/selector-important-003.png Binary files differnew file mode 100644 index 0000000..dfe3dbc --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/selector-important-003.png diff --git a/testfiles/rendering_tests/expected_rendering/style-parsing.png b/testfiles/rendering_tests/expected_rendering/style-parsing.png Binary files differnew file mode 100644 index 0000000..5b60834 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/style-parsing.png diff --git a/testfiles/rendering_tests/expected_rendering/symbol-svg2-geometry-properties.png b/testfiles/rendering_tests/expected_rendering/symbol-svg2-geometry-properties.png Binary files differnew file mode 100644 index 0000000..ca5e83e --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/symbol-svg2-geometry-properties.png diff --git a/testfiles/rendering_tests/expected_rendering/test-baseline-shift-large.png b/testfiles/rendering_tests/expected_rendering/test-baseline-shift-large.png Binary files differnew file mode 100644 index 0000000..29369a8 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-baseline-shift-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-baseline-shift.png b/testfiles/rendering_tests/expected_rendering/test-baseline-shift.png Binary files differnew file mode 100644 index 0000000..45aed90 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-baseline-shift.png diff --git a/testfiles/rendering_tests/expected_rendering/test-dont-crash.png b/testfiles/rendering_tests/expected_rendering/test-dont-crash.png Binary files differnew file mode 100644 index 0000000..a2d005e --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-dont-crash.png diff --git a/testfiles/rendering_tests/expected_rendering/test-empty-large.png b/testfiles/rendering_tests/expected_rendering/test-empty-large.png Binary files differnew file mode 100644 index 0000000..34acf1f --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-empty-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-empty.png b/testfiles/rendering_tests/expected_rendering/test-empty.png Binary files differnew file mode 100644 index 0000000..2e0a5fe --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-empty.png diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png Binary files differnew file mode 100644 index 0000000..57066fe --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png Binary files differnew file mode 100644 index 0000000..38c0117 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png diff --git a/testfiles/rendering_tests/expected_rendering/test-powerstroke-join-large.png b/testfiles/rendering_tests/expected_rendering/test-powerstroke-join-large.png Binary files differnew file mode 100644 index 0000000..72d8821 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-powerstroke-join-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-powerstroke-join.png b/testfiles/rendering_tests/expected_rendering/test-powerstroke-join.png Binary files differnew file mode 100644 index 0000000..1eeec07 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-powerstroke-join.png diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png Binary files differnew file mode 100644 index 0000000..d473a59 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png Binary files differnew file mode 100644 index 0000000..49db6cb --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png diff --git a/testfiles/rendering_tests/expected_rendering/test-use-large.png b/testfiles/rendering_tests/expected_rendering/test-use-large.png Binary files differnew file mode 100644 index 0000000..c1f4597 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-use-large.png diff --git a/testfiles/rendering_tests/expected_rendering/test-use.png b/testfiles/rendering_tests/expected_rendering/test-use.png Binary files differnew file mode 100644 index 0000000..a995136 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/test-use.png diff --git a/testfiles/rendering_tests/expected_rendering/text-glyphs-combining-large.png b/testfiles/rendering_tests/expected_rendering/text-glyphs-combining-large.png Binary files differnew file mode 100644 index 0000000..5568888 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-glyphs-combining-large.png diff --git a/testfiles/rendering_tests/expected_rendering/text-glyphs-combining.png b/testfiles/rendering_tests/expected_rendering/text-glyphs-combining.png Binary files differnew file mode 100644 index 0000000..32a6781 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-glyphs-combining.png diff --git a/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical-large.png b/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical-large.png Binary files differnew file mode 100644 index 0000000..f49cbbd --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical-large.png diff --git a/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical.png b/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical.png Binary files differnew file mode 100644 index 0000000..cab1c0b --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-glyphs-vertical.png diff --git a/testfiles/rendering_tests/expected_rendering/text-gzipped-svg-glyph.png b/testfiles/rendering_tests/expected_rendering/text-gzipped-svg-glyph.png Binary files differnew file mode 100644 index 0000000..8e8a184 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-gzipped-svg-glyph.png diff --git a/testfiles/rendering_tests/expected_rendering/text-shaping-large.png b/testfiles/rendering_tests/expected_rendering/text-shaping-large.png Binary files differnew file mode 100644 index 0000000..e84ebf5 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-shaping-large.png diff --git a/testfiles/rendering_tests/expected_rendering/text-shaping.png b/testfiles/rendering_tests/expected_rendering/text-shaping.png Binary files differnew file mode 100644 index 0000000..346ab77 --- /dev/null +++ b/testfiles/rendering_tests/expected_rendering/text-shaping.png diff --git a/testfiles/rendering_tests/fonts/Estedad-Medium.ttf b/testfiles/rendering_tests/fonts/Estedad-Medium.ttf Binary files differnew file mode 100644 index 0000000..d4844c2 --- /dev/null +++ b/testfiles/rendering_tests/fonts/Estedad-Medium.ttf diff --git a/testfiles/rendering_tests/fonts/GeomTest-Regular.otf b/testfiles/rendering_tests/fonts/GeomTest-Regular.otf Binary files differnew file mode 100644 index 0000000..a008cbf --- /dev/null +++ b/testfiles/rendering_tests/fonts/GeomTest-Regular.otf diff --git a/testfiles/rendering_tests/fonts/GeomTest-gzipped-SVG-glyphs.otf b/testfiles/rendering_tests/fonts/GeomTest-gzipped-SVG-glyphs.otf Binary files differnew file mode 100755 index 0000000..d8a89e3 --- /dev/null +++ b/testfiles/rendering_tests/fonts/GeomTest-gzipped-SVG-glyphs.otf diff --git a/testfiles/rendering_tests/fonts/LICENSES b/testfiles/rendering_tests/fonts/LICENSES new file mode 100644 index 0000000..71bfc0e --- /dev/null +++ b/testfiles/rendering_tests/fonts/LICENSES @@ -0,0 +1,10 @@ + +All fonts in this directory are licensed under open licenses. + +Lohit (https://pagure.io/lohit SIL Open Font 1.1) +NotoSans (https://www.google.com/get/noto/ Open Font License 1.1) +Estedad (https://github.com/aminabedi68/Estedad/ SIL Open Font 1.1) + +GeomTest Released under Open Font Licens 1.1. Copyright Tavmjong Bah 2015,2019 + + diff --git a/testfiles/rendering_tests/fonts/Lohit-Telugu.ttf b/testfiles/rendering_tests/fonts/Lohit-Telugu.ttf Binary files differnew file mode 100644 index 0000000..3869703 --- /dev/null +++ b/testfiles/rendering_tests/fonts/Lohit-Telugu.ttf diff --git a/testfiles/rendering_tests/fonts/NotoSans-Regular.ttf b/testfiles/rendering_tests/fonts/NotoSans-Regular.ttf Binary files differnew file mode 100644 index 0000000..b031a49 --- /dev/null +++ b/testfiles/rendering_tests/fonts/NotoSans-Regular.ttf diff --git a/testfiles/rendering_tests/fonts/NotoSansCJKjp-Regular.otf b/testfiles/rendering_tests/fonts/NotoSansCJKjp-Regular.otf Binary files differnew file mode 100644 index 0000000..296fbeb --- /dev/null +++ b/testfiles/rendering_tests/fonts/NotoSansCJKjp-Regular.otf diff --git a/testfiles/rendering_tests/fonts/NotoSansHebrew-Regular.ttf b/testfiles/rendering_tests/fonts/NotoSansHebrew-Regular.ttf Binary files differnew file mode 100644 index 0000000..9bf03ab --- /dev/null +++ b/testfiles/rendering_tests/fonts/NotoSansHebrew-Regular.ttf diff --git a/testfiles/rendering_tests/multi-style-import-1.css b/testfiles/rendering_tests/multi-style-import-1.css new file mode 100644 index 0000000..e6fb1e0 --- /dev/null +++ b/testfiles/rendering_tests/multi-style-import-1.css @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* overwritten later */ +rect { fill: red; } +.c1 { fill: red; } + +/* not overwritten */ +#background { fill: white; } +.c5 { fill: #00ccff; } diff --git a/testfiles/rendering_tests/multi-style-import-2.css b/testfiles/rendering_tests/multi-style-import-2.css new file mode 100644 index 0000000..3e0dd9b --- /dev/null +++ b/testfiles/rendering_tests/multi-style-import-2.css @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +rect { fill: blue; } +.c1 { fill: #990099; } + +/* overwritten later */ +.c4 { fill: red; } diff --git a/testfiles/rendering_tests/multi-style.svg b/testfiles/rendering_tests/multi-style.svg new file mode 100644 index 0000000..842f946 --- /dev/null +++ b/testfiles/rendering_tests/multi-style.svg @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="80" + height="80" + viewBox="0 0 80 80" + version="1.1"> + <style + id="first"> +rect { fill: #800000; } +/* class "c1" is redefined several times, only the last one counts */ +.c1 { fill: #ff0000; } +.c2 { fill: #ff9900; } +</style> + <defs> + <style + id="insidedefs"> +rect { fill: #ffff00; } +.c1 { fill: #008000; } +.c3 { fill: #00ff00; } +</style> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + id="background" + width="80" + height="80" /> + <rect + width="20" + height="20" /> + <rect + width="20" + height="20" + x="30" + class="c1" /> + <rect + width="20" + height="20" + x="60" + class="c2" /> + <rect + width="20" + height="20" + class="c3" + y="30" /> + <rect + class="c4" + width="20" + height="20" + x="30" + y="30" /> + <rect + class="c5" + width="20" + height="20" + x="60" + y="30" /> + <style + id="insidegroup"> +@import "multi-style-import-1.css"; +/* nested CSS selector (with XML entity because not using CDATA) */ +g.g1 > rect { fill: #00ffcc; } +</style> + <rect + class="c5" + width="20" + height="20" + y="60" /> + <rect + width="20" + height="20" + x="30" + y="60" /> + <g + class="g1"> + <rect + width="20" + height="20" + x="60" + y="60" /> + </g> + </g> + <style + id="last"><!-- using CDATA --><![CDATA[ +@import "multi-style-import-2.css"; +.c4 { fill: #ff00ff; } +]]></style> +</svg> diff --git a/testfiles/rendering_tests/selector-important-002.svg b/testfiles/rendering_tests/selector-important-002.svg new file mode 100644 index 0000000..e5a66b6 --- /dev/null +++ b/testfiles/rendering_tests/selector-important-002.svg @@ -0,0 +1,58 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="480" height="360" + style="fill:orange !important"> + + <title>Style "!important" — 002</title> + + <style type="text/css"> + + <!-- Later rule overrides same specificity previous rule. --> + #groupA use { fill: red !important; } + #groupA use { fill: blue !important; } + + #groupB .classB { fill: red !important; } + #groupB .classB { fill: blue !important; } + + #groupC #MyRectC { fill: red !important; } + #groupC #MyRectC { fill: blue !important; } + + #groupD { fill: blue !important; } + #classD { fill: red !important; } + + #groupE use { fill: blue !important; } + #groupE { fill: red !important; } + </style> + + <defs> + <rect id="MyRect" width="40" height="40"/> + </defs> + + <!-- + <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Style "!important" — 002</text> + <a href="https://svgwg.org/svg2-draft/stylling.html"> + <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/styling.html</text> + </a> + --> + + <g id="groupA"> + <use id="MyRectA" class="classA" x="20" y="100" xlink:href="#MyRect" /> + </g> + + <g id="groupB"> + <use id="MyRectB" class="classB" x="120" y="100" xlink:href="#MyRect" /> + </g> + + <g id="groupC"> + <use id="MyRectC" class="classC" x="220" y="100" xlink:href="#MyRect" /> + </g> + + <g id="groupD"> + <use id="MyRectD" class="classD" x="320" y="100" xlink:href="#MyRect" /> + </g> + + <g id="groupE"> + <use id="MyRectE" class="classE" x="420" y="100" xlink:href="#MyRect" /> + </g> + +</svg> diff --git a/testfiles/rendering_tests/selector-important-003.svg b/testfiles/rendering_tests/selector-important-003.svg new file mode 100644 index 0000000..831319f --- /dev/null +++ b/testfiles/rendering_tests/selector-important-003.svg @@ -0,0 +1,57 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="480" height="360"> + + <title>Style "!important" — 003</title> + + <style type="text/css"> + + /* !important is not inherited. */ + g #groupA { fill: red !important; } + use { fill: blue; } + + /* Attributes cannot have !important. */ + #MyRectB { fill: blue; } + + /* Inline can have !important. */ + #MyRectC { fill: red !important; } + + /* Bad property shouldn't set !important. */ + #MyRectD { fill: XXX !important; } + + /* Bad inline property shouldn't set !important. */ + #MyRectE { fill: blue; } + </style> + + <defs> + <rect id="MyRect" width="40" height="40"/> + </defs> + + <!-- + <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Style "!important" — 003</text> + <a href="https://svgwg.org/svg2-draft/stylling.html"> + <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/styling.html</text> + </a> + --> + + <g id="groupA"> + <use id="MyRectA" class="classA" x="20" y="100" xlink:href="#MyRect" /> + </g> + + <g id="groupB"> + <use id="MyRectB" class="classB" x="120" y="100" xlink:href="#MyRect" fill="red !important"/> + </g> + + <g id="groupC"> + <use id="MyRectC" class="classC" x="220" y="100" xlink:href="#MyRect" style="fill: blue !important"/> + </g> + + <g id="groupD"> + <use id="MyRectD" class="classD" x="320" y="100" xlink:href="#MyRect" style="fill: blue"/> + </g> + + <g id="groupE"> + <use id="MyRectE" class="classE" x="420" y="100" xlink:href="#MyRect" style="fill: XXX !important"/> + </g> + +</svg> diff --git a/testfiles/rendering_tests/style-parsing.svg b/testfiles/rendering_tests/style-parsing.svg new file mode 100644 index 0000000..33e32cb --- /dev/null +++ b/testfiles/rendering_tests/style-parsing.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- +Test with leading semicolon in style. +https://gitlab.com/inkscape/inkscape/-/issues/1278 +--> +<svg xmlns="http://www.w3.org/2000/svg" + width="100%" height="100%" viewBox="0 0 500 200"> + <style type="text/css"> + rect { fill: red; } + #MyRect1 { ; fill: green; } + </style> + + <rect x="50" y="50" width="100" height="100" style=";fill:blue"/> + <rect x="200" y="50" width="100" height="100" id="MyRect1" /> + <rect x="350" y="50" width="100" height="100" style="stroke-width:0px;;;fill:blue" /> +</svg> diff --git a/testfiles/rendering_tests/symbol-svg2-geometry-properties.svg b/testfiles/rendering_tests/symbol-svg2-geometry-properties.svg new file mode 100644 index 0000000..6eb87d3 --- /dev/null +++ b/testfiles/rendering_tests/symbol-svg2-geometry-properties.svg @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + viewBox="0 0 95 120"> + +<defs> + <symbol id="mySym" width="10" height="10" viewBox="0 0 2 2"> + <rect width="2" height="2" style="fill:blue" /> + </symbol> + <svg id="mySvg" width="10" height="10" viewBox="0 0 2 2"> + <rect width="2" height="2" style="fill:green" /> + </svg> + <symbol id="mySymShifted" x="15" y="20" width="10" height="10" viewBox="0 0 2 2"> + <rect width="2" height="2" style="fill:magenta" /> + </symbol> + <svg id="mySvgShifted" x="15" y="20" width="10" height="10" viewBox="0 0 2 2"> + <rect width="2" height="2" style="fill:cyan" /> + </svg> + <image id="myImg" width="10" height="10" preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFc + SJAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jn + m+48GgAAAA1JREFUCJlj+F+v9R8ABtECqHp0jnoAAAAASUVORK5CYII="> + </image> + <rect id="myRect" width="10" height="10" style="fill:gray" /> + <rect id="myRectXY" width="10" height="10" style="fill:#cc0" x="20" y="30" /> +</defs> + +<rect width="100%" height="100%" fill="white" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="pink" /> + +<use xlink:href="#mySym" x="5" y="5" style="opacity:1.0" /> +<use xlink:href="#mySvg" x="20" y="5" style="opacity:0.8" /> +<use xlink:href="#mySym" x="35" y="5" style="opacity:0.6" /> +<use xlink:href="#mySvg" x="50" y="5" style="opacity:0.4" /> +<use xlink:href="#mySym" x="65" y="5" style="opacity:0.2" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="orange" transform="translate(15, 20)" /> + +<use xlink:href="#mySymShifted" x="5" y="5" style="opacity:1.0" /> +<use xlink:href="#mySvgShifted" x="20" y="5" style="opacity:0.8" /> +<use xlink:href="#mySymShifted" x="35" y="5" style="opacity:0.6" /> +<use xlink:href="#mySvgShifted" x="50" y="5" style="opacity:0.4" /> +<use xlink:href="#mySymShifted" x="65" y="5" style="opacity:0.2" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="pink" transform="translate(0, 40)" /> + +<!-- with transform --> +<use xlink:href="#mySymShifted" x="5" y="5" style="opacity:1.0" transform="rotate(90, 7.5, 32.5)" /> +<use xlink:href="#mySvgShifted" x="20" y="5" style="opacity:0.8" transform="rotate(90, 22.5, 32.5)" /> +<use xlink:href="#mySymShifted" x="35" y="5" style="opacity:0.6" transform="rotate(90, 37.5, 32.5)" /> +<use xlink:href="#mySvgShifted" x="50" y="5" style="opacity:0.4" transform="rotate(90, 52.5, 32.5)" /> +<use xlink:href="#mySymShifted" x="65" y="5" style="opacity:0.2" transform="rotate(90, 67.5, 32.5)" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="orange" transform="translate(15, 60)" /> + +<!-- without x/y --> +<use xlink:href="#mySymShifted" style="opacity:1.0" transform="rotate(90, 0.0, 50.0)" /> +<use xlink:href="#mySvgShifted" style="opacity:0.8" transform="rotate(90, 7.5, 57.5)" /> +<use xlink:href="#mySymShifted" style="opacity:0.6" transform="rotate(90, 15.0, 65.0)" /> +<use xlink:href="#mySvgShifted" style="opacity:0.4" transform="rotate(90, 22.5, 72.5)" /> +<use xlink:href="#mySymShifted" style="opacity:0.2" transform="rotate(90, 30.0, 80.0)" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="pink" transform="translate(0, 80)" /> + +<!-- with width/height --> +<use xlink:href="#mySym" width="20" height="30" x="10" y="165" style="opacity:1.0" transform="scale(0.5)" /> +<use xlink:href="#mySvg" width="20" height="30" x="40" y="165" style="opacity:0.8" transform="scale(0.5)" /> +<use xlink:href="#mySym" width="20" height="30" x="70" y="165" style="opacity:0.6" transform="scale(0.5)" /> +<use xlink:href="#mySvg" width="20" height="30" x="100" y="165" style="opacity:0.4" transform="scale(0.5)" /> +<use xlink:href="#mySym" width="20" height="30" x="130" y="165" style="opacity:0.2" transform="scale(0.5)" /> + +<path d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20" fill="none" stroke="orange" transform="translate(15, 100)" /> + +<!-- image/rect --> +<use xlink:href="#myImg" x="20" y="105" /> +<use xlink:href="#myImg" x="35" y="105" width="20" height="30" /><!-- width/height ignored --> +<use xlink:href="#myRect" x="50" y="105" /> +<use xlink:href="#myRect" x="65" y="105" width="20" height="30" /><!-- width/height ignored --> +<use xlink:href="#myRectXY" x="60" y="75" /><!-- cumulated x/y --> + +</svg> diff --git a/testfiles/rendering_tests/test-baseline-shift.svg b/testfiles/rendering_tests/test-baseline-shift.svg new file mode 100644 index 0000000..7d20d22 --- /dev/null +++ b/testfiles/rendering_tests/test-baseline-shift.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<svg width="600" height="600" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + viewBox="0 0 600 600"> + <style type="text/css"> + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + text { + font-family: Noto Sans; + font-size: 36px; + } + + .title { + text-anchor: middle; + } + </style> + + <g> + <text x="50" y="200">subscript: H<tspan style="font-size:65%;baseline-shift:sub">2</tspan>O</text> + <text x="50" y="300">superscript: m<tspan style="font-size:65%;baseline-shift:super">2</tspan></text> + <text x="530" y="200" style="writing-mode:tb-rl">subscript: H<tspan style="font-size:65%;baseline-shift:sub">2</tspan>O</text> + <text x="430" y="200" style="writing-mode:tb-rl">superscript: m<tspan style="font-size:65%;baseline-shift:super">2</tspan></text> + </g> + + <text class="title" x="50%" y="120">Sub- and Superscript</text> + +</svg> diff --git a/testfiles/rendering_tests/test-dont-crash.svg b/testfiles/rendering_tests/test-dont-crash.svg new file mode 100644 index 0000000..d01c0ea --- /dev/null +++ b/testfiles/rendering_tests/test-dont-crash.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + viewBox="0 0 210 297" + height="297mm" + width="210mm"> + <g + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Layer 1"> + <!-- missing xlink:href attribute - don't care how it's rendered (place it + off-page), but Inkscape should not crash --> + <image + y="-100" + x="-100" + height="50" + width="50" /> + </g> +</svg> diff --git a/testfiles/rendering_tests/test-empty.svg b/testfiles/rendering_tests/test-empty.svg new file mode 100644 index 0000000..3b5ee5a --- /dev/null +++ b/testfiles/rendering_tests/test-empty.svg @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.1 r15371" + sodipodi:docname="test-empty.svg"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="132.86611" + inkscape:cy="438.52092" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1055" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.64583325;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98039216" + id="rect7" + width="92.226196" + height="75.595238" + x="52.160713" + y="46.023808" + rx="6.6565199" + ry="6.6565199" /> + </g> +</svg> diff --git a/testfiles/rendering_tests/test-glyph-y-pos.svg b/testfiles/rendering_tests/test-glyph-y-pos.svg new file mode 100644 index 0000000..6f44ef8 --- /dev/null +++ b/testfiles/rendering_tests/test-glyph-y-pos.svg @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<svg width="600" height="600" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + viewBox="0 0 600 600"> + <style type="text/css"> + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + text { + font-family: Noto Sans; + font-size: 36px; + } + .title { + text-anchor: middle; + } + </style> + + <rect x="0" y="0" width="600" height="600" style="fill:white"/> + <g> + <text x="50" y="200">G̃g̃X̃x̃</text> + <text x="300" y="200" style="writing-mode:vertical-lr;">G̃g̃X̃x̃</text> + <text x="500" y="200" style="writing-mode:vertical-lr;text-orientation:upright">G̃g̃X̃x̃</text> + </g> + + <text class="title" x="50%" y="120">Composed Glyphs</text> + +</svg> diff --git a/testfiles/rendering_tests/test-powerstroke-join.svg b/testfiles/rendering_tests/test-powerstroke-join.svg new file mode 100644 index 0000000..2c05fb3 --- /dev/null +++ b/testfiles/rendering_tests/test-powerstroke-join.svg @@ -0,0 +1,6 @@ +<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns="http://www.w3.org/2000/svg" height="103.10469" width="114.42079"> + <defs id="defs8"> + <inkscape:path-effect end_linecap_type="zerowidth" scale_width="1" miter_limit="4" linejoin_type="extrp_arc" start_linecap_type="zerowidth" interpolator_beta="0.2" interpolator_type="CubicBezierSmooth" sort_points="true" offset_points="0.2,6 | 1,6 | 1.8,6" lpeversion="1" is_visible="true" id="path-effect12" effect="powerstroke" /> + </defs> + <path inkscape:original-d="M 37.025152,63.80944 C 62.629473,85.82239 121.42349,99.11534 92.9073,25.53973 73.516303,45.478852 29.421533,5.937486 9.304592,36.285332" inkscape:path-effect="#path-effect12"/> +</svg> diff --git a/testfiles/rendering_tests/test-rtl-vertical.svg b/testfiles/rendering_tests/test-rtl-vertical.svg new file mode 100644 index 0000000..aa6610b --- /dev/null +++ b/testfiles/rendering_tests/test-rtl-vertical.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<svg width="600" height="600" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + viewBox="0 0 600 600"> + <style type="text/css"> + @font-face { + font-family: "Estedad"; + src: url("fonts/Estedad-Medium.ttf"); + } + + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + text { + font-family: Estedad; + font-size: 36px; + } + + .title { + font-family: "Noto Sans"; + text-anchor: middle; + } + </style> + + <rect x="0" y="0" width="600" height="600" style="fill:white"/> + <g> + <text x="50" y="200">أبجد</text> + <text x="300" y="200" style="writing-mode:vertical-lr;">أبجد</text> + <text x="500" y="200" style="writing-mode:vertical-lr;text-orientation:upright">أبجد</text> + </g> + + <text class="title" x="50%" y="120">RTL text in vertical mode</text> + +</svg> diff --git a/testfiles/rendering_tests/test-use-ref.svg b/testfiles/rendering_tests/test-use-ref.svg new file mode 100644 index 0000000..0e6edf3 --- /dev/null +++ b/testfiles/rendering_tests/test-use-ref.svg @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + id="root" + width="100" + height="100" + viewBox="0 0 100 100"> + <style> + .magenta { + stroke:none; + fill:#ff00ff; + } + </style> + <defs> + <marker + id="arrow" + style="overflow:visible;" + refX="0.0" + refY="0.0" + orient="auto"> + <path + style="stroke:#ff00ff;stroke-width:1pt;fill:#ff00ff" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <linearGradient + id="gradientBase"> + <stop + style="stop-color:#ff00ff;stop-opacity:1;" + offset="0" /> + <stop + style="stop-color:#ff00ff;stop-opacity:0;" + offset="1" /> + </linearGradient> + <linearGradient + id="gradient" + xlink:href="#gradientBase" + x1="10" + y1="50" + x2="90" + y2="50" + gradientUnits="userSpaceOnUse" /> + <filter + id="filter" + style="color-interpolation-filters:sRGB" + x="-1.2" + y="-1.2" + width="3.4" + height="3.4"> + <feGaussianBlur + stdDeviation="5" /> + </filter> + </defs> + <rect + class="green" + style="filter:url(#filter)" + x="15" + y="15" + width="10" + height="10" /> + <rect + id="rect" + class="magenta" + x="10" + y="80" + width="10" + height="10" /> + <use + xlink:href="#rect" + transform="translate(15)" /> + <use + xlink:href="#rect" + transform="translate(30)" /> + <use + xlink:href="#rect" + transform="translate(45)" /> + <rect + style="fill:url(#gradient);stroke:none" + x="10" + y="45" + width="80" + height="10" /> + <path + style="fill:none;stroke:#ff00ff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#arrow)" + d="M 90,20 H 45" /> +</svg> diff --git a/testfiles/rendering_tests/test-use.svg b/testfiles/rendering_tests/test-use.svg new file mode 100644 index 0000000..7e8a8ac --- /dev/null +++ b/testfiles/rendering_tests/test-use.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + width="100" + height="100" + viewBox="0 0 100 100"> + <style> + .green { + stroke:none; + fill:#00ff00; + } + </style> + <use + xlink:href="test-use-ref.svg#root" /> +</svg> diff --git a/testfiles/rendering_tests/test.sh b/testfiles/rendering_tests/test.sh new file mode 100755 index 0000000..e31376d --- /dev/null +++ b/testfiles/rendering_tests/test.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +if [ "$#" -lt 2 ]; then + echo "pass the path of the inkscape executable as parameter then the name of the test" $# + exit 1 +fi + +command -v compare >/dev/null 2>&1 || { echo >&2 "I require ImageMagick's 'compare' but it's not installed. Aborting."; exit 1; } + +INKSCAPE_EXE=$1 +exit_status=0 +test=$2 +EXPECTED=$(dirname $test)"/expected_rendering/"$(basename $test) +testname=$(basename $test) + + + ${INKSCAPE_EXE} --export-png-use-dithering false --export-filename=${testname}.png -d 96 ${test}.svg #2>/dev/null >/dev/null + compare -metric AE ${testname}.png ${EXPECTED}.png ${testname}-compare.png 2> ${testname}-result.txt + test1=`cat ${testname}-result.txt` + echo $test1 + if [ "$test1" = 0 ]; then + echo ${testname} "PASSED" + rm ${testname}.png ${testname}-compare.png + else + echo ${testname} "FAILED" + exit_status=1 + fi + +if [ -f "${EXPECTED}-large.png" ]; then + ${INKSCAPE_EXE} --export-png-use-dithering false --export-filename=${testname}-large.png -d 384 ${test}.svg #2>/dev/null >/dev/null + compare -metric AE ${testname}-large.png ${EXPECTED}-large.png ${testname}-compare-large.png 2> ${testname}-result.txt + test2=`cat ${testname}-result.txt` + if [ "$test2" = 0 ]; then + echo ${testname}-large "PASSED" + rm ${testname}-large.png ${testname}-compare-large.png + else + echo ${testname}-large "FAILED" + exit_status=1 + fi +else + echo ${testname}-large "SKIPPED" +fi + +rm ${testname}-result.txt +exit $exit_status diff --git a/testfiles/rendering_tests/text-glyphs-combining.svg b/testfiles/rendering_tests/text-glyphs-combining.svg new file mode 100644 index 0000000..646ee05 --- /dev/null +++ b/testfiles/rendering_tests/text-glyphs-combining.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + width="100%" + height="100%" + viewBox="0 0 600 600"> + + <style type="text/css"> + + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + text { + font-family: "Noto Sans"; + font-size: 30px; + } + + </style> + + <rect x="0" y="0" width="600" height="600" style="fill:white"/> + + <text x="25%" y="10%">õoÌ‹oÌ“oÌ›oÌ£oÌ«o̳oÌ»o̓oÍ‹oÍ—oÍ¡</text> + <text x="25%" y="25%" style="writing-mode:vertical-lr">õoÌ‹oÌ“oÌ›oÌ£oÌ«o̳oÌ»o̓oÍ‹oÍ—oÍ¡</text> + <text x="50%" y="25%" style="writing-mode:vertical-lr;text-orientation:upright">õoÌ‹oÌ“oÌ›oÌ£oÌ«o̳oÌ»o̓oÍ‹oÍ—oÍ¡</text> + <text x="75%" y="25%" style="writing-mode:vertical-lr;text-orientation:sideways">õoÌ‹oÌ“oÌ›oÌ£oÌ«o̳oÌ»o̓oÍ‹oÍ—oÍ¡</text> + + <!-- Show reference point --> + <circle cx="25%" cy="10%" r="2" style="fill:lightblue"/> + <circle cx="25%" cy="25%" r="2" style="fill:lightblue"/> + <circle cx="50%" cy="25%" r="2" style="fill:lightblue"/> + <circle cx="75%" cy="25%" r="2" style="fill:lightblue"/> + +</svg> diff --git a/testfiles/rendering_tests/text-glyphs-vertical.svg b/testfiles/rendering_tests/text-glyphs-vertical.svg new file mode 100644 index 0000000..585a404 --- /dev/null +++ b/testfiles/rendering_tests/text-glyphs-vertical.svg @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + width="100%" + height="100%" + viewBox="0 0 600 600"> + + <style type="text/css"> + + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + @font-face { + font-family: "Noto Sans CJK JP"; + src: url("fonts/NotoSansCJKjp-Regular.otf"); + } + + @font-face { + font-family: "GeomTest"; + src: url("fonts/GeomTest-Regular.otf"); + } + + text { + font-family: "Noto Sans"; + font-size: 30px; + } + + .geomtest { + font-family: GeomTest; + } + + .cjk { + font-family: "Noto Sans CJK JP"; + } + </style> + + <rect x="0" y="0" width="600" height="600" style="fill:white"/> + + <text x="100" y="100"><tspan class="cjk">㆕㆖㆘</tspan><tspan class="geomtest">A回ーऄ</tspan>G̃g̃X̃x̃</text> + <text x="115" y="200" style="writing-mode:vertical-lr"><tspan class="cjk">㆕㆖㆘</tspan><tspan class="geomtest">A回ーऄ</tspan>G̃g̃X̃x̃</text> + <text x="305" y="200" style="writing-mode:vertical-lr;text-orientation:upright"><tspan class="cjk">㆕㆖㆘</tspan><tspan class="geomtest">A回ーऄ</tspan>G̃g̃X̃x̃</text> + <text x="495" y="200" style="writing-mode:vertical-lr;text-orientation:sideways"><tspan class="cjk">㆕㆖㆘</tspan><tspan class="geomtest">A回ーऄ</tspan>G̃g̃X̃x̃</text> + + <!-- Show reference point --> + <circle cx="100" cy="100" r="2" style="fill:lightblue"/> + <circle cx="115" cy="200" r="2" style="fill:lightblue"/> + <circle cx="305" cy="200" r="2" style="fill:lightblue"/> + <circle cx="495" cy="200" r="2" style="fill:lightblue"/> + +</svg> diff --git a/testfiles/rendering_tests/text-gzipped-svg-glyph.svg b/testfiles/rendering_tests/text-gzipped-svg-glyph.svg new file mode 100644 index 0000000..88ba336 --- /dev/null +++ b/testfiles/rendering_tests/text-gzipped-svg-glyph.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + width="100%" + height="100%" + viewBox="0 0 110 40"> + + <style type="text/css"> + + @font-face { + font-family: "GeomTest"; + src: url("fonts/GeomTest-gzipped-SVG-glyphs.otf"); + } + + text { + font-family: "GeomTest"; + font-size: 30px; + } + + </style> + + <text x="10" y="30">ABC</text> + +</svg> diff --git a/testfiles/rendering_tests/text-shaping.svg b/testfiles/rendering_tests/text-shaping.svg new file mode 100644 index 0000000..80aa95a --- /dev/null +++ b/testfiles/rendering_tests/text-shaping.svg @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + width="100%" + height="100%" + viewBox="0 0 600 600"> + + <style type="text/css"> + + @font-face { + font-family: "Estedad"; + src: url("fonts/Estedad-Medium.ttf"); + } + + @font-face { + font-family: "Noto Sans Hebrew"; + src: url("fonts/NotoSansHebrew-Regular.ttf"); + } + + @font-face { + font-family: "Noto Sans"; + src: url("fonts/NotoSans-Regular.ttf"); + } + + @font-face { + font-family: "Noto Sans CJK JP"; + src: url("fonts/NotoSansCJKjp-Regular.otf"); + } + + @font-face { + font-family: "Lohit Telugu"; + src: url("fonts/Lohit-Telugu.ttf"); + } + + </style> + + <g style="fill:none;stroke:black;stroke-width:0.5px;font-size:42px;font-family:serif;text-anchor:middle"> + + <!-- bug https://gitlab.com/inkscape/inkscape/-/issues/469 --> + <text xml:space="preserve" + x="300" + y="50" + style="font-family:Estedad;direction:rtl">نیرو</text> + + <text xml:space="preserve" + x="300" + y="100" + style="font-family:Estedad;direction:rtl">بÙسْم٠اللَّه٠الرَّØْمَن٠الرَّØÙيمÙ</text> + + <text xml:space="preserve" + x="300" + y="150" + style="font-family:'Noto Sans Hebrew';direction:rtl">ש×ָלוֹ×</text> + + <text xml:space="preserve" + x="300" + y="200" + style="font-family:'Noto Sans Hebrew';direction:rtl">חִירִיק</text> + + <text xml:space="preserve" + x="300" + y="250" + style="font-family:'Noto Sans'">â â̂ aÌ‚ aÌ‚Ì‚</text> + + <text xml:space="preserve" + x="300" + y="300" + style="font-family:'Noto Sans'">a aÌ¥ Ä… ą</text> + + <text xml:space="preserve" + x="300" + y="350" + style="font-family:'Noto Sans CJK JP'">ヘ ペ ペ</text> + + <text xml:space="preserve" + x="300" + y="400" + style="font-family:'Lohit Telugu'">తెలà±à°—à±à°²à±‹</text> + + <!-- Teluga bug https://gitlab.com/inkscape/inkscape/-/issues/394 --> + <text xml:space="preserve" + x="300" + y="450" + style="font-family:'Lohit Telugu'">à°—à±à°°à°‚థాలయం</text> + + <!-- Teluga bug https://launchpadlibrarian.net/167162208/inkscape-telugu-text.svg --> + <text xml:space="preserve" + x="300" + y="500" + style="font-family:'Lohit Telugu'">ఇంకà±â€Œà°¸à±à°•à±‡à°ªà±</text> + </g> +</svg> diff --git a/testfiles/src/2geom-characterization-test.cpp b/testfiles/src/2geom-characterization-test.cpp new file mode 100644 index 0000000..d3f099b --- /dev/null +++ b/testfiles/src/2geom-characterization-test.cpp @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * 2Geom Lib characterization tests + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <gtest/gtest.h> + +#include <2geom/path.h> + +TEST(Characterization2Geom, retrievingBackElementOfAnEmptyClosedPathFails) +{ + Geom::Path path(Geom::Point(3, 5)); + path.close(); + ASSERT_TRUE(path.closed()); + ASSERT_EQ(path.size_closed(), 0u); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/attributes-test.cpp b/testfiles/src/attributes-test.cpp new file mode 100644 index 0000000..b1cb1fb --- /dev/null +++ b/testfiles/src/attributes-test.cpp @@ -0,0 +1,659 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +/* + * Unit tests for attributes. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <string> +#include <utility> +#include <vector> + +#include "gtest/gtest.h" + +#include "attributes.h" + +namespace { + +static const unsigned int FIRST_VALID_ID = 1; + +class AttributeInfo +{ +public: + AttributeInfo(std::string attr, bool supported) : + attr(std::move(attr)), + supported(supported) + { + } + + std::string attr; + bool supported; +}; + +typedef std::vector<AttributeInfo>::iterator AttrItr; + +std::vector<AttributeInfo> getKnownAttrs() +{ +/* Originally extracted mechanically from + http://www.w3.org/TR/SVG11/attindex.html: + + tidy -wrap 999 -asxml < attindex.html 2>/dev/null | + tr -d \\n | + sed 's,<tr>,@,g' | + tr @ \\n | + sed 's,</td>.*,,;s,^<td>,,;1,/^%/d;/^%/d;s,^, {",;s/$/", false},/' | + uniq + + attindex.html lacks attributeName, begin, additive, font, marker; + I've added these manually. + + SVG 2: white-space, shape-inside, shape-subtrace, shape-padding, shape-margin +*/ + AttributeInfo all_attrs[] = { + AttributeInfo("attributeName", true), + AttributeInfo("begin", true), + AttributeInfo("additive", true), + AttributeInfo("font", true), + AttributeInfo("-inkscape-font-specification", true), // TODO look into this attribute's name + AttributeInfo("marker", true), + AttributeInfo("line-height", true), + + AttributeInfo("accent-height", true), + AttributeInfo("accumulate", true), + AttributeInfo("alignment-baseline", true), + AttributeInfo("alphabetic", true), + AttributeInfo("amplitude", true), + AttributeInfo("animate", false), + AttributeInfo("arabic-form", true), + AttributeInfo("ascent", true), + AttributeInfo("attributeType", true), + AttributeInfo("azimuth", true), + AttributeInfo("baseFrequency", true), + AttributeInfo("baseline-shift", true), + AttributeInfo("baseProfile", false), + AttributeInfo("bbox", true), + AttributeInfo("bias", true), + AttributeInfo("by", true), + AttributeInfo("calcMode", true), + AttributeInfo("cap-height", true), + AttributeInfo("class", false), + AttributeInfo("clip", true), + AttributeInfo("clip-path", true), + AttributeInfo("clip-rule", true), + AttributeInfo("clipPathUnits", true), + AttributeInfo("color", true), + AttributeInfo("color-interpolation", true), + AttributeInfo("color-interpolation-filters", true), + AttributeInfo("color-profile", true), + AttributeInfo("color-rendering", true), + AttributeInfo("contentScriptType", false), + AttributeInfo("contentStyleType", false), + AttributeInfo("cursor", true), + AttributeInfo("cx", true), + AttributeInfo("cy", true), + AttributeInfo("d", true), + AttributeInfo("descent", true), + AttributeInfo("diffuseConstant", true), + AttributeInfo("direction", true), + AttributeInfo("display", true), + AttributeInfo("divisor", true), + AttributeInfo("dominant-baseline", true), + AttributeInfo("dur", true), + AttributeInfo("dx", true), + AttributeInfo("dy", true), + AttributeInfo("edgeMode", true), + AttributeInfo("elevation", true), + AttributeInfo("enable-background", true), + AttributeInfo("end", true), + AttributeInfo("exponent", true), + AttributeInfo("externalResourcesRequired", false), + AttributeInfo("feBlend", false), + AttributeInfo("feColorMatrix", false), + AttributeInfo("feComponentTransfer", false), + AttributeInfo("feComposite", false), + AttributeInfo("feConvolveMatrix", false), + AttributeInfo("feDiffuseLighting", false), + AttributeInfo("feDisplacementMap", false), + AttributeInfo("feFlood", false), + AttributeInfo("feGaussianBlur", false), + AttributeInfo("feImage", false), + AttributeInfo("feMerge", false), + AttributeInfo("feMorphology", false), + AttributeInfo("feOffset", false), + AttributeInfo("feSpecularLighting", false), + AttributeInfo("feTile", false), + AttributeInfo("fill", true), + AttributeInfo("fill-opacity", true), + AttributeInfo("fill-rule", true), + AttributeInfo("filter", true), + AttributeInfo("filterRes", true), + AttributeInfo("filterUnits", true), + AttributeInfo("flood-color", true), + AttributeInfo("flood-opacity", true), + AttributeInfo("font-family", true), + AttributeInfo("font-feature-settings", true), + AttributeInfo("font-size", true), + AttributeInfo("font-size-adjust", true), + AttributeInfo("font-stretch", true), + AttributeInfo("font-style", true), + AttributeInfo("font-variant", true), + AttributeInfo("font-variant-ligatures", true), + AttributeInfo("font-variant-position", true), + AttributeInfo("font-variant-caps", true), + AttributeInfo("font-variant-numeric", true), + AttributeInfo("font-variant-east-asian", true), + AttributeInfo("font-variant-alternates", true), + AttributeInfo("font-variation-settings", true), + AttributeInfo("font-weight", true), + AttributeInfo("format", false), + AttributeInfo("from", true), + AttributeInfo("fx", true), + AttributeInfo("fr", true), + AttributeInfo("fy", true), + AttributeInfo("g1", true), + AttributeInfo("g2", true), + AttributeInfo("glyph-name", true), + AttributeInfo("glyph-orientation-horizontal", true), + AttributeInfo("glyph-orientation-vertical", true), + AttributeInfo("glyphRef", false), + AttributeInfo("gradientTransform", true), + AttributeInfo("gradientUnits", true), + AttributeInfo("hanging", true), + AttributeInfo("hatchContentUnits", true), // SVG 2.0 + AttributeInfo("hatchTransform", true), // SVG 2.0 TODO renamed to transform + AttributeInfo("hatchUnits", true), // SVG 2.0 + AttributeInfo("height", true), + AttributeInfo("horiz-adv-x", true), + AttributeInfo("horiz-origin-x", true), + AttributeInfo("horiz-origin-y", true), + AttributeInfo("ideographic", true), + AttributeInfo("image-rendering", true), + AttributeInfo("in", true), + AttributeInfo("in2", true), + AttributeInfo("inline-size", true), + AttributeInfo("intercept", true), + AttributeInfo("isolation", true), + AttributeInfo("k", true), + AttributeInfo("k1", true), + AttributeInfo("k2", true), + AttributeInfo("k3", true), + AttributeInfo("k4", true), + AttributeInfo("kernelMatrix", true), + AttributeInfo("kernelUnitLength", true), + AttributeInfo("kerning", true), + AttributeInfo("keyPoints", false), + AttributeInfo("keySplines", true), + AttributeInfo("keyTimes", true), + AttributeInfo("lang", true), + AttributeInfo("lengthAdjust", true), + AttributeInfo("letter-spacing", true), + AttributeInfo("lighting-color", true), + AttributeInfo("inkscape:auto-region", true), + AttributeInfo("limitingConeAngle", true), + AttributeInfo("local", true), + AttributeInfo("marker-end", true), + AttributeInfo("marker-mid", true), + AttributeInfo("marker-start", true), + AttributeInfo("markerHeight", true), + AttributeInfo("markerUnits", true), + AttributeInfo("markerWidth", true), + AttributeInfo("mask", true), + AttributeInfo("maskContentUnits", true), + AttributeInfo("maskUnits", true), + AttributeInfo("mathematical", true), + AttributeInfo("max", true), + AttributeInfo("media", false), + AttributeInfo("method", false), + AttributeInfo("min", true), + AttributeInfo("mix-blend-mode", true), + AttributeInfo("mode", true), + AttributeInfo("name", true), + AttributeInfo("numOctaves", true), + AttributeInfo("offset", true), + AttributeInfo("onabort", false), + AttributeInfo("onactivate", false), + AttributeInfo("onbegin", false), + AttributeInfo("onclick", false), + AttributeInfo("onend", false), + AttributeInfo("onerror", false), + AttributeInfo("onfocusin", false), + AttributeInfo("onfocusout", false), + AttributeInfo("onload", true), + AttributeInfo("onmousedown", false), + AttributeInfo("onmousemove", false), + AttributeInfo("onmouseout", false), + AttributeInfo("onmouseover", false), + AttributeInfo("onmouseup", false), + AttributeInfo("onrepeat", false), + AttributeInfo("onresize", false), + AttributeInfo("onscroll", false), + AttributeInfo("onunload", false), + AttributeInfo("onzoom", false), + AttributeInfo("opacity", true), + AttributeInfo("operator", true), + AttributeInfo("order", true), + AttributeInfo("orient", true), + AttributeInfo("orientation", true), + AttributeInfo("origin", false), + AttributeInfo("overflow", true), + AttributeInfo("overline-position", true), + AttributeInfo("overline-thickness", true), + AttributeInfo("paint-order", true), + AttributeInfo("panose-1", true), + AttributeInfo("path", true), + AttributeInfo("pathLength", false), + AttributeInfo("patternContentUnits", true), + AttributeInfo("patternTransform", true), + AttributeInfo("patternUnits", true), + AttributeInfo("pitch", true), // SVG 2.- + AttributeInfo("pointer-events", true), + AttributeInfo("points", true), + AttributeInfo("pointsAtX", true), + AttributeInfo("pointsAtY", true), + AttributeInfo("pointsAtZ", true), + AttributeInfo("preserveAlpha", true), + AttributeInfo("preserveAspectRatio", true), + AttributeInfo("primitiveUnits", true), + AttributeInfo("r", true), + AttributeInfo("radius", true), + AttributeInfo("refX", true), + AttributeInfo("refY", true), + AttributeInfo("rendering-intent", true), + AttributeInfo("repeatCount", true), + AttributeInfo("repeatDur", true), + AttributeInfo("requiredFeatures", true), + AttributeInfo("requiredExtensions", true), + AttributeInfo("restart", true), + AttributeInfo("result", true), + AttributeInfo("rotate", true), + AttributeInfo("rx", true), + AttributeInfo("ry", true), + AttributeInfo("scale", true), + AttributeInfo("seed", true), + AttributeInfo("shape-inside", true), + AttributeInfo("shape-margin", true), + AttributeInfo("shape-subtract", true), + AttributeInfo("shape-padding", true), + AttributeInfo("shape-rendering", true), + AttributeInfo("side", true), + AttributeInfo("slope", true), + AttributeInfo("solid-color", true), // SVG 2.0 + AttributeInfo("solid-opacity", true), // SVG 2.0 + AttributeInfo("spacing", false), + AttributeInfo("specularConstant", true), + AttributeInfo("specularExponent", true), + AttributeInfo("spreadMethod", true), + AttributeInfo("startOffset", true), + AttributeInfo("stdDeviation", true), + AttributeInfo("stemh", true), + AttributeInfo("stemv", true), + AttributeInfo("stitchTiles", true), + AttributeInfo("stop-color", true), + AttributeInfo("stop-opacity", true), + AttributeInfo("strikethrough-position", true), + AttributeInfo("strikethrough-thickness", true), + AttributeInfo("stroke", true), + AttributeInfo("stroke-dasharray", true), + AttributeInfo("stroke-dashoffset", true), + AttributeInfo("stroke-linecap", true), + AttributeInfo("stroke-linejoin", true), + AttributeInfo("stroke-miterlimit", true), + AttributeInfo("stroke-opacity", true), + AttributeInfo("stroke-width", true), + AttributeInfo("style", true), + AttributeInfo("surfaceScale", true), + AttributeInfo("systemLanguage", true), + AttributeInfo("tableValues", true), + AttributeInfo("target", true), + AttributeInfo("targetX", true), + AttributeInfo("targetY", true), + AttributeInfo("text-align", true), + AttributeInfo("text-anchor", true), + AttributeInfo("text-decoration", true), + AttributeInfo("text-decoration-color", true), + AttributeInfo("text-decoration-fill", true), + AttributeInfo("text-decoration-line", true), + AttributeInfo("text-decoration-stroke", true), + AttributeInfo("text-decoration-style", true), + AttributeInfo("text-indent", true), + AttributeInfo("text-orientation", true), + AttributeInfo("text-rendering", true), + AttributeInfo("text-transform", true), + AttributeInfo("textLength", true), + AttributeInfo("title", false), + AttributeInfo("to", true), + AttributeInfo("transform", true), + AttributeInfo("type", true), + AttributeInfo("u1", true), + AttributeInfo("u2", true), + AttributeInfo("underline-position", true), + AttributeInfo("underline-thickness", true), + AttributeInfo("unicode", true), + AttributeInfo("unicode-bidi", true), + AttributeInfo("unicode-range", true), + AttributeInfo("units-per-em", true), + AttributeInfo("v-alphabetic", true), + AttributeInfo("v-hanging", true), + AttributeInfo("v-ideographic", true), + AttributeInfo("v-mathematical", true), + AttributeInfo("values", true), + AttributeInfo("vector-effect", true), + AttributeInfo("version", true), + AttributeInfo("vert-adv-y", true), + AttributeInfo("vert-origin-x", true), + AttributeInfo("vert-origin-y", true), + AttributeInfo("viewBox", true), + AttributeInfo("viewTarget", false), + AttributeInfo("visibility", true), + AttributeInfo("white-space", true), + AttributeInfo("width", true), + AttributeInfo("widths", true), + AttributeInfo("word-spacing", true), + AttributeInfo("writing-mode", true), + AttributeInfo("x", true), + AttributeInfo("x-height", true), + AttributeInfo("x1", true), + AttributeInfo("x2", true), + AttributeInfo("xChannelSelector", true), + AttributeInfo("xlink:actuate", true), + AttributeInfo("xlink:arcrole", true), + AttributeInfo("xlink:href", true), + AttributeInfo("xlink:role", true), + AttributeInfo("xlink:show", true), + AttributeInfo("xlink:title", true), + AttributeInfo("xlink:type", true), + AttributeInfo("xml:base", false), + AttributeInfo("xml:lang", true), + AttributeInfo("xml:space", true), + AttributeInfo("xmlns", false), + AttributeInfo("xmlns:xlink", false), + AttributeInfo("y", true), + AttributeInfo("y1", true), + AttributeInfo("y2", true), + AttributeInfo("yChannelSelector", true), + AttributeInfo("z", true), + AttributeInfo("zoomAndPan", false), + + // Extra attributes. + AttributeInfo("-inkscape-stroke", true), + AttributeInfo("id", true), + // AttributeInfo("inkscape:bbox-nodes", true), + // AttributeInfo("inkscape:bbox-paths", true), + AttributeInfo("inkscape:deskcolor", true), + AttributeInfo("inkscape:deskopacity", true), + AttributeInfo("inkscape:box3dsidetype", true), + AttributeInfo("inkscape:collect", true), + AttributeInfo("inkscape:color", true), + AttributeInfo("inkscape:connection-end", true), + AttributeInfo("inkscape:connection-end-point", true), + AttributeInfo("inkscape:connection-points", true), + AttributeInfo("inkscape:connection-start", true), + AttributeInfo("inkscape:connection-start-point", true), + AttributeInfo("inkscape:connector-avoid", true), + AttributeInfo("inkscape:connector-curvature", true), + AttributeInfo("inkscape:connector-spacing", true), + AttributeInfo("inkscape:connector-type", true), + AttributeInfo("inkscape:corner0", true), + AttributeInfo("inkscape:corner7", true), + AttributeInfo("inkscape:current-layer", true), + AttributeInfo("inkscape:cx", true), + AttributeInfo("inkscape:cy", true), + AttributeInfo("inkscape:rotation", true), + AttributeInfo("inkscape:document-units", true), + AttributeInfo("inkscape:dstBox", true), + AttributeInfo("inkscape:dstColumn", true), + AttributeInfo("inkscape:dstPath", true), + AttributeInfo("inkscape:dstShape", true), + AttributeInfo("inkscape:excludeShape", true), + AttributeInfo("inkscape:expanded", true), + AttributeInfo("inkscape:flatsided", true), + AttributeInfo("inkscape:groupmode", true), + AttributeInfo("inkscape:highlight-color", true), + AttributeInfo("inkscape:href", true), + AttributeInfo("inkscape:label", true), + AttributeInfo("inkscape:layoutOptions", true), + AttributeInfo("inkscape:lockguides", true), + AttributeInfo("inkscape:locked", true), + // AttributeInfo("inkscape:object-nodes", true), + // AttributeInfo("inkscape:object-paths", true), + AttributeInfo("inkscape:original", true), + AttributeInfo("inkscape:original-d", true), + AttributeInfo("inkscape:pagecheckerboard", true), + AttributeInfo("inkscape:pageopacity", true), + AttributeInfo("inkscape:pageshadow", true), + AttributeInfo("inkscape:path-effect", true), + AttributeInfo("inkscape:persp3d", true), + AttributeInfo("inkscape:persp3d-origin", true), + AttributeInfo("inkscape:perspectiveID", true), + AttributeInfo("inkscape:radius", true), + AttributeInfo("inkscape:randomized", true), + AttributeInfo("inkscape:rounded", true), + // AttributeInfo("inkscape:snap-alignment", true), + // AttributeInfo("inkscape:snap-alignment-self", true), + // AttributeInfo("inkscape:snap-distribution", true), + // AttributeInfo("inkscape:snap-bbox", true), + // AttributeInfo("inkscape:snap-bbox-edge-midpoints", true), + // AttributeInfo("inkscape:snap-bbox-midpoints", true), + // AttributeInfo("inkscape:snap-center", true), + // AttributeInfo("inkscape:snap-global", true), + // AttributeInfo("inkscape:snap-grids", true), + // AttributeInfo("inkscape:snap-intersection-paths", true), + // AttributeInfo("inkscape:snap-midpoints", true), + // AttributeInfo("inkscape:snap-nodes", true), + // AttributeInfo("inkscape:snap-object-midpoints", true), + // AttributeInfo("inkscape:snap-others", true), + // AttributeInfo("inkscape:snap-from-guide", true), + // AttributeInfo("inkscape:snap-page", true), + // AttributeInfo("inkscape:snap-path-clip", true), + // AttributeInfo("inkscape:snap-path-mask", true), + // AttributeInfo("inkscape:snap-perpendicular", true), + // AttributeInfo("inkscape:snap-smooth-nodes", true), + // AttributeInfo("inkscape:snap-tangential", true), + // AttributeInfo("inkscape:snap-text-baseline", true), + // AttributeInfo("inkscape:snap-to-guides", true), + AttributeInfo("inkscape:spray-origin", true), + AttributeInfo("inkscape:srcNoMarkup", true), + AttributeInfo("inkscape:srcPango", true), + AttributeInfo("inkscape:transform-center-x", true), + AttributeInfo("inkscape:transform-center-y", true), + AttributeInfo("inkscape:version", true), + AttributeInfo("inkscape:vp_x", true), + AttributeInfo("inkscape:vp_y", true), + AttributeInfo("inkscape:vp_z", true), + AttributeInfo("inkscape:window-height", true), + AttributeInfo("inkscape:window-maximized", true), + AttributeInfo("inkscape:window-width", true), + AttributeInfo("inkscape:window-x", true), + AttributeInfo("inkscape:window-y", true), + AttributeInfo("inkscape:zoom", true), + AttributeInfo("inkscape:svg-dpi", true), + AttributeInfo("inkscape:swatch", true), + AttributeInfo("sodipodi:arc-type", true), + AttributeInfo("sodipodi:arg1", true), + AttributeInfo("sodipodi:arg2", true), + AttributeInfo("sodipodi:argument", true), + AttributeInfo("sodipodi:cx", true), + AttributeInfo("sodipodi:cy", true), + AttributeInfo("sodipodi:docname", true), + AttributeInfo("sodipodi:end", true), + AttributeInfo("sodipodi:expansion", true), + AttributeInfo("sodipodi:insensitive", true), + AttributeInfo("sodipodi:linespacing", true), + AttributeInfo("sodipodi:open", true), + AttributeInfo("sodipodi:original", true), + AttributeInfo("sodipodi:r1", true), + AttributeInfo("sodipodi:r2", true), + AttributeInfo("sodipodi:radius", true), + AttributeInfo("sodipodi:revolution", true), + AttributeInfo("sodipodi:role", true), + AttributeInfo("sodipodi:rx", true), + AttributeInfo("sodipodi:ry", true), + AttributeInfo("sodipodi:sides", true), + AttributeInfo("sodipodi:start", true), + AttributeInfo("sodipodi:t0", true), + AttributeInfo("sodipodi:type", true), + AttributeInfo("sodipodi:version", false), + + // SPMeshPatch + AttributeInfo("tensor", true), + + // SPNamedView + AttributeInfo("fit-margin-top", true), + AttributeInfo("fit-margin-left", true), + AttributeInfo("fit-margin-right", true), + AttributeInfo("fit-margin-bottom", true), + AttributeInfo("units", true), + AttributeInfo("viewonly", true), + AttributeInfo("showgrid", true), +// AttributeInfo("gridtype", true), + AttributeInfo("showguides", true), + AttributeInfo("gridtolerance", true), + AttributeInfo("guidetolerance", true), + AttributeInfo("objecttolerance", true), + AttributeInfo("alignmenttolerance", true), + AttributeInfo("distributiontolerance", true), +/* AttributeInfo("gridoriginx", true), + AttributeInfo("gridoriginy", true), + AttributeInfo("gridspacingx", true), + AttributeInfo("gridspacingy", true), + AttributeInfo("gridanglex", true), + AttributeInfo("gridanglez", true), + AttributeInfo("gridcolor", true), + AttributeInfo("gridopacity", true), + AttributeInfo("gridempcolor", true), + AttributeInfo("gridempopacity", true), + AttributeInfo("gridempspacing", true), */ + AttributeInfo("guidecolor", true), + AttributeInfo("guideopacity", true), + AttributeInfo("guidehicolor", true), + AttributeInfo("guidehiopacity", true), + AttributeInfo("showborder", true), + AttributeInfo("inkscape:showpageshadow", true), + AttributeInfo("borderlayer", true), + AttributeInfo("bordercolor", true), + AttributeInfo("borderopacity", true), + AttributeInfo("pagecolor", true), + + // SPGuide + AttributeInfo("position", true), + + // don't know what that is + AttributeInfo("effect", true) + }; + + size_t count = sizeof(all_attrs) / sizeof(all_attrs[0]); + std::vector<AttributeInfo> vect(all_attrs, all_attrs + count); + EXPECT_GT(vect.size(), size_t(100)); // should be more than + return vect; +} + +/** + * Returns a vector with counts for all IDs up to the highest known value. + * + * The index is the ID, and the value is the number of times that ID is seen. + */ +std::vector<size_t> getIdIds() +{ + std::vector<size_t> ids; + std::vector<AttributeInfo> all_attrs = getKnownAttrs(); + ids.reserve(all_attrs.size()); // minimize memory thrashing + for (auto & all_attr : all_attrs) { + auto id = sp_attribute_lookup(all_attr.attr.c_str()); + if ((int)id >= ids.size()) { + ids.resize((int)id + 1); + } + ids[(int)id]++; + } + + return ids; +} + +// Ensure 'supported' value for each known attribute is correct. +TEST(AttributesTest, SupportedKnown) +{ + std::vector<AttributeInfo> all_attrs = getKnownAttrs(); + for (AttrItr it(all_attrs.begin()); it != all_attrs.end(); ++it) { + auto id = sp_attribute_lookup(it->attr.c_str()); + EXPECT_EQ(it->supported, id != SPAttr::INVALID) << "Matching for attribute '" << it->attr << "'"; + } +} + +// Ensure names of known attributes are preserved when converted to id and back. +TEST(AttributesTest, NameRoundTrip) +{ + std::vector<AttributeInfo> all_attrs = getKnownAttrs(); + for (AttrItr it(all_attrs.begin()); it != all_attrs.end(); ++it) { + if (it->supported) { + auto id = sp_attribute_lookup(it->attr.c_str()); + char const *redoneName = sp_attribute_name(id); + EXPECT_TRUE(redoneName != NULL) << "For attribute '" << it->attr << "'"; + if (redoneName) { + EXPECT_EQ(it->attr, redoneName); + } + } + } +} + +/* Test for any attributes that this test program doesn't know about. + * + * If any are found, then: + * + * If it is in the `inkscape:' namespace then simply add it to all_attrs with + * `true' as the second field (`supported'). + * + * If it is in the `sodipodi:' namespace then check the spelling against sodipodi + * sources. If you don't have sodipodi sources, then don't add it: leave to someone + * else. + * + * Otherwise, it's probably a bug: ~all SVG 1.1 attributes should already be + * in the all_attrs table. However, the comment above all_attrs does mention + * some things missing from attindex.html, so there may be more. Check the SVG + * spec. Another possibility is that the attribute is new in SVG 1.2. In this case, + * check the spelling against the [draft] SVG 1.2 spec before adding to all_attrs. + * (If you can't be bothered checking the spec, then don't update all_attrs.) + * + * If the attribute isn't in either SVG 1.1 or 1.2 then it's probably a mistake + * for it not to be in the inkscape namespace. (Not sure about attributes used only + * on elements in the inkscape namespace though.) + * + * In any case, make sure that the attribute's source is documented accordingly. + */ +TEST(AttributesTest, ValuesAreKnown) +{ + std::vector<size_t> ids = getIdIds(); + for (size_t i = FIRST_VALID_ID; i < ids.size(); ++i) { + if (!ids[i]) { + char const *name = sp_attribute_name((SPAttr)i); + EXPECT_TRUE(ids[i] > 0) << "Attribute string with enum " << i << " {" << name << "} not handled"; + } + } +} + +// Ensure two different names aren't mapped to the same enum value. +TEST(AttributesTest, ValuesUnique) +{ + std::vector<size_t> ids = getIdIds(); + for (size_t i = FIRST_VALID_ID; i < ids.size(); ++i) { + EXPECT_LE(ids[i], size_t(1)) << "Attribute enum " << i << " used for multiple strings" + << " including {" << sp_attribute_name((SPAttr)i) << "}"; + } +} + +} // namespace + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/src/cairo-utils-test.cpp b/testfiles/src/cairo-utils-test.cpp new file mode 100644 index 0000000..3412c4a --- /dev/null +++ b/testfiles/src/cairo-utils-test.cpp @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Tests for classes like Pixbuf from cairo-utils + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <src/display/cairo-utils.h> +#include <src/inkscape.h> + + +class PixbufTest : public ::testing::Test { + public: + static std::string base64of(const std::string &s) + { + gchar *encoded = g_base64_encode(reinterpret_cast<guchar const *>(s.c_str()), s.size()); + std::string r(encoded); + g_free(encoded); + return r; + } + + protected: + void SetUp() override + { + // setup hidden dependency + Inkscape::Application::create(false); + } +}; + +TEST_F(PixbufTest, creatingFromSvgBufferWithoutViewboxOrWidthAndHeightReturnsNull) +{ + std::string svg_buffer( + "<svg><path d=\"M 71.527648,186.14229 A 740.48715,740.48715 0 0 0 696.31258,625.8041 Z\"/></svg>"); + double default_dpi = 96.0; + std::string filename_with_svg_extension("malformed.svg"); + + ASSERT_EQ(Inkscape::Pixbuf::create_from_buffer(svg_buffer, default_dpi, filename_with_svg_extension), nullptr); +} + +TEST_F(PixbufTest, creatingFromSvgUriWithoutViewboxOrWidthAndHeightReturnsNull) +{ + std::string uri_data = "image/svg+xml;base64," + base64of("<svg><path d=\"M 71.527648,186.14229 A 740.48715,740.48715 0 0 0 696.31258,625.8041 Z\"/></svg>"); + double default_dpi = 96.0; + + ASSERT_EQ(Inkscape::Pixbuf::create_from_data_uri(uri_data.c_str(), default_dpi), nullptr); +}
\ No newline at end of file diff --git a/testfiles/src/color-profile-test.cpp b/testfiles/src/color-profile-test.cpp new file mode 100644 index 0000000..b140b3c --- /dev/null +++ b/testfiles/src/color-profile-test.cpp @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Unit tests for color profile. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" + +#include "attributes.h" +#include "cms-system.h" +#include "object/color-profile.h" +#include "doc-per-case-test.h" + +namespace { + +/** + * Test fixture to inherit a shared doc and create a color profile instance per test. + */ +class ProfTest : public DocPerCaseTest +{ +public: + ProfTest() : + DocPerCaseTest(), + _prof(0) + { + } + +protected: + void SetUp() override + { + DocPerCaseTest::SetUp(); + _prof = new Inkscape::ColorProfile(); + ASSERT_TRUE( _prof != NULL ); + _prof->document = _doc.get(); + } + + void TearDown() override + { + if (_prof) { + delete _prof; + _prof = NULL; + } + DocPerCaseTest::TearDown(); + } + + Inkscape::ColorProfile *_prof; +}; + +typedef ProfTest ColorProfileTest; + +TEST_F(ColorProfileTest, SetRenderingIntent) +{ + struct { + gchar const *attr; + guint intVal; + } + const cases[] = { + {"auto", (guint)Inkscape::RENDERING_INTENT_AUTO}, + {"perceptual", (guint)Inkscape::RENDERING_INTENT_PERCEPTUAL}, + {"relative-colorimetric", (guint)Inkscape::RENDERING_INTENT_RELATIVE_COLORIMETRIC}, + {"saturation", (guint)Inkscape::RENDERING_INTENT_SATURATION}, + {"absolute-colorimetric", (guint)Inkscape::RENDERING_INTENT_ABSOLUTE_COLORIMETRIC}, + {"something-else", (guint)Inkscape::RENDERING_INTENT_UNKNOWN}, + {"auto2", (guint)Inkscape::RENDERING_INTENT_UNKNOWN}, + }; + + for (auto i : cases) { + _prof->setKeyValue( SPAttr::RENDERING_INTENT, i.attr); + ASSERT_EQ( (guint)i.intVal, _prof->rendering_intent ) << i.attr; + } +} + +TEST_F(ColorProfileTest, SetLocal) +{ + gchar const* cases[] = { + "local", + "something", + }; + + for (auto & i : cases) { + _prof->setKeyValue( SPAttr::LOCAL, i); + ASSERT_TRUE( _prof->local != NULL ); + if ( _prof->local ) { + ASSERT_EQ( std::string(i), _prof->local ); + } + } + _prof->setKeyValue( SPAttr::LOCAL, NULL); + ASSERT_EQ( (gchar*)0, _prof->local ); +} + +TEST_F(ColorProfileTest, SetName) +{ + gchar const* cases[] = { + "name", + "something", + }; + + for (auto & i : cases) { + _prof->setKeyValue( SPAttr::NAME, i); + ASSERT_TRUE( _prof->name != NULL ); + if ( _prof->name ) { + ASSERT_EQ( std::string(i), _prof->name ); + } + } + _prof->setKeyValue( SPAttr::NAME, NULL ); + ASSERT_EQ( (gchar*)0, _prof->name ); +} + + +} // namespace + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/src/curve-test.cpp b/testfiles/src/curve-test.cpp new file mode 100644 index 0000000..75c7b98 --- /dev/null +++ b/testfiles/src/curve-test.cpp @@ -0,0 +1,292 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Curve test + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <gtest/gtest.h> + +#include "display/curve.h" +#include <2geom/curves.h> +#include <2geom/path.h> +#include <2geom/pathvector.h> + +class CurveTest : public ::testing::Test { + public: + Geom::Path path1; + Geom::Path path2; + Geom::Path path3; + Geom::Path path4; + + static size_t get_refcount(SPCurve const *curve) { return curve->_refcount; } + + protected: + CurveTest() + : path4(Geom::Point(3, 5)) // Just a moveto + { + // Closed path + path1.append(Geom::LineSegment(Geom::Point(0, 0), Geom::Point(1, 0))); + path1.append(Geom::LineSegment(Geom::Point(1, 0), Geom::Point(1, 1))); + path1.close(); + // Closed path (ClosingSegment is zero length) + path2.append(Geom::LineSegment(Geom::Point(2, 0), Geom::Point(3, 0))); + path2.append(Geom::CubicBezier(Geom::Point(3, 0), Geom::Point(2, 1), Geom::Point(1, 1), Geom::Point(2, 0))); + path2.close(); + // Open path + path3.setStitching(true); + path3.append(Geom::EllipticalArc(Geom::Point(4, 0), 1, 2, M_PI, false, false, Geom::Point(5, 1))); + path3.append(Geom::LineSegment(Geom::Point(5, 1), Geom::Point(5, 2))); + path3.append(Geom::LineSegment(Geom::Point(6, 4), Geom::Point(2, 4))); + } +}; + +TEST_F(CurveTest, testMoveSemantics) +{ + SPCurve c1; + c1.moveto(2, 3); + c1.lineto(4, 5); + + // move construction + SPCurve c2(std::move(c1)); + + ASSERT_EQ(c1.get_segment_count(), 0); + ASSERT_EQ(c2.get_segment_count(), 1); + + // move assignment + c1 = std::move(c2); + + ASSERT_EQ(c1.get_segment_count(), 1); + ASSERT_EQ(c2.get_segment_count(), 0); +} + +TEST_F(CurveTest, testRefCount) +{ + auto c1 = std::make_unique<SPCurve>(); + ASSERT_EQ(get_refcount(c1.get()), 1); + { + auto c2 = c1->ref(); + ASSERT_EQ(c2.get(), c1.get()); + ASSERT_EQ(get_refcount(c1.get()), 2); + ASSERT_EQ(get_refcount(c2.get()), 2); + } + ASSERT_EQ(get_refcount(c1.get()), 1); +} + +TEST_F(CurveTest, testGetSegmentCount) +{ + { // Zero segments + Geom::PathVector pv; + SPCurve curve(pv); + ASSERT_EQ(curve.get_segment_count(), 0u); + } + { // Zero segments + Geom::PathVector pv; + pv.push_back(Geom::Path()); + SPCurve curve(pv); + ASSERT_EQ(curve.get_segment_count(), 0u); + } + { // Individual paths + Geom::PathVector pv((Geom::Path())); + pv[0] = path1; + ASSERT_EQ(SPCurve(pv).get_segment_count(), 3u); + pv[0] = path2; + ASSERT_EQ(SPCurve(pv).get_segment_count(), 2u); + pv[0] = path3; + ASSERT_EQ(SPCurve(pv).get_segment_count(), 4u); + pv[0] = path4; + ASSERT_EQ(SPCurve(pv).get_segment_count(), 0u); + pv[0].close(); + ASSERT_EQ(SPCurve(pv).get_segment_count(), 0u); + } + { // Combination + Geom::PathVector pv; + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + pv.push_back(path4); + SPCurve curve(pv); + ASSERT_EQ(curve.get_segment_count(), 9u); + } +} + +TEST_F(CurveTest, testNodesInPathForZeroSegments) +{ + { // Zero segments + Geom::PathVector pv; + SPCurve curve(pv); + ASSERT_EQ(curve.nodes_in_path(), 0u); + } + { // Zero segments + Geom::PathVector pv; + pv.push_back(Geom::Path()); + SPCurve curve(pv); + ASSERT_EQ(curve.nodes_in_path(), 1u); + } +} + +TEST_F(CurveTest, testNodesInPathForIndividualPaths) +{ + Geom::PathVector pv((Geom::Path())); + pv[0] = path1; + ASSERT_EQ(SPCurve(pv).nodes_in_path(), 3u); + pv[0] = path2; + ASSERT_EQ(SPCurve(pv).nodes_in_path(), 2u); // zero length closing segments do not increase the nodecount. + pv[0] = path3; + ASSERT_EQ(SPCurve(pv).nodes_in_path(), 5u); + pv[0] = path4; + ASSERT_EQ(SPCurve(pv).nodes_in_path(), 1u); +} + +TEST_F(CurveTest, testNodesInPathForNakedMoveToClosedPath) +{ + Geom::PathVector pv((Geom::Path())); + pv[0] = path4; // just a MoveTo + pv[0].close(); + ASSERT_EQ(SPCurve(pv).nodes_in_path(), 1u); +} + +/* +TEST_F(CurveTest, testNodesInPathForPathsCombination) +{ + Geom::PathVector pv; + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + pv.push_back(path4); + SPCurve curve(pv); + ASSERT_EQ(curve.nodes_in_path(), 12u); +} +*/ + +TEST_F(CurveTest, testIsEmpty) +{ + ASSERT_TRUE(SPCurve(Geom::PathVector()).is_empty()); + ASSERT_FALSE(SPCurve(path1).is_empty()); + ASSERT_FALSE(SPCurve(path2).is_empty()); + ASSERT_FALSE(SPCurve(path3).is_empty()); + ASSERT_FALSE(SPCurve(path4).is_empty()); +} + +TEST_F(CurveTest, testIsClosed) +{ + ASSERT_FALSE(SPCurve(Geom::PathVector()).is_closed()); + Geom::PathVector pv((Geom::Path())); + ASSERT_FALSE(SPCurve(pv).is_closed()); + pv[0].close(); + ASSERT_TRUE(SPCurve(pv).is_closed()); + ASSERT_TRUE(SPCurve(path1).is_closed()); + ASSERT_TRUE(SPCurve(path2).is_closed()); + ASSERT_FALSE(SPCurve(path3).is_closed()); + ASSERT_FALSE(SPCurve(path4).is_closed()); +} + +/* +TEST_F(CurveTest, testLastFirstSegment) +{ + Geom::PathVector pv(path4); + ASSERT_EQ(SPCurve(pv).first_segment(), (void *)0); + ASSERT_EQ(SPCurve(pv).last_segment(), (void *)0); + pv[0].close(); + ASSERT_NE(SPCurve(pv).first_segment(), (void *)0); + ASSERT_NE(SPCurve(pv).last_segment(), (void *)0); +} +*/ + +TEST_F(CurveTest, testLastFirstPath) +{ + Geom::PathVector pv; + ASSERT_EQ(SPCurve(pv).first_path(), (void *)0); + ASSERT_EQ(SPCurve(pv).last_path(), (void *)0); + pv.push_back(path1); + ASSERT_EQ(*SPCurve(pv).first_path(), pv[0]); + ASSERT_EQ(*SPCurve(pv).last_path(), pv[0]); + pv.push_back(path2); + ASSERT_EQ(*SPCurve(pv).first_path(), pv[0]); + ASSERT_EQ(*SPCurve(pv).last_path(), pv[1]); + pv.push_back(path3); + ASSERT_EQ(*SPCurve(pv).first_path(), pv[0]); + ASSERT_EQ(*SPCurve(pv).last_path(), pv[2]); + pv.push_back(path4); + ASSERT_EQ(*SPCurve(pv).first_path(), pv[0]); + ASSERT_EQ(*SPCurve(pv).last_path(), pv[3]); +} + +TEST_F(CurveTest, testFirstPoint) +{ + ASSERT_EQ(*(SPCurve(path1).first_point()), Geom::Point(0, 0)); + ASSERT_EQ(*(SPCurve(path2).first_point()), Geom::Point(2, 0)); + ASSERT_EQ(*(SPCurve(path3).first_point()), Geom::Point(4, 0)); + ASSERT_EQ(*(SPCurve(path4).first_point()), Geom::Point(3, 5)); + Geom::PathVector pv; + ASSERT_FALSE(SPCurve(pv).first_point()); + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + ASSERT_EQ(*(SPCurve(pv).first_point()), Geom::Point(0, 0)); + pv.insert(pv.begin(), path4); + ASSERT_EQ(*(SPCurve(pv).first_point()), Geom::Point(3, 5)); +} + +/* +TEST_F(CurveTest, testLastPoint) +{ + ASSERT_EQ(*(SPCurve(path1).last_point()), Geom::Point(0, 0)); + ASSERT_EQ(*(SPCurve(path2).last_point()), Geom::Point(2, 0)); + ASSERT_EQ(*(SPCurve(path3).last_point()), Geom::Point(8, 4)); + ASSERT_EQ(*(SPCurve(path4).last_point()), Geom::Point(3, 5)); + Geom::PathVector pv; + ASSERT_FALSE(SPCurve(pv).last_point()); + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + ASSERT_EQ(*(SPCurve(pv).last_point()), Geom::Point(8, 4)); + pv.push_back(path4); + ASSERT_EQ(*(SPCurve(pv).last_point()), Geom::Point(3, 5)); +} +*/ + +TEST_F(CurveTest, testSecondPoint) +{ + ASSERT_EQ(*(SPCurve(path1).second_point()), Geom::Point(1, 0)); + ASSERT_EQ(*(SPCurve(path2).second_point()), Geom::Point(3, 0)); + ASSERT_EQ(*(SPCurve(path3).second_point()), Geom::Point(5, 1)); + ASSERT_EQ(*(SPCurve(path4).second_point()), Geom::Point(3, 5)); + Geom::PathVector pv; + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + ASSERT_EQ(*(SPCurve(pv).second_point()), Geom::Point(1, 0)); + pv.insert(pv.begin(), path4); + ASSERT_EQ(*SPCurve(pv).second_point(), Geom::Point(0, 0)); +} + +/* +TEST_F(CurveTest, testPenultimatePoint) +{ + ASSERT_EQ(*(SPCurve(Geom::PathVector(path1)).penultimate_point()), Geom::Point(1, 1)); + ASSERT_EQ(*(SPCurve(Geom::PathVector(path2)).penultimate_point()), Geom::Point(3, 0)); + ASSERT_EQ(*(SPCurve(Geom::PathVector(path3)).penultimate_point()), Geom::Point(6, 4)); + ASSERT_EQ(*(SPCurve(Geom::PathVector(path4)).penultimate_point()), Geom::Point(3, 5)); + Geom::PathVector pv; + pv.push_back(path1); + pv.push_back(path2); + pv.push_back(path3); + ASSERT_EQ(*(SPCurve(pv).penultimate_point()), Geom::Point(6, 4)); + pv.push_back(path4); + ASSERT_EQ(*(SPCurve(pv).penultimate_point()), Geom::Point(8, 4)); +} +*/ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/cxxtests-to-migrate/marker-test.h b/testfiles/src/cxxtests-to-migrate/marker-test.h new file mode 100644 index 0000000..1a77aff --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/marker-test.h @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * @brief Unit tests for SVG marker handling + *//* + * Authors: + * see git history + * Johan Engelen <goejendaagh@zonnet.nl> + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <cxxtest/TestSuite.h> + +#include "sp-marker-loc.h" + +class MarkerTest : public CxxTest::TestSuite +{ +public: + + void testMarkerLoc() + { + // code depends on these *exact* values, so check them here. + TS_ASSERT_EQUALS(SP_MARKER_LOC, 0); + TS_ASSERT_EQUALS(SP_MARKER_LOC_START, 1); + TS_ASSERT_EQUALS(SP_MARKER_LOC_MID, 2); + TS_ASSERT_EQUALS(SP_MARKER_LOC_END, 3); + TS_ASSERT_EQUALS(SP_MARKER_LOC_QTY, 4); + } + +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/cxxtests-to-migrate/mod360-test.h b/testfiles/src/cxxtests-to-migrate/mod360-test.h new file mode 100644 index 0000000..12ee994 --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/mod360-test.h @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * TODO: insert short description here + *//* + * Authors: see git history + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#ifndef SEEN_MOD_360_TEST_H +#define SEEN_MOD_360_TEST_H + +#include <cxxtest/TestSuite.h> +#include <2geom/math-utils.h> +#include "mod360.h" + + +class Mod360Test : public CxxTest::TestSuite +{ +public: + static double inf() { return INFINITY; } + static double nan() { return ((double)INFINITY) - ((double)INFINITY); } + + void testMod360() + { + double cases[][2] = { + {0, 0}, + {10, 10}, + {360, 0}, + {361, 1}, + {-1, 359}, + {-359, 1}, + {-360, -0}, + {-361, 359}, + {inf(), 0}, + {-inf(), 0}, + {nan(), 0}, + {720, 0}, + {-721, 359}, + {-1000, 80} + }; + + for ( unsigned i = 0; i < G_N_ELEMENTS(cases); i++ ) { + double result = mod360( cases[i][0] ); + TS_ASSERT_EQUALS( cases[i][1], result ); + } + } + +}; + + +#endif // SEEN_MOD_360_TEST_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : + diff --git a/testfiles/src/cxxtests-to-migrate/preferences-test.h b/testfiles/src/cxxtests-to-migrate/preferences-test.h new file mode 100644 index 0000000..0dc04b8 --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/preferences-test.h @@ -0,0 +1,139 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * @brief Unit tests for the Preferences object + *//* + * Authors: + * see git history + * Krzysztof Kosiński <tweenk.pl@gmail.com> + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <cxxtest/TestSuite.h> +#include "preferences.h" + +#include <glibmm/ustring.h> + +// test observer +class TestObserver : public Inkscape::Preferences::Observer { +public: + TestObserver(Glib::ustring const &path) : + Inkscape::Preferences::Observer(path), + value(0) {} + + virtual void notify(Inkscape::Preferences::Entry const &val) + { + value = val.getInt(); + } + int value; +}; + +class PreferencesTest : public CxxTest::TestSuite { +public: + void setUp() { + prefs = Inkscape::Preferences::get(); + } + void tearDown() { + prefs = NULL; + Inkscape::Preferences::unload(); + } + + void testStartingState() + { + TS_ASSERT_DIFFERS(prefs, static_cast<void*>(0)); + TS_ASSERT_EQUALS(prefs->isWritable(), true); + } + + void testOverwrite() + { + prefs->setInt("/test/intvalue", 123); + prefs->setInt("/test/intvalue", 321); + TS_ASSERT_EQUALS(prefs->getInt("/test/intvalue"), 321); + } + + void testDefaultReturn() + { + TS_ASSERT_EQUALS(prefs->getInt("/this/path/does/not/exist", 123), 123); + } + + void testLimitedReturn() + { + prefs->setInt("/test/intvalue", 1000); + + // simple case + TS_ASSERT_EQUALS(prefs->getIntLimited("/test/intvalue", 123, 0, 500), 123); + // the below may seem quirky but this behaviour is intended + TS_ASSERT_EQUALS(prefs->getIntLimited("/test/intvalue", 123, 1001, 5000), 123); + // corner cases + TS_ASSERT_EQUALS(prefs->getIntLimited("/test/intvalue", 123, 0, 1000), 1000); + TS_ASSERT_EQUALS(prefs->getIntLimited("/test/intvalue", 123, 1000, 5000), 1000); + } + + void testKeyObserverNotification() + { + Glib::ustring const path = "/some/random/path"; + TestObserver obs("/some/random"); + obs.value = 1; + prefs->setInt(path, 5); + TS_ASSERT_EQUALS(obs.value, 1); // no notifications sent before adding + + prefs->addObserver(obs); + prefs->setInt(path, 10); + TS_ASSERT_EQUALS(obs.value, 10); + prefs->setInt("/some/other/random/path", 10); + TS_ASSERT_EQUALS(obs.value, 10); // value should not change + + prefs->removeObserver(obs); + prefs->setInt(path, 15); + TS_ASSERT_EQUALS(obs.value, 10); // no notifications sent after removal + } + + void testEntryObserverNotification() + { + Glib::ustring const path = "/some/random/path"; + TestObserver obs(path); + obs.value = 1; + prefs->setInt(path, 5); + TS_ASSERT_EQUALS(obs.value, 1); // no notifications sent before adding + + prefs->addObserver(obs); + prefs->setInt(path, 10); + TS_ASSERT_EQUALS(obs.value, 10); + + // test that filtering works properly + prefs->setInt("/some/random/value", 1234); + TS_ASSERT_EQUALS(obs.value, 10); + prefs->setInt("/some/randomvalue", 1234); + TS_ASSERT_EQUALS(obs.value, 10); + prefs->setInt("/some/random/path2", 1234); + TS_ASSERT_EQUALS(obs.value, 10); + + prefs->removeObserver(obs); + prefs->setInt(path, 15); + TS_ASSERT_EQUALS(obs.value, 10); // no notifications sent after removal + } + + void testPreferencesEntryMethods() + { + prefs->setInt("/test/prefentry", 100); + Inkscape::Preferences::Entry val = prefs->getEntry("/test/prefentry"); + TS_ASSERT(val.isValid()); + TS_ASSERT_EQUALS(val.getPath(), "/test/prefentry"); + TS_ASSERT_EQUALS(val.getEntryName(), "prefentry"); + TS_ASSERT_EQUALS(val.getInt(), 100); + } +private: + Inkscape::Preferences *prefs; +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/cxxtests-to-migrate/sp-style-elem-test.h b/testfiles/src/cxxtests-to-migrate/sp-style-elem-test.h new file mode 100644 index 0000000..7846360 --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/sp-style-elem-test.h @@ -0,0 +1,166 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * TODO: insert short description here + *//* + * Authors: see git history + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#ifndef SEEN_SP_STYLE_ELEM_TEST_H +#define SEEN_SP_STYLE_ELEM_TEST_H + +#include <cxxtest/TestSuite.h> + +#include "test-helpers.h" + +#include "sp-style-elem.h" +#include "xml/repr.h" + +class SPStyleElemTest : public CxxTest::TestSuite +{ +public: + std::unique_ptr<SPDocument> _doc; + + SPStyleElemTest() = default; + + virtual ~SPStyleElemTest() = default; + + static void createSuiteSubclass( SPStyleElemTest *& dst ) + { + SPStyleElem *style_elem = new SPStyleElem(); + + if ( style_elem ) { + TS_ASSERT(!style_elem->is_css); + TS_ASSERT(style_elem->media.print); + TS_ASSERT(style_elem->media.screen); + delete style_elem; + + dst = new SPStyleElemTest(); + } + } + + static SPStyleElemTest *createSuite() + { + return Inkscape::createSuiteAndDocument<SPStyleElemTest>( createSuiteSubclass ); + } + + static void destroySuite( SPStyleElemTest *suite ) { delete suite; } + +// ------------------------------------------------------------------------- +// ------------------------------------------------------------------------- + + + void testSetType() + { + SPStyleElem *style_elem = new SPStyleElem(); + SP_OBJECT(style_elem)->document = _doc.get(); + + SP_OBJECT(style_elem)->setKeyValue( SPAttr::TYPE, "something unrecognized"); + TS_ASSERT( !style_elem->is_css ); + + SP_OBJECT(style_elem)->setKeyValue( SPAttr::TYPE, "text/css"); + TS_ASSERT( style_elem->is_css ); + + SP_OBJECT(style_elem)->setKeyValue( SPAttr::TYPE, "atext/css"); + TS_ASSERT( !style_elem->is_css ); + + SP_OBJECT(style_elem)->setKeyValue( SPAttr::TYPE, "text/cssx"); + TS_ASSERT( !style_elem->is_css ); + + delete style_elem; + } + + void testWrite() + { + TS_ASSERT( _doc ); + TS_ASSERT( _doc->getReprDoc() ); + if ( !_doc->getReprDoc() ) { + return; // evil early return + } + + SPStyleElem *style_elem = new SPStyleElem(); + SP_OBJECT(style_elem)->document = _doc.get(); + + SP_OBJECT(style_elem)->setKeyValue( SPAttr::TYPE, "text/css"); + Inkscape::XML::Node *repr = _doc->getReprDoc()->createElement("svg:style"); + SP_OBJECT(style_elem)->updateRepr(_doc->getReprDoc(), repr, SP_OBJECT_WRITE_ALL); + { + gchar const *typ = repr->attribute("type"); + TS_ASSERT( typ != NULL ); + if ( typ ) + { + TS_ASSERT_EQUALS( std::string(typ), std::string("text/css") ); + } + } + + delete style_elem; + } + + void testBuild() + { + TS_ASSERT( _doc ); + TS_ASSERT( _doc->getReprDoc() ); + if ( !_doc->getReprDoc() ) { + return; // evil early return + } + + SPStyleElem *style_elem = new SPStyleElem(); + Inkscape::XML::Node *const repr = _doc->getReprDoc()->createElement("svg:style"); + repr->setAttribute("type", "text/css"); + style_elem->invoke_build( _doc.get(), repr, false); + TS_ASSERT( style_elem->is_css ); + TS_ASSERT( style_elem->media.print ); + TS_ASSERT( style_elem->media.screen ); + + /* Some checks relevant to the read_content test below. */ + { + g_assert(_doc->style_cascade); + CRStyleSheet const *const stylesheet = cr_cascade_get_sheet(_doc->style_cascade, ORIGIN_AUTHOR); + g_assert(stylesheet); + g_assert(stylesheet->statements == NULL); + } + + delete style_elem; + Inkscape::GC::release(repr); + } + + void testReadContent() + { + TS_ASSERT( _doc ); + TS_ASSERT( _doc->getReprDoc() ); + if ( !_doc->getReprDoc() ) { + return; // evil early return + } + + SPStyleElem *style_elem = new SPStyleElem(); + Inkscape::XML::Node *const repr = _doc->getReprDoc()->createElement("svg:style"); + repr->setAttribute("type", "text/css"); + Inkscape::XML::Node *const content_repr = _doc->getReprDoc()->createTextNode(".myclass { }"); + repr->addChild(content_repr, NULL); + style_elem->invoke_build(_doc.get(), repr, false); + TS_ASSERT( style_elem->is_css ); + TS_ASSERT( _doc->style_cascade ); + CRStyleSheet const *const stylesheet = cr_cascade_get_sheet(_doc->style_cascade, ORIGIN_AUTHOR); + TS_ASSERT(stylesheet != NULL); + TS_ASSERT(stylesheet->statements != NULL); + + delete style_elem; + Inkscape::GC::release(repr); + } + +}; + + +#endif // SEEN_SP_STYLE_ELEM_TEST_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/cxxtests-to-migrate/test-helpers.h b/testfiles/src/cxxtests-to-migrate/test-helpers.h new file mode 100644 index 0000000..a6e49e5 --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/test-helpers.h @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * TODO: insert short description here + *//* + * Authors: see git history + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#ifndef SEEN_TEST_HELPERS_H +#define SEEN_TEST_HELPERS_H + + +#include <cxxtest/TestSuite.h> + +#include "document.h" +#include "inkscape.h" + + +// Dummy functions to keep linker happy +#if !defined(DUMMY_MAIN_TEST_CALLS_SEEN) +#define DUMMY_MAIN_TEST_CALLS_SEEN +int sp_main_gui (int, char const**) { return 0; } +int sp_main_console (int, char const**) { return 0; } +#endif // DUMMY_MAIN_TEST_CALLS_SEEN + +namespace Inkscape +{ + +template <class T> +T* createSuiteAndDocument( void (*fun)(T*&) ) +{ + T* suite = 0; + +#if !GLIB_CHECK_VERSION(2,36,0) + g_type_init(); +#endif + + Inkscape::GC::init(); + if ( !Inkscape::Application::exists() ) + { + // Create the global inkscape object. + Inkscape::Application::create(false); + } + + auto tmp = std::unique_ptr<SPDocument>(SPDocument::createNewDoc(NULL, TRUE, true)); + if ( tmp ) { + fun( suite ); + if ( suite ) + { + suite->_doc = std::move(tmp); + } + } + + return suite; +} + +} // namespace Inkscape + +#endif // SEEN_TEST_HELPERS_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/cxxtests-to-migrate/verbs-test.h b/testfiles/src/cxxtests-to-migrate/verbs-test.h new file mode 100644 index 0000000..b8fd299 --- /dev/null +++ b/testfiles/src/cxxtests-to-migrate/verbs-test.h @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * TODO: insert short description here + *//* + * Authors: see git history + * + * Copyright (C) 2016 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + + +#include <cxxtest/TestSuite.h> + +#include "verbs.h" + +class VerbsTest : public CxxTest::TestSuite +{ +public: + + class TestHook : public Inkscape::Verb { + public: + static int getInternalTableSize() { return _getBaseListSize(); } + + private: + TestHook(); + }; + + void testEnumLength() + { + TS_ASSERT_DIFFERS( 0, static_cast<int>(SP_VERB_LAST) ); + TS_ASSERT_EQUALS( static_cast<int>(SP_VERB_LAST) + 1, TestHook::getInternalTableSize() ); + } + + void testEnumFixed() + { + TS_ASSERT_EQUALS( 0, static_cast<int>(SP_VERB_INVALID) ); + TS_ASSERT_EQUALS( 1, static_cast<int>(SP_VERB_NONE) ); + + TS_ASSERT_DIFFERS( 0, static_cast<int>(SP_VERB_LAST) ); + TS_ASSERT_DIFFERS( 1, static_cast<int>(SP_VERB_LAST) ); + } + + void testFetch() + { + for ( int i = 0; i < static_cast<int>(SP_VERB_LAST); i++ ) + { + char tmp[16]; + snprintf( tmp, sizeof(tmp), "Verb# %d", i ); + tmp[sizeof(tmp)-1] = 0; + std::string descr(tmp); + + Inkscape::Verb* verb = Inkscape::Verb::get(i); + TSM_ASSERT( descr, verb ); + if ( verb ) + { + TSM_ASSERT_EQUALS( descr, verb->get_code(), static_cast<unsigned int>(i) ); + + if ( i != static_cast<int>(SP_VERB_INVALID) ) + { + TSM_ASSERT( descr, verb->get_id() ); + TSM_ASSERT( descr, verb->get_name() ); + + Inkscape::Verb* bounced = verb->getbyid( verb->get_id() ); + // TODO - put this back once verbs are fixed + //TSM_ASSERT( descr, bounced ); + if ( bounced ) + { + TSM_ASSERT_EQUALS( descr, bounced->get_code(), static_cast<unsigned int>(i) ); + } + else + { + TS_FAIL( std::string("Unable to getbyid() for ") + descr + std::string(" ID: '") + std::string(verb->get_id()) + std::string("'") ); + } + } + else + { + TSM_ASSERT( std::string("SP_VERB_INVALID"), !verb->get_id() ); + TSM_ASSERT( std::string("SP_VERB_INVALID"), !verb->get_name() ); + } + } + } + } + +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/dir-util-test.cpp b/testfiles/src/dir-util-test.cpp new file mode 100644 index 0000000..bac5e3c --- /dev/null +++ b/testfiles/src/dir-util-test.cpp @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Unit tests for dir utils. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" + +#include <glib.h> + +#include "io/dir-util.h" + +namespace { + + +TEST(DirUtilTest, Base) +{ + char const* cases[][3] = { +#if defined(WIN32) || defined(__WIN32__) + {"\\foo\\bar", "\\foo", "bar"}, + {"\\foo\\barney", "\\foo\\bar", "\\foo\\barney"}, + {"\\foo\\bar\\baz", "\\foo\\", "bar\\baz"}, + {"\\foo\\bar\\baz", "\\", "foo\\bar\\baz"}, + {"\\foo\\bar\\baz", "\\foo\\qux", "\\foo\\bar\\baz"}, +#else + {"/foo/bar", "/foo", "bar"}, + {"/foo/barney", "/foo/bar", "/foo/barney"}, + {"/foo/bar/baz", "/foo/", "bar/baz"}, + {"/foo/bar/baz", "/", "foo/bar/baz"}, + {"/foo/bar/baz", "/foo/qux", "/foo/bar/baz"}, +#endif + }; + + for (auto & i : cases) + { + if ( i[0] && i[1] ) { // std::string can't use null. + std::string result = sp_relative_path_from_path( i[0], i[1] ); + ASSERT_FALSE( result.empty() ); + if ( !result.empty() ) + { + ASSERT_EQ( std::string(i[2]), result ); + } + } + } +} + +} // namespace + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/src/drag-and-drop-svgz.cpp b/testfiles/src/drag-and-drop-svgz.cpp new file mode 100644 index 0000000..faa3e0f --- /dev/null +++ b/testfiles/src/drag-and-drop-svgz.cpp @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/** + * @file + * Test that svgz (= compressed SVG) import/drag-and-drop + * is working: https://gitlab.com/inkscape/inkscape/-/issues/906 . + * + */ +/* + * Authors: + * Shlomi Fish + * + * Copyright (C) 2020 Authors + */ + +#include "doc-per-case-test.h" +#include <glibmm.h> + +#include "extension/init.h" +#include "extension/db.h" +#include "extension/find_extension_by_mime.h" +#include "extension/internal/svgz.h" +#include "io/resource.h" +#include "path-prefix.h" +#include "preferences.h" + +#include "gtest/gtest.h" + +#include <iostream> +class SvgzImportTest : public DocPerCaseTest { + public: + void TestBody() override + { + Inkscape::Extension::init(); + ASSERT_TRUE(_doc != nullptr); + ASSERT_TRUE(_doc->getRoot() != nullptr); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/dialogs/import/ask_svg", true); + prefs->setBool("/options/onimport", true); + auto ext = Inkscape::Extension::find_by_mime("image/svg+xml-compressed"); + if (!ext) { + std::cerr << "SvgzImportTest: Failed to find mime type!" << std::endl; + } + ext->set_gui(true); + + using namespace Inkscape::IO::Resource; + auto fn = get_path_string(SYSTEM, EXAMPLES, "tiger.svgz"); + + auto imod = dynamic_cast<Inkscape::Extension::Input *>(ext); + auto svg_mod = (new Inkscape::Extension::Internal::Svg); + ASSERT_TRUE(svg_mod->open(imod, fn.c_str()) != nullptr); + } + ~SvgzImportTest() override {} +}; + +TEST_F(SvgzImportTest, Eq) +{ + SvgzImportTest foo; + foo.TestBody(); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/extract-uri-test.cpp b/testfiles/src/extract-uri-test.cpp new file mode 100644 index 0000000..acff966 --- /dev/null +++ b/testfiles/src/extract-uri-test.cpp @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test extract_uri + */ +/* + * Authors: + * Thomas Holder + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "extract-uri.h" +#include "gtest/gtest.h" + +TEST(ExtractUriTest, valid) +{ + ASSERT_EQ(extract_uri("url(#foo)"), "#foo"); + ASSERT_EQ(extract_uri("url( \t #foo \t )"), "#foo"); + ASSERT_EQ(extract_uri("url( '#foo' )"), "#foo"); + ASSERT_EQ(extract_uri("url('url(foo)')"), "url(foo)"); + ASSERT_EQ(extract_uri("url(\"foo(url)\")"), "foo(url)"); + ASSERT_EQ(extract_uri("url()bar"), ""); + ASSERT_EQ(extract_uri("url( )bar"), ""); + ASSERT_EQ(extract_uri("url(a b)"), "a b"); +} + +TEST(ExtractUriTest, legacy) +{ + ASSERT_EQ(extract_uri("url (foo)"), "foo"); +} + +TEST(ExtractUriTest, invalid) +{ + ASSERT_EQ(extract_uri("#foo"), ""); + ASSERT_EQ(extract_uri(" url(foo)"), ""); + ASSERT_EQ(extract_uri("url(#foo"), ""); + ASSERT_EQ(extract_uri("url('#foo'"), ""); + ASSERT_EQ(extract_uri("url('#foo)"), ""); + ASSERT_EQ(extract_uri("url #foo)"), ""); +} + +static char const *extract_end(char const *s) +{ + char const *end = nullptr; + extract_uri(s, &end); + return end; +} + +TEST(ExtractUriTest, endptr) +{ + ASSERT_STREQ(extract_end(""), nullptr); + ASSERT_STREQ(extract_end("url(invalid"), nullptr); + ASSERT_STREQ(extract_end("url('invalid)"), nullptr); + ASSERT_STREQ(extract_end("url(valid)"), ""); + ASSERT_STREQ(extract_end("url(valid)foo"), "foo"); + ASSERT_STREQ(extract_end("url('valid')bar"), "bar"); + ASSERT_STREQ(extract_end("url( 'valid' )bar"), "bar"); + ASSERT_STREQ(extract_end("url( valid ) bar "), " bar "); + ASSERT_STREQ(extract_end("url()bar"), "bar"); + ASSERT_STREQ(extract_end("url( )bar"), "bar"); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/lpe-test.cpp b/testfiles/src/lpe-test.cpp new file mode 100644 index 0000000..87d263f --- /dev/null +++ b/testfiles/src/lpe-test.cpp @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * LPE tests + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <testfiles/lpespaths-test.h> +#include <src/document.h> +#include <src/inkscape.h> +#include <src/live_effects/lpe-bool.h> +#include <src/object/sp-ellipse.h> +#include <src/object/sp-lpe-item.h> + +using namespace Inkscape; +using namespace Inkscape::LivePathEffect; + +class LPETest : public LPESPathsTest { +public: + void run() { + testDoc(svg); + } +}; + +// A) FILE BASED TESTS +// TEST_F(LPETest, Bool_multi_px_1_1) { run(); } +// TEST_F(LPETest, Bool_multi_mm_1_1) { run(); } +TEST_F(LPETest, AttachPath_0_92_5_mixed) { run(); } +TEST_F(LPETest, AttachPath_mm_1_0_2) { run(); } +TEST_F(LPETest, AttachPath_px_1_0_2) { run(); } +TEST_F(LPETest, BoundingBox_mixed_0_92_5) { run(); } +TEST_F(LPETest, BoundingBox_mm_1_0_2) { run(); } +TEST_F(LPETest, BoundingBox_px_1_0_2) { run(); } +TEST_F(LPETest, CloneOriginal_mixed_0_92_5) { run(); } +// linked item is broken in 1.0.2 because group cliboard items, use same version of 1.1 but resaved in 1.2 to get comapat in 1.0.1 or before the group clipboard is added +TEST_F(LPETest, CloneOriginal_boken_1_0_2) { run(); } +TEST_F(LPETest, CloneOriginal_mixed_px_1_1) { run(); } +TEST_F(LPETest, CloneOriginal_mixed_mm_1_1) { run(); } +TEST_F(LPETest, ConstructGrid_mixed_0_92_5) { run(); } +TEST_F(LPETest, ConstructGrid_mm_1_0_2) { run(); } +TEST_F(LPETest, ConstructGrid_px_1_0_2) { run(); } +TEST_F(LPETest, Transform2Points_path_0_92_5) { run(); } +TEST_F(LPETest, Transform2Points_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Transform2Points_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, VonCoch_path_0_92_5) { run(); } +TEST_F(LPETest, VonCoch_multi_px_1_0_2) { run(); } +TEST_F(LPETest, VonCoch_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, StitchSubPaths_path_0_92_5) { run(); } +TEST_F(LPETest, StitchSubPaths_multi_px_1_0_2) { run(); } +TEST_F(LPETest, StitchSubPaths_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Spiro_mixed_0_92_5) { run(); } +TEST_F(LPETest, Spiro_mm_1_0_2) { run(); } +TEST_F(LPETest, Spiro_px_1_0_2) { run(); } +TEST_F(LPETest, Slice_multi_px_1_1) { run(); } +TEST_F(LPETest, Slice_multi_mm_1_1) { run(); } +TEST_F(LPETest, Simplify_path_0_92_5) { run(); } +TEST_F(LPETest, Simplify_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Simplify_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, ShowHandles_path_0_92_5) { run(); } +TEST_F(LPETest, ShowHandles_multi_px_1_0_2) { run(); } +TEST_F(LPETest, ShowHandles_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Ruler_path_0_92_5) { run(); } +TEST_F(LPETest, Ruler_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Ruler_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, RoughHatches_path_0_92_5) { run(); } +TEST_F(LPETest, RoughHatches_multi_px_1_0_2) { run(); } +TEST_F(LPETest, RoughHatches_multi_mm_1_0_2) { run(); } +// Rougen Test till 1.1 fail because wrong implementation of rand on the LPE +TEST_F(LPETest, Roughen_path_1_1) { run(); } +TEST_F(LPETest, EllipseFromPoints_multi_px_1_0_2) { run(); } +TEST_F(LPETest, EllipseFromPoints_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, PowerMask_multi_px_1_0_2) { run(); } +TEST_F(LPETest, PowerMask_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, PowerClip_multi_px_1_0_2) { run(); } +TEST_F(LPETest, PowerClip_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, PerspectiveEnvelope_mixed_0_92_5) { run(); } +TEST_F(LPETest, PerspectiveEnvelope_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, PerspectiveEnvelope_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Offset_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Offset_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Offset_multi_px_1_1) { run(); } +TEST_F(LPETest, MirrorSymmetry_path_0_92_5) { run(); } +TEST_F(LPETest, MirrorSymmetry_multi_px_1_0_2) { run(); } +TEST_F(LPETest, MirrorSymmetry_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, MeasureSegments_multi_px_1_0_2) { run(); } +TEST_F(LPETest, MeasureSegments_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Lattice2_path_0_92_5) { run(); } +TEST_F(LPETest, Lattice2_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Lattice2_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Knot_path_0_92_5) { run(); } +TEST_F(LPETest, Knot_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Knot_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, JoinType_multi_px_1_0_2) { run(); } +TEST_F(LPETest, JoinType_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Interpolate_path_0_92_5) { run(); } +TEST_F(LPETest, Interpolate_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Interpolate_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, InterpolatePoints_path_0_92_5) { run(); } +TEST_F(LPETest, InterpolatePoints_multi_px_1_0_2) { run(); } +TEST_F(LPETest, InterpolatePoints_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Gears_path_0_92_5) { run(); } +TEST_F(LPETest, Gears_multi_px_1_0_2) { run(); } +TEST_F(LPETest, Gears_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, FilletChamfer_multi_px_1_0_2) { run(); } +TEST_F(LPETest, FilletChamfer_multi_mm_1_0_2) { run(); } +// NEED to test on 0.92 no working one here (gnome 40) +// TEST_F(LPETest, FillBetweenStrokes_path_0_92_5) { run(); } +TEST_F(LPETest, FillBetweenStrokes_path_multi_px_1_0_2) { run(); } +TEST_F(LPETest, FillBetweenStrokes_path_multi_mm_1_0_2) { run(); } +// NEED to test on 0.92 no working one here (gnome 40) +// TEST_F(LPETest, FillBetweenMany_multi_0_92_5) { run(); } +TEST_F(LPETest, FillBetweenMany_multi_px_1_0_2) { run(); } +TEST_F(LPETest, FillBetweenMany_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, Ellipse5pts_path_0_92_5) { run(); } +TEST_F(LPETest, Ellipse5pts_ellipse_px_1_0_2) { run(); } +TEST_F(LPETest, Ellipse5pts_ellipse_mm_1_0_2) { run(); } +TEST_F(LPETest, DashedStroke_multi_px_1_0_2) { run(); } +TEST_F(LPETest, DashedStroke_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, RotateCopies_multi_mm_1_0_2) { run(); } +TEST_F(LPETest, RotateCopies_multi_px_1_0_2) { run(); } +// B) CUSTOM TESTS +// BOOL LPE +TEST_F(LPETest, Bool_canBeApplyedToNonSiblingPaths) +{ + std::string svg("\ +<svg width='100' height='100'\ + xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'\ + xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>\ + <defs>\ + <inkscape:path-effect\ + id='path-effect1'\ + effect='bool_op'\ + operation='diff'\ + operand-path='#circle1'\ + lpeversion='1'\ + hide-linked='true' />\ + </defs>\ + <path id='rect1'\ + inkscape:path-effect='#path-effect1'\ + sodipodi:type='rect'\ + width='100' height='100' fill='#ff0000' />\ + <g id='group1'>\ + <circle id='circle1'\ + r='40' cy='50' cx='50' fill='#ffffff' style='display:inline'/>\ + </g>\ +</svg>"); + + SPDocument *doc = SPDocument::createNewDocFromMem(svg.c_str(), svg.size(), true); + doc->ensureUpToDate(); + + auto lpe_item = dynamic_cast<SPLPEItem *>(doc->getObjectById("rect1")); + ASSERT_TRUE(lpe_item != nullptr); + + auto lpe_bool_op_effect = dynamic_cast<LPEBool *>(lpe_item->getFirstPathEffectOfType(EffectType::BOOL_OP)); + ASSERT_TRUE(lpe_bool_op_effect != nullptr); + + auto operand_path = lpe_bool_op_effect->getParameter("operand-path")->param_getSVGValue(); + auto circle = dynamic_cast<SPGenericEllipse *>(doc->getObjectById(operand_path.substr(1))); + ASSERT_TRUE(circle != nullptr); +}
\ No newline at end of file diff --git a/testfiles/src/lpe64-test.cpp b/testfiles/src/lpe64-test.cpp new file mode 100644 index 0000000..91bf1c7 --- /dev/null +++ b/testfiles/src/lpe64-test.cpp @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * LPE 64B tests + * Because some issues rounding in 32B windows we move this tests only to 64B + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <testfiles/lpespaths-test.h> +#include <src/inkscape.h> + +using namespace Inkscape; +using namespace Inkscape::LivePathEffect; + +class LPE64Test : public LPESPathsTest { +public: + void run() { + testDoc(svg); + } +}; + + +// A) FILE BASED TESTS +TEST_F(LPE64Test, Bendpath_mixed_0_92_5) { run(); } +TEST_F(LPE64Test, Bendpath_shape_1_0_2) { run(); } +TEST_F(LPE64Test, Bendpath_shapeClipPath_1_0_2) { run(); } +TEST_F(LPE64Test, Bendpath_multiGroup_1_0_2) { run(); } +TEST_F(LPE64Test, Bendpath_stackNested_mm_1_0_2) { run(); } +TEST_F(LPE64Test, Bendpath_stackNested_px_1_0_2) { run(); } +TEST_F(LPE64Test, BSpline_mixed_0_92_5) { run(); } +TEST_F(LPE64Test, BSpline_mm_1_0_2) { run(); } +TEST_F(LPE64Test, BSpline_px_1_0_2) { run(); } +TEST_F(LPE64Test, TaperStroke_multi_px_1_0_2) { run(); } +TEST_F(LPE64Test, TaperStroke_multi_mm_1_0_2) { run(); } +TEST_F(LPE64Test, Sketch_path_0_92_5) { run(); } +TEST_F(LPE64Test, Sketch_multi_px_1_0_2) { run(); } +TEST_F(LPE64Test, Sketch_multi_mm_1_0_2) { run(); } +TEST_F(LPE64Test, PowerStroke_multi_mm_1_0_2) { run(); } +TEST_F(LPE64Test, PowerStroke_multi_px_1_0_2) { run(); } +TEST_F(LPE64Test, PatternAlongPath_mixed_0_92_5) { run(); } +TEST_F(LPE64Test, PatternAlongPath_shape_1_0_2) { run(); } +TEST_F(LPE64Test, PatternAlongPath_path_1_0_2) { run(); } +TEST_F(LPE64Test, PatternAlongPath_multiple_mm_1_0_2) { run(); } +TEST_F(LPE64Test, PatternAlongPath_multiple_px_1_0_2) { run(); } +TEST_F(LPE64Test, EnvelopeDeformation_multi_0_92_5) { run(); } +TEST_F(LPE64Test, EnvelopeDeformation_multi_px_1_0_2) { run(); } +TEST_F(LPE64Test, EnvelopeDeformation_multi_mm_1_0_2) { run(); } + +// B) CUSTOM TESTS
\ No newline at end of file diff --git a/testfiles/src/object-set-test.cpp b/testfiles/src/object-set-test.cpp new file mode 100644 index 0000000..2112937 --- /dev/null +++ b/testfiles/src/object-set-test.cpp @@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Multiindex container for selection + * + * Authors: + * Adrian Boguszewski + * + * Copyright (C) 2016 Adrian Boguszewski + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <gtest/gtest.h> +#include <doc-per-case-test.h> +#include <src/object/sp-factory.h> +#include <src/object/sp-marker.h> +#include <src/object/sp-rect.h> +#include <src/object/sp-path.h> +#include <src/object/sp-use.h> +#include <src/object/sp-root.h> +#include <src/object/object-set.h> +#include <xml/node.h> +#include <src/xml/text-node.h> +#include <src/xml/simple-document.h> +//#include <unistd.h> +#include <2geom/transforms.h> +using namespace Inkscape; +using namespace Inkscape::XML; + +class ObjectSetTest: public DocPerCaseTest { +public: + ObjectSetTest() { + auto *const _doc = this->_doc.get(); + N = _doc->getRoot()->children.size(); + + A = new SPObject(); + B = new SPObject(); + C = new SPObject(); + D = new SPObject(); + E = new SPObject(); + F = new SPObject(); + G = new SPObject(); + H = new SPObject(); + X = new SPObject(); + set = new ObjectSet(_doc); + set2 = new ObjectSet(_doc); + auto sd = _doc->getReprDoc(); + auto xt = new TextNode(Util::share_string("x"), sd); + auto ht = new TextNode(Util::share_string("h"), sd); + auto gt = new TextNode(Util::share_string("g"), sd); + auto ft = new TextNode(Util::share_string("f"), sd); + auto et = new TextNode(Util::share_string("e"), sd); + auto dt = new TextNode(Util::share_string("d"), sd); + auto ct = new TextNode(Util::share_string("c"), sd); + auto bt = new TextNode(Util::share_string("b"), sd); + auto at = new TextNode(Util::share_string("a"), sd); + X->invoke_build(_doc, xt, 0); + H->invoke_build(_doc, ht, 0); + G->invoke_build(_doc, gt, 0); + F->invoke_build(_doc, ft, 0); + E->invoke_build(_doc, et, 0); + D->invoke_build(_doc, dt, 0); + C->invoke_build(_doc, ct, 0); + B->invoke_build(_doc, bt, 0); + A->invoke_build(_doc, at, 0); + + //create 3 rects at root of document + Inkscape::XML::Node *repr = _doc->getReprDoc()->createElement("svg:rect"); + _doc->getRoot()->appendChild(repr); + r1.reset(dynamic_cast<SPRect*>(_doc->getObjectByRepr(repr))); + repr = _doc->getReprDoc()->createElement("svg:rect"); + _doc->getRoot()->appendChild(repr); + r2.reset(dynamic_cast<SPRect*>(_doc->getObjectByRepr(repr))); + repr = _doc->getReprDoc()->createElement("svg:rect"); + _doc->getRoot()->appendChild(repr); + r3.reset(dynamic_cast<SPRect*>(_doc->getObjectByRepr(repr))); + EXPECT_EQ(N + 3, _doc->getRoot()->children.size());// defs, namedview, and those three rects. + r1->x = r1->y = r2->x = r2->y = r3->x = r3->y = 0; + r1->width = r1->height = r2->width = r2->height = r3->width = r3->height = 10; + r1->set_shape(); + r2->set_shape(); + r3->set_shape(); + + } + ~ObjectSetTest() override { + delete set; + delete set2; + delete X; + delete H; + delete G; + delete F; + delete E; + delete D; + delete C; + delete B; + delete A; + } + SPObject* A; + SPObject* B; + SPObject* C; + SPObject* D; + SPObject* E; + SPObject* F; + SPObject* G; + SPObject* H; + SPObject* X; + std::unique_ptr<SPRect> r1; + std::unique_ptr<SPRect> r2; + std::unique_ptr<SPRect> r3; + ObjectSet* set; + ObjectSet* set2; + int N; //!< Number of root children in default document +}; + +#define SP_IS_CLONE(obj) (dynamic_cast<const SPUse*>(obj) != NULL) + +bool containsClone(ObjectSet* set) { + for (auto it : set->items()) { + if (SP_IS_CLONE(it)) { + return true; + } + if (SP_IS_GROUP(it)) { + ObjectSet tmp_set(set->document()); + std::vector<SPObject*> c = it->childList(false); + tmp_set.setList(c); + if (containsClone(&tmp_set)) { + return true; + } + } + } + return false; +} + +TEST_F(ObjectSetTest, Basics) { + EXPECT_EQ(0, set->size()); + set->add(A); + EXPECT_EQ(1, set->size()); + EXPECT_TRUE(set->includes(A)); + set->add(B); + set->add(C); + EXPECT_EQ(3, set->size()); + EXPECT_TRUE(set->includes(B)); + EXPECT_TRUE(set->includes(C)); + EXPECT_FALSE(set->includes(D)); + EXPECT_FALSE(set->includes(X)); + EXPECT_FALSE(set->includes(nullptr)); + set->remove(A); + EXPECT_EQ(2, set->size()); + EXPECT_FALSE(set->includes(A)); + set->clear(); + EXPECT_EQ(0, set->size()); + bool resultNull = set->add((SPObject*)nullptr); + EXPECT_FALSE(resultNull); + EXPECT_EQ(0, set->size()); + bool resultNull2 = set->remove(nullptr); + EXPECT_FALSE(resultNull2); +} + +TEST_F(ObjectSetTest, Advanced) { + set->add(A); + set->add(B); + set->add(C); + EXPECT_TRUE(set->includes(C)); + set->toggle(C); + EXPECT_EQ(2, set->size()); + EXPECT_FALSE(set->includes(C)); + set->toggle(D); + EXPECT_EQ(3, set->size()); + EXPECT_TRUE(set->includes(D)); + set->toggle(D); + EXPECT_EQ(2, set->size()); + EXPECT_FALSE(set->includes(D)); + EXPECT_EQ(nullptr, set->single()); + set->set(X); + EXPECT_EQ(1, set->size()); + EXPECT_TRUE(set->includes(X)); + EXPECT_EQ(X, set->single()); + EXPECT_FALSE(set->isEmpty()); + set->clear(); + EXPECT_TRUE(set->isEmpty()); + std::vector<SPObject*> list1 {A, B, C, D}; + std::vector<SPObject*> list2 {E, F}; + set->addList(list1); + EXPECT_EQ(4, set->size()); + set->addList(list2); + EXPECT_EQ(6, set->size()); + EXPECT_TRUE(set->includes(A)); + EXPECT_TRUE(set->includes(B)); + EXPECT_TRUE(set->includes(C)); + EXPECT_TRUE(set->includes(D)); + EXPECT_TRUE(set->includes(E)); + EXPECT_TRUE(set->includes(F)); + set->setList(list2); + EXPECT_EQ(2, set->size()); + EXPECT_TRUE(set->includes(E)); + EXPECT_TRUE(set->includes(F)); +} + +TEST_F(ObjectSetTest, Items) { + // cannot test smallestItem and largestItem functions due to too many dependencies + // uncomment if the problem is fixed + + SPRect* rect10x100 = &*r1; + rect10x100->x = rect10x100->x = 0; + rect10x100->width = 10; + rect10x100->height = 100; + rect10x100->set_shape(); + + SPRect* rect20x40 = &*r2; + rect20x40->x = rect20x40->x = 0; + rect20x40->width = 20; + rect20x40->height = 40; + rect20x40->set_shape(); + + SPRect* rect30x30 = &*r3; + rect30x30->x = rect30x30->x = 0; + rect30x30->width = 30; + rect30x30->height = 30; + rect30x30->set_shape(); + + + set->add(rect10x100); + EXPECT_EQ(rect10x100, set->singleItem()); + EXPECT_EQ(rect10x100->getRepr(), set->singleRepr()); + set->add(rect20x40); + EXPECT_EQ(nullptr, set->singleItem()); + EXPECT_EQ(nullptr, set->singleRepr()); + set->add(rect30x30); + EXPECT_EQ(3, set->size()); + EXPECT_EQ(rect10x100, set->smallestItem(ObjectSet::CompareSize::HORIZONTAL)); + EXPECT_EQ(rect30x30, set->smallestItem(ObjectSet::CompareSize::VERTICAL)); + EXPECT_EQ(rect20x40, set->smallestItem(ObjectSet::CompareSize::AREA)); + EXPECT_EQ(rect30x30, set->largestItem(ObjectSet::CompareSize::HORIZONTAL)); + EXPECT_EQ(rect10x100, set->largestItem(ObjectSet::CompareSize::VERTICAL)); + EXPECT_EQ(rect10x100, set->largestItem(ObjectSet::CompareSize::AREA)); +} + +TEST_F(ObjectSetTest, Ranges) { + std::vector<SPObject*> objs {A, D, B, E, C, F}; + set->add(objs.begin() + 1, objs.end() - 1); + EXPECT_EQ(4, set->size()); + auto it = set->objects().begin(); + EXPECT_EQ(D, *it++); + EXPECT_EQ(B, *it++); + EXPECT_EQ(E, *it++); + EXPECT_EQ(C, *it++); + EXPECT_EQ(set->objects().end(), it); + SPObject* rect1 = SPFactory::createObject("svg:rect"); + SPObject* rect2 = SPFactory::createObject("svg:rect"); + SPObject* rect3 = SPFactory::createObject("svg:rect"); + set->add(rect1); + set->add(rect2); + set->add(rect3); + EXPECT_EQ(7, set->size()); + auto xmlNode = set->xmlNodes().begin(); + EXPECT_EQ(3, boost::distance(set->xmlNodes())); + EXPECT_EQ(rect1->getRepr(), *xmlNode++); + EXPECT_EQ(rect2->getRepr(), *xmlNode++); + EXPECT_EQ(rect3->getRepr(), *xmlNode++); + EXPECT_EQ(set->xmlNodes().end(), xmlNode); + auto item = set->items().begin(); + EXPECT_EQ(3, boost::distance(set->items())); + EXPECT_EQ(rect1, *item++); + EXPECT_EQ(rect2, *item++); + EXPECT_EQ(rect3, *item++); + EXPECT_EQ(set->items().end(), item); +} + +TEST_F(ObjectSetTest, Autoremoving) { + set->add(A); + EXPECT_TRUE(set->includes(A)); + EXPECT_EQ(1, set->size()); + A->releaseReferences(); + EXPECT_EQ(0, set->size()); +} + +TEST_F(ObjectSetTest, BasicDescendants) { + A->attach(B, nullptr); + B->attach(C, nullptr); + A->attach(D, nullptr); + bool resultB = set->add(B); + bool resultB2 = set->add(B); + EXPECT_TRUE(resultB); + EXPECT_FALSE(resultB2); + EXPECT_TRUE(set->includes(B)); + bool resultC = set->add(C); + EXPECT_FALSE(resultC); + EXPECT_FALSE(set->includes(C)); + EXPECT_EQ(1, set->size()); + bool resultA = set->add(A); + EXPECT_TRUE(resultA); + EXPECT_EQ(1, set->size()); + EXPECT_TRUE(set->includes(A)); + EXPECT_FALSE(set->includes(B)); +} + +TEST_F(ObjectSetTest, AdvancedDescendants) { + A->attach(B, nullptr); + A->attach(C, nullptr); + A->attach(X, nullptr); + B->attach(D, nullptr); + B->attach(E, nullptr); + C->attach(F, nullptr); + C->attach(G, nullptr); + C->attach(H, nullptr); + set->add(A); + bool resultF = set->remove(F); + EXPECT_TRUE(resultF); + EXPECT_EQ(4, set->size()); + EXPECT_FALSE(set->includes(F)); + EXPECT_TRUE(set->includes(B)); + EXPECT_TRUE(set->includes(G)); + EXPECT_TRUE(set->includes(H)); + EXPECT_TRUE(set->includes(X)); + bool resultF2 = set->add(F); + EXPECT_TRUE(resultF2); + EXPECT_EQ(5, set->size()); + EXPECT_TRUE(set->includes(F)); +} + +TEST_F(ObjectSetTest, Removing) { + A->attach(B, nullptr); + A->attach(C, nullptr); + A->attach(X, nullptr); + B->attach(D, nullptr); + B->attach(E, nullptr); + C->attach(F, nullptr); + C->attach(G, nullptr); + C->attach(H, nullptr); + bool removeH = set->remove(H); + EXPECT_FALSE(removeH); + set->add(A); + bool removeX = set->remove(X); + EXPECT_TRUE(removeX); + EXPECT_EQ(2, set->size()); + EXPECT_TRUE(set->includes(B)); + EXPECT_TRUE(set->includes(C)); + EXPECT_FALSE(set->includes(X)); + EXPECT_FALSE(set->includes(A)); + bool removeX2 = set->remove(X); + EXPECT_FALSE(removeX2); + EXPECT_EQ(2, set->size()); + bool removeA = set->remove(A); + EXPECT_FALSE(removeA); + EXPECT_EQ(2, set->size()); + bool removeC = set->remove(C); + EXPECT_TRUE(removeC); + EXPECT_EQ(1, set->size()); + EXPECT_TRUE(set->includes(B)); + EXPECT_FALSE(set->includes(C)); +} + +TEST_F(ObjectSetTest, TwoSets) { + A->attach(B, nullptr); + A->attach(C, nullptr); + set->add(A); + set2->add(A); + EXPECT_EQ(1, set->size()); + EXPECT_EQ(1, set2->size()); + set->remove(B); + EXPECT_EQ(1, set->size()); + EXPECT_TRUE(set->includes(C)); + EXPECT_EQ(1, set2->size()); + EXPECT_TRUE(set2->includes(A)); + C->releaseReferences(); + EXPECT_EQ(0, set->size()); + EXPECT_EQ(1, set2->size()); + EXPECT_TRUE(set2->includes(A)); +} + +TEST_F(ObjectSetTest, SetRemoving) { + ObjectSet *objectSet = new ObjectSet(_doc.get()); + A->attach(B, nullptr); + objectSet->add(A); + objectSet->add(C); + EXPECT_EQ(2, objectSet->size()); + delete objectSet; + EXPECT_STREQ(nullptr, A->getId()); + EXPECT_STREQ(nullptr, C->getId()); +} + +TEST_F(ObjectSetTest, Delete) { + //we cannot use the same item as in other tests since it will be freed at the test destructor + + EXPECT_EQ(_doc->getRoot(), r1->parent); + set->add(r1.get()); + set->deleteItems(); + r1.release(); + EXPECT_EQ(0, set->size()); + //EXPECT_EQ(nullptr, r1->parent); +} + +TEST_F(ObjectSetTest, Ops) { + set->add(r1.get()); + set->add(r2.get()); + set->add(r3.get()); + set->duplicate(); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size());// defs, namedview, and those 3x2 rects. + EXPECT_EQ(3, set->size()); + EXPECT_FALSE(set->includes(r1.get())); + set->deleteItems(); + EXPECT_TRUE(set->isEmpty()); + set->add(r1.get()); + set->add(r2.get()); + set->add(r3.get()); + set->group();//r1-3 are now invalid (grouping makes copies) + r1.release(); + r2.release(); + r3.release(); + EXPECT_EQ(N + 1, _doc->getRoot()->children.size()); + EXPECT_EQ(1, set->size()); + set->ungroup(); + EXPECT_EQ(N + 3, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + /* Uncomment this when toNextLayer is made desktop-independent + set->group(); + set2->add(set->singleItem()->childList(false)[0]); + EXPECT_EQ(3, set->singleItem()->children.size()); + EXPECT_EQ(4, _doc->getRoot()->children.size()); + set2->popFromGroup(); + EXPECT_EQ(2, set->singleItem()->children.size()); + EXPECT_EQ(5, _doc->getRoot()->children.size()); + set->ungroup(); + set->add(set2->singleItem()); + */ + set->clone(); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_NE(nullptr,dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_EQ(nullptr,dynamic_cast<SPRect*>(*(set->items().begin()))); + set->unlink(); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_EQ(nullptr,dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_NE(nullptr,dynamic_cast<SPRect*>(*(set->items().begin()))); + set->clone(); //creates 3 clones + set->clone(); //creates 3 clones of clones + EXPECT_EQ(N + 12, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_NE(nullptr,dynamic_cast<SPUse*>( ((SPUse*)(*(set->items().begin())))->get_original()));//"original is a Use" + set->unlink(); //clone of clone of rect -> rect + EXPECT_EQ(nullptr,dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_NE(nullptr,dynamic_cast<SPRect*>(*(set->items().begin()))); + set->clone(); + set->set(*(set->items().begin())); + set->cloneOriginal();//get clone original + EXPECT_EQ(N + 15, _doc->getRoot()->children.size()); + EXPECT_EQ(1, set->size()); + EXPECT_NE(nullptr,dynamic_cast<SPRect*>(*(set->items().begin()))); + //let's stop here. + // TODO: write a hundred more tests to check clone (non-)displacement when grouping, ungrouping and unlinking... + TearDownTestCase(); + SetUpTestCase(); +} + +TEST_F(ObjectSetTest, unlinkRecursiveBasic) { + // This is the same as the test (ObjectSetTest, Ops), but with unlinkRecursive instead of unlink. + set->set(r1.get()); + set->add(r2.get()); + set->add(r3.get()); + EXPECT_FALSE(containsClone(set)); + set->duplicate(); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size());// defs, namedview, and those 3x2 rects. + EXPECT_EQ(3, set->size()); + EXPECT_FALSE(set->includes(r1.get())); + set->deleteItems(); + EXPECT_FALSE(containsClone(set)); + EXPECT_TRUE(set->isEmpty()); + set->add(r1.get()); + set->add(r2.get()); + set->add(r3.get()); + EXPECT_FALSE(containsClone(set)); + set->group();//r1-3 are now invalid (grouping makes copies) + r1.release(); + r2.release(); + r3.release(); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(N + 1, _doc->getRoot()->children.size()); + EXPECT_EQ(1, set->size()); + set->ungroup(); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(N + 3, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + /* Uncomment this when toNextLayer is made desktop-independent + set->group(); + set2->add(set->singleItem()->childList(false)[0]); + EXPECT_EQ(3, set->singleItem()->children.size()); + EXPECT_EQ(4, _doc->getRoot()->children.size()); + set2->popFromGroup(); + EXPECT_EQ(2, set->singleItem()->children.size()); + EXPECT_EQ(5, _doc->getRoot()->children.size()); + set->ungroup(); + set->add(set2->singleItem()); + */ + set->clone(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_NE(nullptr, dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_EQ(nullptr, dynamic_cast<SPRect*>(*(set->items().begin()))); + set->unlinkRecursive(false, true); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(N + 6, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_EQ(nullptr, dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_NE(nullptr, dynamic_cast<SPRect*>(*(set->items().begin()))); + set->clone(); //creates 3 clones + EXPECT_TRUE(containsClone(set)); + set->clone(); //creates 3 clones of clones + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(N + 12, _doc->getRoot()->children.size()); + EXPECT_EQ(3, set->size()); + EXPECT_NE(nullptr, dynamic_cast<SPUse*>( ((SPUse*)(*(set->items().begin())))->get_original()));//"original is a Use" + set->unlinkRecursive(false, true); //clone of clone of rect -> rect + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(nullptr, dynamic_cast<SPUse*>(*(set->items().begin()))); + EXPECT_NE(nullptr, dynamic_cast<SPRect*>(*(set->items().begin()))); + set->clone(); + EXPECT_TRUE(containsClone(set)); + set->set(*(set->items().begin())); + set->cloneOriginal();//get clone original + EXPECT_EQ(N + 15, _doc->getRoot()->children.size()); + EXPECT_EQ(1, set->size()); + EXPECT_NE(nullptr, dynamic_cast<SPRect*>(*(set->items().begin()))); + TearDownTestCase(); + SetUpTestCase(); +} + +TEST_F(ObjectSetTest, unlinkRecursiveAdvanced) { + set->set(r1.get()); + set->add(r2.get()); + set->add(r3.get()); + set->group();//r1-3 are now invalid (grouping makes copies) + r1.release(); + r2.release(); + r3.release(); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(1, set->size()); + SPItem* original = set->singleItem(); + set->clone(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(1, set->size()); + set->add(original); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(2, set->size()); + set->group(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(1, set->size()); + original = set->singleItem(); + set->clone(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(1, set->size()); + set->add(original); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(2, set->size()); + set->group(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(1, set->size()); + original = set->singleItem(); + set->clone(); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(1, set->size()); + set->add(original); + EXPECT_TRUE(containsClone(set)); + EXPECT_EQ(2, set->size()); + set->unlinkRecursive(false, true); + EXPECT_FALSE(containsClone(set)); + EXPECT_EQ(2, set->size()); + + TearDownTestCase(); + SetUpTestCase(); +} + +TEST_F(ObjectSetTest, ZOrder) { + //sp_object_compare_position_bool == true iff "r1<r2" iff r1 is "before" r2 in the file, ie r1 is lower than r2 + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r2.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r2.get(),r3.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r3.get())); + EXPECT_FALSE(sp_object_compare_position_bool(r2.get(),r1.get())); + EXPECT_FALSE(sp_object_compare_position_bool(r3.get(),r1.get())); + EXPECT_FALSE(sp_object_compare_position_bool(r3.get(),r2.get())); + //1 2 3 + set->set(r2.get()); + set->raise(); + //1 3 2 + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r3.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r3.get(),r2.get()));//! + set->set(r3.get()); + set->lower(); + //3 1 2 + EXPECT_TRUE(sp_object_compare_position_bool(r3.get(),r1.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r2.get())); + set->raiseToTop(); + //1 2 3 + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r2.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r2.get(),r3.get())); + set->lowerToBottom(); + //3 1 2 + EXPECT_TRUE(sp_object_compare_position_bool(r3.get(),r1.get())); + EXPECT_TRUE(sp_object_compare_position_bool(r1.get(),r2.get())); +} + +TEST_F(ObjectSetTest, Combine) { + set->add(r1.get()); + set->add(r2.get()); + set->combine(); + r1.release(); + r2.release(); + EXPECT_EQ(1, set->size()); + EXPECT_EQ(N + 2, _doc->getRoot()->children.size()); + set->breakApart(); + EXPECT_EQ(2, set->size()); + EXPECT_EQ(N + 3, _doc->getRoot()->children.size()); + set->deleteItems(); + set->set(r3.get()); + set->toCurves(); + r3.release(); + auto x = set->singleItem(); + EXPECT_NE(nullptr,dynamic_cast<SPPath*>(x)); + EXPECT_EQ(nullptr,dynamic_cast<SPRect*>(x)); + set->deleteItems(); +} + +TEST_F(ObjectSetTest, Moves) { + set->add(r1.get()); + set->moveRelative(15,15); + EXPECT_EQ(15,r1->x.value); + Geom::Point p(20,20); + Geom::Scale s(2); + set->setScaleRelative(p,s); + EXPECT_EQ(10,r1->x.value); + EXPECT_EQ(20,r1->width.value); + set->toCurves(); + r1.release(); + auto x = set->singleItem(); + EXPECT_EQ(20,(*(x->documentVisualBounds()))[0].extent()); + set->rotate90(true); + set->rotate90(true); + EXPECT_EQ(20,(*(x->documentVisualBounds()))[0].extent()); + set->deleteItems(); +} + +TEST_F(ObjectSetTest, toMarker) { + r1->x = 12; + r1->y = 34; + r1->width = 56; + r1->height = 78; + r1->set_shape(); + r1->updateRepr(); + + r2->x = 6; + r2->y = 7; + r2->width = 8; + r2->height = 9; + r2->set_shape(); + r2->updateRepr(); + + r3->x = 10; + r3->y = 10; + r3->width = 10; + r3->height = 10; + r3->set_shape(); + r3->updateRepr(); + + // add rects to set in different order than they appear in the document, + // to verify selection order independence. + set->set(r1.get()); + set->add(r3.get()); + set->add(r2.get()); + set->toMarker(); + + // original items got deleted + r1.release(); + r2.release(); + r3.release(); + + auto markers = _doc->getObjectsByElement("marker"); + ASSERT_EQ(markers.size(), 1); + + auto marker = dynamic_cast<SPMarker *>(markers[0]); + ASSERT_NE(marker, nullptr); + + EXPECT_FLOAT_EQ(marker->refX.computed, 31); + EXPECT_FLOAT_EQ(marker->refY.computed, 52.5); + EXPECT_FLOAT_EQ(marker->markerWidth.computed, 62); + EXPECT_FLOAT_EQ(marker->markerHeight.computed, 105); + + auto markerchildren = marker->childList(false); + ASSERT_EQ(markerchildren.size(), 3); + + auto *markerrect1 = dynamic_cast<SPRect *>(markerchildren[0]); + auto *markerrect2 = dynamic_cast<SPRect *>(markerchildren[1]); + + ASSERT_NE(markerrect1, nullptr); + ASSERT_NE(markerrect2, nullptr); + + EXPECT_FLOAT_EQ(markerrect1->x.value, 6); + EXPECT_FLOAT_EQ(markerrect1->y.value, 27); + EXPECT_FLOAT_EQ(markerrect1->width.value, 56); + EXPECT_FLOAT_EQ(markerrect1->height.value, 78); + + EXPECT_FLOAT_EQ(markerrect2->x.value, 0); + EXPECT_FLOAT_EQ(markerrect2->y.value, 0); + EXPECT_FLOAT_EQ(markerrect2->width.value, 8); + EXPECT_FLOAT_EQ(markerrect2->height.value, 9); +} diff --git a/testfiles/src/object-style-test.cpp b/testfiles/src/object-style-test.cpp new file mode 100644 index 0000000..ff2118b --- /dev/null +++ b/testfiles/src/object-style-test.cpp @@ -0,0 +1,199 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Combination style and object testing for cascading and flags. + *//* + * + * Authors: + * Martin Owens + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <doc-per-case-test.h> + +#include <src/style.h> +#include <src/object/sp-root.h> +#include <src/object/sp-rect.h> + +using namespace Inkscape; +using namespace Inkscape::XML; + +class ObjectTest: public DocPerCaseTest { +public: + ObjectTest() { + char const *docString = "\ +<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>\ +<style>\ +rect { fill: #808080; opacity:0.5; }\ +.extra { opacity:1.0; }\ +.overload { fill: #d0d0d0 !important; stroke: #c0c0c0 !important; }\ +.font { font: italic bold 12px/30px Georgia, serif; }\ +.exsize { stroke-width: 1ex; }\ +.fosize { font-size: 15px; }\ +</style>\ +<g style='fill:blue; stroke-width:2px;font-size: 14px;'>\ + <rect id='one' style='fill:red; stroke:green;'/>\ + <rect id='two' style='stroke:green; stroke-width:4px;'/>\ + <rect id='three' class='extra' style='fill: #cccccc;'/>\ + <rect id='four' class='overload' style='fill:green;stroke:red !important;'/>\ + <rect id='five' class='font' style='font: 15px arial, sans-serif;'/>/\ + <rect id='six' style='stroke-width:1em;'/>\ + <rect id='seven' class='exsize'/>\ + <rect id='eight' class='fosize' style='stroke-width: 50%;'/>\ +</g>\ +</svg>"; + doc.reset(SPDocument::createNewDocFromMem(docString, static_cast<int>(strlen(docString)), false)); + doc->ensureUpToDate(); + } + + ~ObjectTest() override = default; + + std::unique_ptr<SPDocument> doc; +}; + +/* + * Test basic cascade values, that they are set correctly as we'd want to see them. + */ +TEST_F(ObjectTest, Styles) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPRect *one = dynamic_cast<SPRect *>(doc->getObjectById("one")); + ASSERT_TRUE(one != nullptr); + + // TODO: Fix when Inkscape preserves colour names (i.e. 'red') + EXPECT_EQ(one->style->fill.get_value(), Glib::ustring("#ff0000")); + EXPECT_EQ(one->style->stroke.get_value(), Glib::ustring("#008000")); + EXPECT_EQ(one->style->opacity.get_value(), Glib::ustring("0.5")); + EXPECT_EQ(one->style->stroke_width.get_value(), Glib::ustring("2px")); + + SPRect *two = dynamic_cast<SPRect *>(doc->getObjectById("two")); + ASSERT_TRUE(two != nullptr); + + EXPECT_EQ(two->style->fill.get_value(), Glib::ustring("#808080")); + EXPECT_EQ(two->style->stroke.get_value(), Glib::ustring("#008000")); + EXPECT_EQ(two->style->opacity.get_value(), Glib::ustring("0.5")); + EXPECT_EQ(two->style->stroke_width.get_value(), Glib::ustring("4px")); + + SPRect *three = dynamic_cast<SPRect *>(doc->getObjectById("three")); + ASSERT_TRUE(three != nullptr); + + EXPECT_EQ(three->style->fill.get_value(), Glib::ustring("#cccccc")); + EXPECT_EQ(three->style->stroke.get_value(), Glib::ustring("")); + EXPECT_EQ(three->style->opacity.get_value(), Glib::ustring("1")); + EXPECT_EQ(three->style->stroke_width.get_value(), Glib::ustring("2px")); + + SPRect *four = dynamic_cast<SPRect *>(doc->getObjectById("four")); + ASSERT_TRUE(four != nullptr); + + EXPECT_EQ(four->style->fill.get_value(), Glib::ustring("#d0d0d0")); + EXPECT_EQ(four->style->stroke.get_value(), Glib::ustring("#ff0000")); + EXPECT_EQ(four->style->opacity.get_value(), Glib::ustring("0.5")); + EXPECT_EQ(four->style->stroke_width.get_value(), Glib::ustring("2px")); +} + +/* + * Test the origin flag for each of the values, should indicate where it came from. + */ +TEST_F(ObjectTest, StyleSource) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPRect *one = dynamic_cast<SPRect *>(doc->getObjectById("one")); + ASSERT_TRUE(one != nullptr); + + EXPECT_EQ(one->style->fill.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(one->style->stroke.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(one->style->opacity.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(one->style->stroke_width.style_src, SPStyleSrc::STYLE_PROP); + + SPRect *two = dynamic_cast<SPRect *>(doc->getObjectById("two")); + ASSERT_TRUE(two != nullptr); + + EXPECT_EQ(two->style->fill.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(two->style->stroke.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(two->style->opacity.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(two->style->stroke_width.style_src, SPStyleSrc::STYLE_PROP); + + SPRect *three = dynamic_cast<SPRect *>(doc->getObjectById("three")); + ASSERT_TRUE(three != nullptr); + + EXPECT_EQ(three->style->fill.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(three->style->stroke.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(three->style->opacity.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(three->style->stroke_width.style_src, SPStyleSrc::STYLE_PROP); + + SPRect *four = dynamic_cast<SPRect *>(doc->getObjectById("four")); + ASSERT_TRUE(four != nullptr); + + EXPECT_EQ(four->style->fill.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(four->style->stroke.style_src, SPStyleSrc::STYLE_PROP); + EXPECT_EQ(four->style->opacity.style_src, SPStyleSrc::STYLE_SHEET); + EXPECT_EQ(four->style->stroke_width.style_src, SPStyleSrc::STYLE_PROP); +} + +/* + * Test the breaking up of the font property and recreation into separate properties. + */ +TEST_F(ObjectTest, StyleFont) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPRect *five = dynamic_cast<SPRect *>(doc->getObjectById("five")); + ASSERT_TRUE(five != nullptr); + + // Font property is ALWAYS unset as it's converted into specific font css properties + EXPECT_EQ(five->style->font.get_value(), Glib::ustring("")); + EXPECT_EQ(five->style->font_size.get_value(), Glib::ustring("12px")); + EXPECT_EQ(five->style->font_weight.get_value(), Glib::ustring("bold")); + EXPECT_EQ(five->style->font_style.get_value(), Glib::ustring("italic")); + EXPECT_EQ(five->style->font_family.get_value(), Glib::ustring("arial, sans-serif")); +} + +/* + * Test the consumption of font dependent lengths in SPILength, e.g. EM, EX and % units + */ +TEST_F(ObjectTest, StyleFontSizes) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPRect *six = dynamic_cast<SPRect *>(doc->getObjectById("six")); + ASSERT_TRUE(six != nullptr); + + EXPECT_EQ(six->style->stroke_width.get_value(), Glib::ustring("1em")); + EXPECT_EQ(six->style->stroke_width.computed, 14); + + SPRect *seven = dynamic_cast<SPRect *>(doc->getObjectById("seven")); + ASSERT_TRUE(seven != nullptr); + + EXPECT_EQ(seven->style->stroke_width.get_value(), Glib::ustring("1ex")); + EXPECT_EQ(seven->style->stroke_width.computed, 7); + + SPRect *eight = dynamic_cast<SPRect *>(doc->getObjectById("eight")); + ASSERT_TRUE(eight != nullptr); + + EXPECT_EQ(eight->style->stroke_width.get_value(), Glib::ustring("50%")); + + // stroke-width in percent is relative to viewport size, which is 300x150 in this example. + // 50% is 118.59 == ((300^2 + 150^2) / 2)^0.5 * 0.5 + EXPECT_FLOAT_EQ(eight->style->stroke_width.computed, 118.58541); +} diff --git a/testfiles/src/object-test.cpp b/testfiles/src/object-test.cpp new file mode 100644 index 0000000..ded67f1 --- /dev/null +++ b/testfiles/src/object-test.cpp @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Unit tests migrated from cxxtest + * + * Authors: + * Adrian Boguszewski + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <gtest/gtest.h> +#include <doc-per-case-test.h> +#include <src/object/sp-root.h> +#include <src/object/sp-path.h> + +using namespace Inkscape; +using namespace Inkscape::XML; + +class ObjectTest: public DocPerCaseTest { +public: + ObjectTest() { + // Sample document + // svg:svg + // svg:defs + // svg:path + // svg:linearGradient + // svg:stop + // svg:filter + // svg:feGaussianBlur (feel free to implement for other filters) + // svg:clipPath + // svg:rect + // svg:g + // svg:use + // svg:circle + // svg:ellipse + // svg:text + // svg:polygon + // svg:polyline + // svg:image + // svg:line + char const *docString = R"A( +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- just a comment --> + <title id="title">SVG test</title> + <defs> + <path id="P" d="M -21,-4 -5,0 -18,12 -3,4 -4,21 0,5 12,17 4,2 21,3 5,-1 17,-12 2,-4 3,-21 -1,-5 -12,-18 -4,-3z"/> + <linearGradient id="LG" x1="0%" y1="0%" x2="100%" y2="0%"> + <stop offset="0%" style="stop-color:#ffff00;stop-opacity:1"/> + <stop offset="100%" style="stop-color:red;stop-opacity:1"/> + </linearGradient> + <clipPath id="clip" clipPathUnits="userSpaceOnUse"> + <rect x="10" y="10" width="100" height="100"/> + </clipPath> + <filter style="color-interpolation-filters:sRGB" id="filter" x="-0.15" width="1.34" y="0" height="1"> + <feGaussianBlur stdDeviation="4.26"/> + </filter> + </defs> + + <g id="G" transform="skewX(10.5) translate(9,5)"> + <use id="U" xlink:href="#P" opacity="0.5" fill="#1dace3" transform="rotate(4)"/> + <circle id="C" cx="45.5" cy="67" r="23" fill="#000"/> + <ellipse id="E" cx="200" cy="70" rx="85" ry="55" fill="url(#LG)"/> + <text id="T" fill="#fff" style="font-size:45;font-family:Verdana" x="150" y="86">TEST</text> + <polygon id="PG" points="60,20 100,40 100,80 60,100 20,80 20,40" clip-path="url(#clip)" filter="url(#filter)"/> + <polyline id="PL" points="0,40 40,40 40,80 80,80 80,120 120,120 120,160" style="fill:none;stroke:red;stroke-width:4"/> + <image id="I" xlink:href="data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4MCIgd2lkdGg9IjUwMCI+PHBhdGggZD0iTTAsNDAgNDAsNDAgNDAsODAgODAsODAgODAsMTIwIDEyMCwxMjAgMTIwLDE2MCIgc3R5bGU9ImZpbGw6d2hpdGU7c3Ryb2tlOnJlZDtzdHJva2Utd2lkdGg6NCIvPjwvc3ZnPgo="/> + <line id="L" x1="20" y1="100" x2="100" y2="20" stroke="black" stroke-width="2"/> + </g> +</svg> + )A"; + doc.reset(SPDocument::createNewDocFromMem(docString, static_cast<int>(strlen(docString)), false)); + } + + ~ObjectTest() override = default; + + std::unique_ptr<SPDocument> doc; +}; + +TEST_F(ObjectTest, Clones) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPPath *path = dynamic_cast<SPPath *>(doc->getObjectById("P")); + ASSERT_TRUE(path != nullptr); + + Node *node = path->getRepr(); + ASSERT_TRUE(node != nullptr); + + Document *xml_doc = node->document(); + ASSERT_TRUE(xml_doc != nullptr); + + Node *parent = node->parent(); + ASSERT_TRUE(parent != nullptr); + + const size_t num_clones = 1000; + std::string href = std::string("#") + std::string(path->getId()); + std::vector<Node *> clones(num_clones, nullptr); + + // Create num_clones clones of this path and stick them in the document + for (size_t i = 0; i < num_clones; ++i) { + Node *clone = xml_doc->createElement("svg:use"); + Inkscape::GC::release(clone); + clone->setAttribute("xlink:href", href); + parent->addChild(clone, node); + clones[i] = clone; + } + + // Remove those clones + for (size_t i = 0; i < num_clones; ++i) { + parent->removeChild(clones[i]); + } +} + +TEST_F(ObjectTest, Grouping) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPGroup *group = dynamic_cast<SPGroup *>(doc->getObjectById("G")); + + ASSERT_TRUE(group != nullptr); + + Node *node = group->getRepr(); + ASSERT_TRUE(node != nullptr); + + Document *xml_doc = node->document(); + ASSERT_TRUE(xml_doc != nullptr); + + const size_t num_elements = 1000; + + Node *new_group = xml_doc->createElement("svg:g"); + Inkscape::GC::release(new_group); + node->addChild(new_group, nullptr); + + std::vector<Node *> elements(num_elements, nullptr); + + for (size_t i = 0; i < num_elements; ++i) { + Node *circle = xml_doc->createElement("svg:circle"); + Inkscape::GC::release(circle); + circle->setAttribute("cx", "2048"); + circle->setAttribute("cy", "1024"); + circle->setAttribute("r", "1.5"); + new_group->addChild(circle, nullptr); + elements[i] = circle; + } + + SPGroup *n_group = dynamic_cast<SPGroup *>(group->get_child_by_repr(new_group)); + ASSERT_TRUE(n_group != nullptr); + + std::vector<SPItem*> ch; + sp_item_group_ungroup(n_group, ch, false); + + // Remove those elements + for (size_t i = 0; i < num_elements; ++i) { + elements[i]->parent()->removeChild(elements[i]); + } + +} + +TEST_F(ObjectTest, Objects) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + ASSERT_TRUE(root->hasChildren()); + + SPPath *path = dynamic_cast<SPPath *>(doc->getObjectById("P")); + ASSERT_TRUE(path != nullptr); + + // Test parent behavior + SPObject *child = root->firstChild(); + ASSERT_TRUE(child != nullptr); + + EXPECT_EQ(root, child->parent); + EXPECT_EQ(doc.get(), child->document); + EXPECT_TRUE(root->isAncestorOf(child)); + + // Test list behavior + SPObject *next = child->getNext(); + SPObject *prev = next; + EXPECT_EQ(child, next->getPrev()); + + prev = next; + next = next->getNext(); + while (next != nullptr) { + // Walk the list + EXPECT_EQ(prev, next->getPrev()); + prev = next; + next = next->getNext(); + } + + // Test hrefcount + EXPECT_TRUE(path->isReferenced()); +} diff --git a/testfiles/src/path-boolop-test.cpp b/testfiles/src/path-boolop-test.cpp new file mode 100644 index 0000000..cc71856 --- /dev/null +++ b/testfiles/src/path-boolop-test.cpp @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include <gtest/gtest.h> +#include <src/path/path-boolop.h> +#include <src/svg/svg.h> +#include <2geom/svg-path-writer.h> + +class PathBoolopTest : public ::testing::Test +{ + public: + std::string rectangle_bigger = "M 0,0 L 0,2 L 2,2 L 2,0 z"; + std::string rectangle_smaller = "M 0.5,0.5 L 0.5,1.5 L 1.5,1.5 L 1.5,0.5 z"; + std::string rectangle_outside = "M 0,1.5 L 0.5,1.5 L 0.5,2.5 L 0,2.5 z"; + std::string rectangle_outside_union = "M 0,0 L 0,1.5 L 0,2 L 0,2.5 L 0.5,2.5 L 0.5,2 L 2,2 L 2,0 L 0,0 z"; + Geom::PathVector pvRectangleBigger; + Geom::PathVector pvRectangleSmaller; + Geom::PathVector pvRectangleOutside; + Geom::PathVector pvTargetUnion; + Geom::PathVector pvEmpty; + PathBoolopTest() { + pvRectangleBigger = sp_svg_read_pathv(rectangle_bigger.c_str()); + pvRectangleSmaller = sp_svg_read_pathv(rectangle_smaller.c_str()); + pvRectangleOutside = sp_svg_read_pathv(rectangle_outside.c_str()); + pvTargetUnion = sp_svg_read_pathv(rectangle_outside_union.c_str()); + pvEmpty = sp_svg_read_pathv(""); + } + void comparePaths(Geom::PathVector result, Geom::PathVector target){ + Geom::SVGPathWriter wr; + wr.feed(result); + std::string resultD = wr.str(); + wr.clear(); + wr.feed(target); + std::string targetD = wr.str(); + EXPECT_EQ(resultD, targetD); + EXPECT_EQ(result, target); + } +}; + +TEST_F(PathBoolopTest, UnionOutside){ + // test that the union of two objects where one is outside the other results in a new larger shape + Geom::PathVector pvRectangleUnion = sp_pathvector_boolop(pvRectangleBigger, pvRectangleOutside, bool_op_union, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleUnion, pvTargetUnion); +} + +TEST_F(PathBoolopTest, UnionOutsideSwap){ + // test that the union of two objects where one is outside the other results in a new larger shape, even when the order is reversed + Geom::PathVector pvRectangleUnion = sp_pathvector_boolop(pvRectangleOutside, pvRectangleBigger, bool_op_union, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleUnion, pvTargetUnion); +} + +TEST_F(PathBoolopTest, UnionInside){ + // test that the union of two objects where one is completely inside the other is the larger shape + Geom::PathVector pvRectangleUnion = sp_pathvector_boolop(pvRectangleBigger, pvRectangleSmaller, bool_op_union, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleUnion, pvRectangleBigger); +} + +TEST_F(PathBoolopTest, UnionInsideSwap){ + // test that the union of two objects where one is completely inside the other is the larger shape, even when the order is swapped + Geom::PathVector pvRectangleUnion = sp_pathvector_boolop(pvRectangleSmaller, pvRectangleBigger, bool_op_union, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleUnion, pvRectangleBigger); +} + +TEST_F(PathBoolopTest, IntersectionInside){ + // test that the intersection of two objects where one is completely inside the other is the smaller shape + Geom::PathVector pvRectangleIntersection = sp_pathvector_boolop(pvRectangleBigger, pvRectangleSmaller, bool_op_inters, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleIntersection, pvRectangleSmaller); +} + +TEST_F(PathBoolopTest, DifferenceInside){ + // test that the difference of two objects where one is completely inside the other is an empty path + Geom::PathVector pvRectangleDifference = sp_pathvector_boolop(pvRectangleBigger, pvRectangleSmaller, bool_op_diff, fill_oddEven, fill_oddEven); + comparePaths(pvRectangleDifference, pvEmpty); +} + +TEST_F(PathBoolopTest, DifferenceOutside){ + // test that the difference of two objects where one is completely outside the other is multiple shapes + Geom::PathVector pvRectangleDifference = sp_pathvector_boolop(pvRectangleSmaller, pvRectangleBigger, bool_op_diff, fill_oddEven, fill_oddEven); + Geom::PathVector pvBothPaths = pvRectangleBigger; + + for(Geom::Path _path : pvRectangleSmaller){ + pvBothPaths.push_back(_path); + } + + comparePaths(pvRectangleDifference, pvBothPaths); +} + +//
\ No newline at end of file diff --git a/testfiles/src/rebase-hrefs-test.cpp b/testfiles/src/rebase-hrefs-test.cpp new file mode 100644 index 0000000..e1c91fb --- /dev/null +++ b/testfiles/src/rebase-hrefs-test.cpp @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test rebasing URI attributes + */ +/* + * Authors: + * Thomas Holder + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "xml/rebase-hrefs.h" + +#include <doc-per-case-test.h> +#include <gtest/gtest.h> + +#include "object/sp-object.h" + +using namespace Inkscape::XML; + +#ifdef _WIN32 +#define BASE_DIR_DIFFERENT_ROOT "D:\\foo\\bar" +#define BASE_DIR "C:\\foo\\bar" +#define BASE_URL "file:///C:/foo/bar" +#else +#define BASE_DIR_DIFFERENT_ROOT "/different/root" +#define BASE_DIR "/foo/bar" +#define BASE_URL "file://" BASE_DIR +#endif + +static char const *const docString = R"""( +<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> + +<image id="img01" xlink:href=")""" BASE_URL R"""(/a.png" /> +<image id="img02" xlink:href=")""" BASE_URL R"""(/c/b/a.png" /> + +<image id="img03" xlink:href="http://host/a.png" /> +<image id="img04" xlink:href="data:text/plain,xxx" /> + +<image id="img05" xlink:href="" /> +<image id="img06" xlink:href="#fragment" /> +<image id="img07" xlink:href="?query" /> +<image id="img08" xlink:href="/absolute/path" /> +<image id="img09" xlink:href="//network/path" /> + +<image id="img10" xlink:href="b/a.png" /> + +<a id="a01" xlink:href=")""" BASE_URL R"""(/other.svg" /> +<a id="a02" xlink:href="http://host/other.svg"></a> + +</svg> +)"""; + +class ObjectTest : public DocPerCaseTest +{ +public: + std::unique_ptr<SPDocument> doc; + + ObjectTest() { doc.reset(SPDocument::createNewDocFromMem(docString, strlen(docString), false)); } + + void assert_nonfile_unchanged() const + { + ASSERT_STREQ(doc->getObjectById("img03")->getAttribute("xlink:href"), "http://host/a.png"); + ASSERT_STREQ(doc->getObjectById("img04")->getAttribute("xlink:href"), "data:text/plain,xxx"); + + ASSERT_STREQ(doc->getObjectById("img05")->getAttribute("xlink:href"), ""); + ASSERT_STREQ(doc->getObjectById("img06")->getAttribute("xlink:href"), "#fragment"); + ASSERT_STREQ(doc->getObjectById("img07")->getAttribute("xlink:href"), "?query"); + ASSERT_STREQ(doc->getObjectById("img08")->getAttribute("xlink:href"), "/absolute/path"); + ASSERT_STREQ(doc->getObjectById("img09")->getAttribute("xlink:href"), "//network/path"); + } +}; + +TEST_F(ObjectTest, RebaseHrefs) +{ + rebase_hrefs(doc.get(), BASE_DIR G_DIR_SEPARATOR_S "c", false); + assert_nonfile_unchanged(); + ASSERT_STREQ(doc->getObjectById("img01")->getAttribute("xlink:href"), "../a.png"); + ASSERT_STREQ(doc->getObjectById("img02")->getAttribute("xlink:href"), "b/a.png"); + + // no base + rebase_hrefs(doc.get(), nullptr, false); + assert_nonfile_unchanged(); + ASSERT_STREQ(doc->getObjectById("img01")->getAttribute("xlink:href"), BASE_URL "/a.png"); + ASSERT_STREQ(doc->getObjectById("img02")->getAttribute("xlink:href"), BASE_URL "/c/b/a.png"); + + rebase_hrefs(doc.get(), BASE_DIR, false); + assert_nonfile_unchanged(); + ASSERT_STREQ(doc->getObjectById("img01")->getAttribute("xlink:href"), "a.png"); + ASSERT_STREQ(doc->getObjectById("img02")->getAttribute("xlink:href"), "c/b/a.png"); + + // base with different root + rebase_hrefs(doc.get(), BASE_DIR_DIFFERENT_ROOT, false); + assert_nonfile_unchanged(); + ASSERT_STREQ(doc->getObjectById("img01")->getAttribute("xlink:href"), BASE_URL "/a.png"); + ASSERT_STREQ(doc->getObjectById("img02")->getAttribute("xlink:href"), BASE_URL "/c/b/a.png"); +} + +static std::map<std::string, std::string> rebase_attrs_test_helper(SPDocument *doc, char const *id, + char const *old_base, char const *new_base) +{ + std::map<std::string, std::string> attributemap; + auto attributes = rebase_href_attrs(old_base, new_base, doc->getObjectById(id)->getRepr()->attributeList()); + for (const auto &item : attributes) { + attributemap[g_quark_to_string(item.key)] = item.value.pointer(); + } + return attributemap; +} + +TEST_F(ObjectTest, RebaseHrefAttrs) +{ + std::map<std::string, std::string> amap; + + amap = rebase_attrs_test_helper(doc.get(), "img01", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "../a.png"); + amap = rebase_attrs_test_helper(doc.get(), "img02", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "b/a.png"); + amap = rebase_attrs_test_helper(doc.get(), "img06", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "#fragment"); + amap = rebase_attrs_test_helper(doc.get(), "img10", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "../b/a.png"); + + amap = rebase_attrs_test_helper(doc.get(), "a01", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "../other.svg"); + amap = rebase_attrs_test_helper(doc.get(), "a02", BASE_DIR, BASE_DIR G_DIR_SEPARATOR_S "c"); + ASSERT_STREQ(amap["xlink:href"].c_str(), "http://host/other.svg"); + + amap = rebase_attrs_test_helper(doc.get(), "img01", BASE_DIR, BASE_DIR_DIFFERENT_ROOT); + ASSERT_STREQ(amap["xlink:href"].c_str(), BASE_URL "/a.png"); +} + +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/sp-glyph-kerning-test.cpp b/testfiles/src/sp-glyph-kerning-test.cpp new file mode 100644 index 0000000..2c737ee --- /dev/null +++ b/testfiles/src/sp-glyph-kerning-test.cpp @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * SPGlyphKerning test + *//* + * + * Authors: + * Cosmin Dancu + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <src/object/sp-glyph-kerning.h> + +TEST(SPGlyphKerningTest, EmptyGlyphNamesDoNotContainAnything) { + GlyphNames empty_glyph_names(nullptr); + ASSERT_FALSE(empty_glyph_names.contains("foo")); +} + +TEST(SPGlyphKerningTest, GlyphNamesContainEachName) { + GlyphNames glyph_names("name1 name2"); + ASSERT_TRUE(glyph_names.contains("name1")); + ASSERT_TRUE(glyph_names.contains("name2")); +} diff --git a/testfiles/src/sp-gradient-test.cpp b/testfiles/src/sp-gradient-test.cpp new file mode 100644 index 0000000..a4dd115 --- /dev/null +++ b/testfiles/src/sp-gradient-test.cpp @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Unit tests migrated from cxxtest + * + * Authors: + * Adrian Boguszewski + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <gtest/gtest.h> +#include <doc-per-case-test.h> +#include <src/object/sp-gradient.h> +#include <src/attributes.h> +#include <2geom/transforms.h> +#include <src/xml/node.h> +#include <src/xml/simple-document.h> +#include <src/svg/svg.h> + +using namespace Inkscape; +using namespace Inkscape::XML; + +class SPGradientTest: public DocPerCaseTest { +public: + SPGradientTest() { + DocPerCaseTest::SetUpTestCase(); + gr = new SPGradient(); + } + + ~SPGradientTest() override { + delete gr; + DocPerCaseTest::TearDownTestCase(); + } + + SPGradient *gr; +}; + +TEST_F(SPGradientTest, Init) { + ASSERT_TRUE(gr != nullptr); + EXPECT_TRUE(gr->gradientTransform.isIdentity()); + EXPECT_TRUE(Geom::are_near(Geom::identity(), gr->gradientTransform)); +} + +TEST_F(SPGradientTest, SetGradientTransform) { + gr->document = _doc.get(); + + gr->setKeyValue(SPAttr::GRADIENTTRANSFORM, "translate(5, 8)"); + EXPECT_TRUE(Geom::are_near(Geom::Affine(Geom::Translate(5.0, 8.0)), gr->gradientTransform)); + + gr->setKeyValue(SPAttr::GRADIENTTRANSFORM, ""); + EXPECT_TRUE(Geom::are_near(Geom::identity(), gr->gradientTransform)); + + gr->setKeyValue(SPAttr::GRADIENTTRANSFORM, "rotate(90)"); + EXPECT_TRUE(Geom::are_near(Geom::Affine(Geom::Rotate::from_degrees(90.0)), gr->gradientTransform)); +} + +TEST_F(SPGradientTest, Write) { + gr->document = _doc.get(); + + gr->setKeyValue(SPAttr::GRADIENTTRANSFORM, "matrix(0, 1, -1, 0, 0, 0)"); + Document *xml_doc = _doc->getReprDoc(); + + ASSERT_TRUE(xml_doc != nullptr); + + Node *repr = xml_doc->createElement("svg:radialGradient"); + gr->updateRepr(xml_doc, repr, SP_OBJECT_WRITE_ALL); + + gchar const *tr = repr->attribute("gradientTransform"); + Geom::Affine svd; + bool const valid = sp_svg_transform_read(tr, &svd); + + EXPECT_TRUE(valid); + EXPECT_TRUE(Geom::are_near(Geom::Affine(Geom::Rotate::from_degrees(90.0)), svd)); +} + +TEST_F(SPGradientTest, GetG2dGetGs2dSetGs2) { + gr->document = _doc.get(); + + Geom::Affine grXform(2, 1, + 1, 3, + 4, 6); + gr->gradientTransform = grXform; + + Geom::Rect unit_rect(Geom::Point(0, 0), Geom::Point(1, 1)); + { + Geom::Affine g2d(gr->get_g2d_matrix(Geom::identity(), unit_rect)); + Geom::Affine gs2d(gr->get_gs2d_matrix(Geom::identity(), unit_rect)); + EXPECT_TRUE(Geom::are_near(Geom::identity(), g2d)); + EXPECT_TRUE(Geom::are_near(gs2d, gr->gradientTransform * g2d, 1e-12)); + + gr->set_gs2d_matrix(Geom::identity(), unit_rect, gs2d); + EXPECT_TRUE(Geom::are_near(gr->gradientTransform, grXform, 1e-12)); + } + + gr->gradientTransform = grXform; + Geom::Affine funny(2, 3, + 4, 5, + 6, 7); + { + Geom::Affine g2d(gr->get_g2d_matrix(funny, unit_rect)); + Geom::Affine gs2d(gr->get_gs2d_matrix(funny, unit_rect)); + EXPECT_TRUE(Geom::are_near(funny, g2d)); + EXPECT_TRUE(Geom::are_near(gs2d, gr->gradientTransform * g2d, 1e-12)); + + gr->set_gs2d_matrix(funny, unit_rect, gs2d); + EXPECT_TRUE(Geom::are_near(gr->gradientTransform, grXform, 1e-12)); + } + + gr->gradientTransform = grXform; + Geom::Rect larger_rect(Geom::Point(5, 6), Geom::Point(8, 10)); + { + Geom::Affine g2d(gr->get_g2d_matrix(funny, larger_rect)); + Geom::Affine gs2d(gr->get_gs2d_matrix(funny, larger_rect)); + EXPECT_TRUE(Geom::are_near(Geom::Affine(3, 0, + 0, 4, + 5, 6) * funny, g2d )); + EXPECT_TRUE(Geom::are_near(gs2d, gr->gradientTransform * g2d, 1e-12)); + + gr->set_gs2d_matrix(funny, larger_rect, gs2d); + EXPECT_TRUE(Geom::are_near(gr->gradientTransform, grXform, 1e-12)); + + gr->setKeyValue( SPAttr::GRADIENTUNITS, "userSpaceOnUse"); + Geom::Affine user_g2d(gr->get_g2d_matrix(funny, larger_rect)); + Geom::Affine user_gs2d(gr->get_gs2d_matrix(funny, larger_rect)); + EXPECT_TRUE(Geom::are_near(funny, user_g2d)); + EXPECT_TRUE(Geom::are_near(user_gs2d, gr->gradientTransform * user_g2d, 1e-12)); + } +} diff --git a/testfiles/src/sp-item-group-test.cpp b/testfiles/src/sp-item-group-test.cpp new file mode 100644 index 0000000..3439f54 --- /dev/null +++ b/testfiles/src/sp-item-group-test.cpp @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * SPGroup test + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <src/document.h> +#include <src/inkscape.h> +#include <src/live_effects/effect.h> +#include <src/object/sp-lpe-item.h> + +using namespace Inkscape; +using namespace Inkscape::LivePathEffect; + +class SPGroupTest : public ::testing::Test { + protected: + void SetUp() override + { + // setup hidden dependency + Application::create(false); + } +}; + +TEST_F(SPGroupTest, applyingPowerClipEffectToGroupWithoutClipIsIgnored) +{ + std::string svg("\ +<svg width='100' height='100'>\ + <g id='group1'>\ + <rect id='rect1' width='100' height='50' />\ + <rect id='rect2' y='50' width='100' height='50' />\ + </g>\ +</svg>"); + + SPDocument *doc = SPDocument::createNewDocFromMem(svg.c_str(), svg.size(), true); + + auto group = dynamic_cast<SPGroup *>(doc->getObjectById("group1")); + Effect::createAndApply(POWERCLIP, doc, group); + + ASSERT_FALSE(group->hasPathEffect()); +} diff --git a/testfiles/src/sp-object-test.cpp b/testfiles/src/sp-object-test.cpp new file mode 100644 index 0000000..90a635d --- /dev/null +++ b/testfiles/src/sp-object-test.cpp @@ -0,0 +1,122 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Multiindex container for selection + * + * Authors: + * Adrian Boguszewski + * + * Copyright (C) 2016 Adrian Boguszewski + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <gtest/gtest.h> +#include <src/object/sp-object.h> +#include <src/object/sp-item.h> +#include <src/xml/node.h> +#include <src/xml/text-node.h> +#include <doc-per-case-test.h> +#include <src/xml/simple-document.h> + +using namespace Inkscape; +using namespace Inkscape::XML; + +class SPObjectTest: public DocPerCaseTest { +public: + SPObjectTest() { + auto *const _doc = this->_doc.get(); + a = new SPItem(); + b = new SPItem(); + c = new SPItem(); + d = new SPItem(); + e = new SPItem(); + auto sd = new SimpleDocument(); + auto et = new TextNode(Util::share_string("e"), sd); + auto dt = new TextNode(Util::share_string("d"), sd); + auto ct = new TextNode(Util::share_string("c"), sd); + auto bt = new TextNode(Util::share_string("b"), sd); + auto at = new TextNode(Util::share_string("a"), sd); + e->invoke_build(_doc, et, 0); + d->invoke_build(_doc, dt, 0); + c->invoke_build(_doc, ct, 0); + b->invoke_build(_doc, bt, 0); + a->invoke_build(_doc, at, 0); + } + ~SPObjectTest() override { + delete e; + delete d; + delete c; + delete b; + delete a; + } + SPObject* a; + SPObject* b; + SPObject* c; + SPObject* d; + SPObject* e; +}; + +TEST_F(SPObjectTest, Basics) { + a->attach(c, a->lastChild()); + a->attach(b, nullptr); + a->attach(d, c); + EXPECT_TRUE(a->hasChildren()); + EXPECT_EQ(b, a->firstChild()); + EXPECT_EQ(d, a->lastChild()); + auto children = a->childList(false); + EXPECT_EQ(3, children.size()); + EXPECT_EQ(b, children[0]); + EXPECT_EQ(c, children[1]); + EXPECT_EQ(d, children[2]); + a->attach(b, a->lastChild()); + EXPECT_EQ(3, a->children.size()); + a->reorder(b, b); + EXPECT_EQ(3, a->children.size()); + EXPECT_EQ(b, &a->children.front()); + EXPECT_EQ(d, &a->children.back()); + a->reorder(b, d); + EXPECT_EQ(3, a->children.size()); + EXPECT_EQ(c, &a->children.front()); + EXPECT_EQ(b, &a->children.back()); + a->reorder(d, nullptr); + EXPECT_EQ(3, a->children.size()); + EXPECT_EQ(d, &a->children.front()); + EXPECT_EQ(b, &a->children.back()); + a->reorder(c, b); + EXPECT_EQ(3, a->children.size()); + EXPECT_EQ(d, &a->children.front()); + EXPECT_EQ(c, &a->children.back()); + a->detach(b); + EXPECT_EQ(c, a->lastChild()); + children = a->childList(false); + EXPECT_EQ(2, children.size()); + EXPECT_EQ(d, children[0]); + EXPECT_EQ(c, children[1]); + a->detach(b); + EXPECT_EQ(2, a->childList(false).size()); + a->releaseReferences(); + EXPECT_FALSE(a->hasChildren()); + EXPECT_EQ(nullptr, a->firstChild()); + EXPECT_EQ(nullptr, a->lastChild()); +} + +TEST_F(SPObjectTest, Advanced) { + a->attach(b, a->lastChild()); + a->attach(c, a->lastChild()); + a->attach(d, a->lastChild()); + a->attach(e, a->lastChild()); + EXPECT_EQ(e, a->get_child_by_repr(e->getRepr())); + EXPECT_EQ(c, a->get_child_by_repr(c->getRepr())); + EXPECT_EQ(d, e->getPrev()); + EXPECT_EQ(c, d->getPrev()); + EXPECT_EQ(b, c->getPrev()); + EXPECT_EQ(nullptr, b->getPrev()); + EXPECT_EQ(nullptr, e->getNext()); + EXPECT_EQ(e, d->getNext()); + EXPECT_EQ(d, c->getNext()); + EXPECT_EQ(c, b->getNext()); + std::vector<SPObject*> tmp = {b, c, d, e}; + int index = 0; + for(auto& child: a->children) { + EXPECT_EQ(tmp[index++], &child); + } +} diff --git a/testfiles/src/style-elem-test.cpp b/testfiles/src/style-elem-test.cpp new file mode 100644 index 0000000..edf448e --- /dev/null +++ b/testfiles/src/style-elem-test.cpp @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Test the API to the style element, access, read and write functions. + *//* + * + * Authors: + * Martin Owens + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> +#include <doc-per-case-test.h> + +#include <src/style.h> +#include <src/object/sp-root.h> +#include <src/object/sp-style-elem.h> + +using namespace Inkscape; +using namespace Inkscape::XML; + +class ObjectTest: public DocPerCaseTest { +public: + ObjectTest() { + char const *docString = "\ +<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>\ +<style id='style01'>\ +rect { fill: red; opacity:0.5; }\ +#id1, #id2 { fill: red; stroke: #c0c0c0; }\ +.cls1 { fill: red; opacity:1.0; }\ +</style>\ +<style id='style02'>\ +rect { fill: green; opacity:1.0; }\ +#id3, #id4 { fill: green; stroke: #606060; }\ +.cls2 { fill: green; opacity:0.5; }\ +</style>\ +</svg>"; + doc.reset(SPDocument::createNewDocFromMem(docString, static_cast<int>(strlen(docString)), false)); + } + + ~ObjectTest() override = default; + + std::unique_ptr<SPDocument> doc; +}; + +/* + * Test sp-style-element objects created in document. + */ +TEST_F(ObjectTest, StyleElems) { + ASSERT_TRUE(doc != nullptr); + ASSERT_TRUE(doc->getRoot() != nullptr); + + SPRoot *root = doc->getRoot(); + ASSERT_TRUE(root->getRepr() != nullptr); + + SPStyleElem *one = dynamic_cast<SPStyleElem *>(doc->getObjectById("style01")); + ASSERT_TRUE(one != nullptr); + + for (auto &style : one->get_styles()) { + EXPECT_EQ(style->fill.get_value(), Glib::ustring("#ff0000")); + } + + SPStyleElem *two = dynamic_cast<SPStyleElem *>(doc->getObjectById("style02")); + ASSERT_TRUE(one != nullptr); + + for (auto &style : two->get_styles()) { + EXPECT_EQ(style->fill.get_value(), Glib::ustring("#008000")); + } +} diff --git a/testfiles/src/style-internal-test.cpp b/testfiles/src/style-internal-test.cpp new file mode 100644 index 0000000..cf14e6d --- /dev/null +++ b/testfiles/src/style-internal-test.cpp @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Tests for Style internal classes + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <gtest/gtest.h> +#include <src/style-internal.h> + +TEST(StyleInternalTest, testSPIDashArrayInequality) +{ + SPIDashArray array; + array.read("0 1 2 3"); + SPIDashArray subsetArray; + subsetArray.read("0 1"); + + ASSERT_FALSE(array == subsetArray); + ASSERT_FALSE(subsetArray == array); +} + +TEST(StyleInternalTest, testSPIDashArrayEquality) +{ + SPIDashArray anArray; + anArray.read("0 1 2 3"); + SPIDashArray sameArray; + sameArray.read("0 1 2 3"); + + ASSERT_TRUE(anArray == sameArray); + ASSERT_TRUE(sameArray == anArray); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/style-test.cpp b/testfiles/src/style-test.cpp new file mode 100644 index 0000000..f0f427f --- /dev/null +++ b/testfiles/src/style-test.cpp @@ -0,0 +1,604 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +/* + * Unit test for style properties. + * + * Author: + * Tavmjong Bah <tavjong@free.fr> + * + * Copyright (C) 2017 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <string> +#include <utility> +#include <vector> + +#include "gtest/gtest.h" + +#include "style.h" + +namespace { + +class StyleRead { + +public: + StyleRead(std::string src, std::string dst, std::string uri) : + src(std::move(src)), dst(std::move(dst)), uri(std::move(uri)) + { + } + + StyleRead(std::string src, std::string dst) : + src(std::move(src)), dst(std::move(dst)), uri("") + { + } + + StyleRead(std::string const &src) : + src(src), dst(src), uri("") + { + } + + std::string src; + std::string dst; + std::string uri; + +}; + +std::vector<StyleRead> getStyleData() +{ + StyleRead all_style_data[] = { + + // Paint ----------------------------------------------- + StyleRead("fill:none"), StyleRead("fill:currentColor"), StyleRead("fill:#ff00ff"), + StyleRead("fill:rgb(100%, 0%, 100%)", "fill:#ff00ff"), StyleRead("fill:rgb(255, 0, 255)", "fill:#ff00ff"), + + // TODO - fix this to preserve the string + // StyleRead("fill:url(#painter) rgb(100%, 0%, 100%)", + // "fill:url(#painter) #ff00ff", "#painter" ), + + // TODO - fix this to preserve the string + // StyleRead("fill:url(#painter) rgb(255, 0, 255)", + // "fill:url(#painter) #ff00ff", "#painter"), + + + StyleRead("fill:#ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)"), + + // StyleRead("fill:url(#painter)", "", "#painter"), + // StyleRead("fill:url(#painter) none", "", "#painter"), + // StyleRead("fill:url(#painter) currentColor", "", "#painter"), + // StyleRead("fill:url(#painter) #ff00ff", "", "#painter"), + // StyleRead("fill:url(#painter) rgb(100%, 0%, 100%)", "", "#painter"), + // StyleRead("fill:url(#painter) rgb(255, 0, 255)", "", "#painter"), + + // StyleRead("fill:url(#painter) #ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)", "", "#painter"), + + // StyleRead("fill:url(#painter) inherit", "", "#painter"), + + StyleRead("fill:inherit"), + + + // General tests (in general order of appearance in sp_style_read), SPIPaint tested above + StyleRead("visibility:hidden"), // SPIEnum + StyleRead("visibility:collapse"), StyleRead("visibility:visible"), + StyleRead("display:none"), // SPIEnum + StyleRead("overflow:visible"), // SPIEnum + StyleRead("overflow:auto"), // SPIEnum + + StyleRead("color:#ff0000"), StyleRead("color:blue", "color:#0000ff"), + // StyleRead("color:currentColor"), SVG 1.1 does not allow color value 'currentColor' + + // Font shorthand + StyleRead("font:bold 12px Arial", "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;" + "font-size:12px;line-height:normal;font-family:Arial"), + StyleRead("font:bold 12px/24px 'Times New Roman'", + "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-" + "height:24px;font-family:\'Times New Roman\'"), + + // From CSS 3 Fonts (examples): + StyleRead("font: 12pt/15pt sans-serif", "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:" + "normal;font-size:16px;line-height:15pt;font-family:sans-serif"), + // StyleRead("font: 80% sans-serif", + // "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:80%;line-height:normal;font-family:sans-serif"), + // StyleRead("font: x-large/110% 'new century schoolbook', serif", + // "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:x-large;line-height:110%;font-family:\'new + //century schoolbook\', serif"), + StyleRead("font: bold italic large Palatino, serif", + "font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:large;line-" + "height:normal;font-family:Palatino, serif"), + // StyleRead("font: normal small-caps 120%/120% fantasy", + // "font-style:normal;font-variant:small-caps;font-weight:normal;font-stretch:normal;font-size:120%;line-height:120%;font-family:fantasy"), + StyleRead("font: condensed oblique 12pt 'Helvetica Neue', serif;", + "font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:16px;" + "line-height:normal;font-family:\'Helvetica Neue\', serif"), + + StyleRead("font-family:sans-serif"), // SPIString, text_private + StyleRead("font-family:Arial"), + // StyleRead("font-variant:normal;font-stretch:normal;-inkscape-font-specification:Nimbus Roman No9 L Bold + // Italic"), + + // Needs to be fixed (quotes should be around each font-family): + StyleRead("font-family:Georgia, 'Minion Web'", "font-family:Georgia, \'Minion Web\'"), + StyleRead("font-size:12", "font-size:12px"), // SPIFontSize + StyleRead("font-size:12px"), StyleRead("font-size:12pt", "font-size:16px"), StyleRead("font-size:medium"), + StyleRead("font-size:smaller"), + StyleRead("font-style:italic"), // SPIEnum + StyleRead("font-variant:small-caps"), // SPIEnum + StyleRead("font-weight:100"), // SPIEnum + StyleRead("font-weight:normal"), StyleRead("font-weight:bolder"), + StyleRead("font-stretch:condensed"), // SPIEnum + + StyleRead("font-variant-ligatures:none"), // SPILigatures + StyleRead("font-variant-ligatures:normal"), StyleRead("font-variant-ligatures:no-common-ligatures"), + StyleRead("font-variant-ligatures:discretionary-ligatures"), + StyleRead("font-variant-ligatures:historical-ligatures"), StyleRead("font-variant-ligatures:no-contextual"), + StyleRead("font-variant-ligatures:common-ligatures", "font-variant-ligatures:normal"), + StyleRead("font-variant-ligatures:contextual", "font-variant-ligatures:normal"), + StyleRead("font-variant-ligatures:no-common-ligatures historical-ligatures"), + StyleRead("font-variant-ligatures:historical-ligatures no-contextual"), + StyleRead("font-variant-position:normal"), StyleRead("font-variant-position:sub"), + StyleRead("font-variant-position:super"), StyleRead("font-variant-caps:normal"), + StyleRead("font-variant-caps:small-caps"), StyleRead("font-variant-caps:all-small-caps"), + StyleRead("font-variant-numeric:normal"), StyleRead("font-variant-numeric:lining-nums"), + StyleRead("font-variant-numeric:oldstyle-nums"), StyleRead("font-variant-numeric:proportional-nums"), + StyleRead("font-variant-numeric:tabular-nums"), StyleRead("font-variant-numeric:diagonal-fractions"), + StyleRead("font-variant-numeric:stacked-fractions"), StyleRead("font-variant-numeric:ordinal"), + StyleRead("font-variant-numeric:slashed-zero"), StyleRead("font-variant-numeric:tabular-nums slashed-zero"), + StyleRead("font-variant-numeric:tabular-nums proportional-nums", "font-variant-numeric:proportional-nums"), + + StyleRead("font-variation-settings:'wght' 400"), + StyleRead("font-variation-settings:'wght' 400", "font-variation-settings:'wght' 400"), + StyleRead("font-variation-settings:'wght' 400, 'slnt' 0.5", "font-variation-settings:'slnt' 0.5, 'wght' 400"), + StyleRead("font-variation-settings:\"wght\" 400", "font-variation-settings:'wght' 400"), + + // Should be moved down + StyleRead("text-indent:12em"), // SPILength? + StyleRead("text-align:center"), // SPIEnum + + // SPITextDecoration + // The default value for 'text-decoration-color' is 'currentColor', but + // we cannot set the default to that value yet. (We need to switch + // SPIPaint to SPIColor and then add the ability to set default.) + // StyleRead("text-decoration: underline", + // "text-decoration: underline;text-decoration-line: underline;text-decoration-color:currentColor"), + // StyleRead("text-decoration: overline underline", + // "text-decoration: underline overline;text-decoration-line: underline + // overline;text-decoration-color:currentColor"), + + StyleRead("text-decoration: underline wavy #0000ff", + "text-decoration:underline;text-decoration-line:" + "underline;text-decoration-style:wavy;text-decoration-color:#0000ff"), + StyleRead("text-decoration: double overline underline #ff0000", + "text-decoration:underline overline;text-decoration-line:underline " + "overline;text-decoration-style:double;text-decoration-color:#ff0000"), + + // SPITextDecorationLine + // If only "text-decoration-line" is set but not "text-decoration", don't write "text-decoration" (changed in 1.1) + StyleRead("text-decoration-line:underline", "text-decoration-line:underline"), + // "text-decoration" overwrites "text-decoration-line" and vice versa, last one counts + StyleRead("text-decoration-line:overline;text-decoration:underline", + "text-decoration:underline;text-decoration-line:underline"), + StyleRead("text-decoration:underline;text-decoration-line:overline", + "text-decoration:overline;text-decoration-line:overline"), + + // SPITextDecorationStyle + StyleRead("text-decoration-style:solid"), StyleRead("text-decoration-style:dotted"), + + // SPITextDecorationColor + StyleRead("text-decoration-color:#ff00ff"), + + // Should be moved up + StyleRead("line-height:24px"), // SPILengthOrNormal + StyleRead("line-height:1.5"), + StyleRead("letter-spacing:2px"), // SPILengthOrNormal + StyleRead("word-spacing:2px"), // SPILengthOrNormal + StyleRead("word-spacing:normal"), + StyleRead("text-transform:lowercase"), // SPIEnum + // ... + StyleRead("baseline-shift:baseline"), // SPIBaselineShift + StyleRead("baseline-shift:sub"), StyleRead("baseline-shift:12.5%"), StyleRead("baseline-shift:2px"), + + StyleRead("opacity:0.1"), // SPIScale24 + // ... + StyleRead("stroke-width:2px"), // SPILength + StyleRead("stroke-linecap:round"), // SPIEnum + StyleRead("stroke-linejoin:round"), // SPIEnum + StyleRead("stroke-miterlimit:4"), // SPIFloat + StyleRead("marker:url(#Arrow)"), // SPIString + StyleRead("marker-start:url(#Arrow)"), StyleRead("marker-mid:url(#Arrow)"), StyleRead("marker-end:url(#Arrow)"), + StyleRead("stroke-opacity:0.5"), // SPIScale24 + // Currently inkscape handle unit conversion in dasharray but need + // a active document to do it, so we can't include in any test + StyleRead("stroke-dasharray:0, 1, 0, 1"), // SPIDashArray + StyleRead("stroke-dasharray:0 1 0 1", "stroke-dasharray:0, 1, 0, 1"), + StyleRead("stroke-dasharray:0 1 2 3", "stroke-dasharray:0, 1, 2, 3"), + StyleRead("stroke-dashoffset:13"), // SPILength + StyleRead("stroke-dashoffset:10px"), + // ... + // StyleRead("filter:url(#myfilter)"), // SPIFilter segfault in read + StyleRead("filter:inherit"), + + StyleRead("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px"), + StyleRead("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px;stroke-dasharray:1, 2, 3, " + "4;stroke-dashoffset:15"), + + StyleRead("paint-order:stroke"), // SPIPaintOrder + StyleRead("paint-order:normal"), + StyleRead("paint-order: markers stroke fill", "paint-order:markers stroke fill"), + + // !important (in order of appearance in style-internal.h) + StyleRead("stroke-miterlimit:4 !important"), // SPIFloat + StyleRead("stroke-opacity:0.5 !important"), // SPIScale24 + StyleRead("stroke-width:2px !important"), // SPILength + StyleRead("line-height:24px !important"), // SPILengthOrNormal + StyleRead("line-height:normal !important"), + StyleRead("font-stretch:condensed !important"), // SPIEnum + StyleRead("marker:url(#Arrow) !important"), // SPIString + StyleRead("color:#0000ff !important"), // SPIColor + StyleRead("fill:none !important"), // SPIPaint + StyleRead("fill:currentColor !important"), StyleRead("fill:#ff00ff !important"), + StyleRead("paint-order:stroke !important"), // SPIPaintOrder + StyleRead("paint-order:normal !important"), + StyleRead("stroke-dasharray:0, 1, 0, 1 !important"), // SPIDashArray + StyleRead("font-size:12px !important"), // SPIFontSize + StyleRead("baseline-shift:baseline !important"), // SPIBaselineShift + StyleRead("baseline-shift:sub !important"), + // StyleRead("text-decoration-line: underline !important"), // SPITextDecorationLine + + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector<StyleRead> vect(all_style_data, all_style_data + count); + return vect; +} + +TEST(StyleTest, Read) { + std::vector<StyleRead> all_style = getStyleData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style; + style.mergeString (i.src.c_str()); + + if (!i.uri.empty()) { + //EXPECT_EQ (style.fill.value.href->getURI()->toString(), i.uri); + } + + std::string out = style.write(); + if (i.dst.empty()) { + // std::cout << "out: " << out << std::endl; + // std::cout << "i.src: " << i.src << std::endl; + EXPECT_EQ (out, i.src); + } else { + // std::cout << "out: " << out << std::endl; + // std::cout << "i.dst: " << i.dst << std::endl; + EXPECT_EQ (out, i.dst); + } + } +} + + +// ------------------------------------------------------------------------------------ + +class StyleMatch { + +public: + StyleMatch(std::string src, std::string dst, bool const &match) : + src(std::move(src)), dst(std::move(dst)), match(match) + { + } + + std::string src; + std::string dst; + bool match; + +}; + +std::vector<StyleMatch> getStyleMatchData() +{ + StyleMatch all_style_data[] = { + + // SPIFloat + StyleMatch("stroke-miterlimit:4", "stroke-miterlimit:4", true ), + StyleMatch("stroke-miterlimit:4", "stroke-miterlimit:2", false), + StyleMatch("stroke-miterlimit:4", "", true ), // Default + + // SPIScale24 + StyleMatch("opacity:0.3", "opacity:0.3", true ), + StyleMatch("opacity:0.3", "opacity:0.6", false), + StyleMatch("opacity:1.0", "", true ), // Default + + // SPILength + StyleMatch("text-indent:3", "text-indent:3", true ), + StyleMatch("text-indent:6", "text-indent:3", false), + StyleMatch("text-indent:6px", "text-indent:3", false), + StyleMatch("text-indent:1px", "text-indent:12pc", false), + StyleMatch("text-indent:2ex", "text-indent:2ex", false), + + // SPILengthOrNormal + StyleMatch("letter-spacing:normal", "letter-spacing:normal", true ), + StyleMatch("letter-spacing:2", "letter-spacing:normal", false), + StyleMatch("letter-spacing:normal", "letter-spacing:2", false), + StyleMatch("letter-spacing:5px", "letter-spacing:5px", true ), + StyleMatch("letter-spacing:10px", "letter-spacing:5px", false), + StyleMatch("letter-spacing:10em", "letter-spacing:10em", false), + + // SPIEnum + StyleMatch("text-anchor:start", "text-anchor:start", true ), + StyleMatch("text-anchor:start", "text-anchor:middle", false), + StyleMatch("text-anchor:start", "", true ), // Default + StyleMatch("text-anchor:start", "text-anchor:junk", true ), // Bad value + + StyleMatch("font-weight:normal", "font-weight:400", true ), + StyleMatch("font-weight:bold", "font-weight:700", true ), + + + // SPIString and SPIFontString + StyleMatch("font-family:Arial", "font-family:Arial", true ), + StyleMatch("font-family:A B", "font-family:A B", true ), + StyleMatch("font-family:A B", "font-family:A C", false), + // Default is not set by class... value is NULL which cannot be compared + // StyleMatch("font-family:sans-serif", "", true ), // Default + + // SPIColor + StyleMatch("color:blue", "color:blue", true ), + StyleMatch("color:blue", "color:red", false), + StyleMatch("color:red", "color:#ff0000", true ), + + // SPIPaint + StyleMatch("fill:blue", "fill:blue", true ), + StyleMatch("fill:blue", "fill:red", false), + StyleMatch("fill:currentColor", "fill:currentColor", true ), + StyleMatch("fill:url(#xxx)", "fill:url(#xxx)", true ), + // Needs URL defined as in test 1 + //StyleMatch("fill:url(#xxx)", "fill:url(#yyy)", false), + + // SPIPaintOrder + StyleMatch("paint-order:markers", "paint-order:markers", true ), + StyleMatch("paint-order:markers", "paint-order:stroke", false), + //StyleMatch("paint-order:fill stroke markers", "", true ), // Default + StyleMatch("paint-order:normal", "paint-order:normal", true ), + //StyleMatch("paint-order:fill stroke markers", "paint-order:normal", true ), + + // SPIDashArray + StyleMatch("stroke-dasharray:0 1 2 3","stroke-dasharray:0 1 2 3",true ), + StyleMatch("stroke-dasharray:0 1", "stroke-dasharray:0 2", false), + + // SPIFilter + + // SPIFontSize + StyleMatch("font-size:12px", "font-size:12px", true ), + StyleMatch("font-size:12px", "font-size:24px", false), + StyleMatch("font-size:12ex", "font-size:24ex", false), + StyleMatch("font-size:medium", "font-size:medium", true ), + StyleMatch("font-size:medium", "font-size:large", false), + + // SPIBaselineShift + StyleMatch("baseline-shift:baseline", "baseline-shift:baseline", true ), + StyleMatch("baseline-shift:sub", "baseline-shift:sub", true ), + StyleMatch("baseline-shift:sub", "baseline-shift:super", false), + StyleMatch("baseline-shift:baseline", "baseline-shift:sub", false), + StyleMatch("baseline-shift:10px", "baseline-shift:10px", true ), + StyleMatch("baseline-shift:10px", "baseline-shift:12px", false), + + + // SPITextDecorationLine + StyleMatch("text-decoration-line:underline", "text-decoration-line:underline", true ), + StyleMatch("text-decoration-line:underline", "text-decoration-line:overline", false), + StyleMatch("text-decoration-line:underline overline", "text-decoration-line:underline overline", true ), + StyleMatch("text-decoration-line:none", "", true ), // Default + + + // SPITextDecorationStyle + StyleMatch("text-decoration-style:solid", "text-decoration-style:solid", true ), + StyleMatch("text-decoration-style:dotted", "text-decoration-style:solid", false), + StyleMatch("text-decoration-style:solid", "", true ), // Default + + // SPITextDecoration + StyleMatch("text-decoration:underline", "text-decoration:underline", true ), + StyleMatch("text-decoration:underline", "text-decoration:overline", false), + StyleMatch("text-decoration:underline overline","text-decoration:underline overline",true ), + StyleMatch("text-decoration:overline underline","text-decoration:underline overline",true ), + // StyleMatch("text-decoration:none", "text-decoration-color:currentColor", true ), // Default + + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector<StyleMatch> vect(all_style_data, all_style_data + count); + return vect; +} + +TEST(StyleTest, Match) { + std::vector<StyleMatch> all_style = getStyleMatchData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style_src; + SPStyle style_dst; + + style_src.mergeString( i.src.c_str() ); + style_dst.mergeString( i.dst.c_str() ); + + // std::cout << "Test:" << std::endl; + // std::cout << " C: |" << i.src + // << "| |" << i.dst << "|" << std::endl; + // std::cout << " S: |" << style_src.write( SP_STYLE_FLAG_IFSET ) + // << "| |" << style_dst.write( SP_STYLE_FLAG_IFSET ) << "|" <<std::endl; + + EXPECT_TRUE( (style_src == style_dst) == i.match ); + } +} + +// ------------------------------------------------------------------------------------ + +class StyleCascade { + +public: + StyleCascade(std::string parent, std::string child, std::string result, char const *d = nullptr) : + parent(std::move(parent)), child(std::move(child)), result(std::move(result)) + { + diff = d ? d : (this->result == this->parent ? "" : this->result); + } + + std::string parent; + std::string child; + std::string result; + std::string diff; + +}; + +std::vector<StyleCascade> getStyleCascadeData() +{ + + StyleCascade all_style_data[] = { + + // SPIFloat + StyleCascade("stroke-miterlimit:6", "stroke-miterlimit:2", "stroke-miterlimit:2" ), + StyleCascade("stroke-miterlimit:6", "", "stroke-miterlimit:6" ), + StyleCascade("", "stroke-miterlimit:2", "stroke-miterlimit:2" ), + + // SPIScale24 + StyleCascade("opacity:0.3", "opacity:0.3", "opacity:0.3", "opacity:0.3" ), + StyleCascade("opacity:0.3", "opacity:0.6", "opacity:0.6" ), + // 'opacity' does not inherit + StyleCascade("opacity:0.3", "", "opacity:1" ), + StyleCascade("", "opacity:0.3", "opacity:0.3" ), + StyleCascade("opacity:0.5", "opacity:inherit", "opacity:0.5", "opacity:0.5" ), + StyleCascade("", "", "opacity:1" ), + + // SPILength + StyleCascade("text-indent:3", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:6", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:6px", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:1px", "text-indent:12pc", "text-indent:12pc" ), + // ex, em cannot be equal + //StyleCascade("text-indent:2ex", "text-indent:2ex", "text-indent:2ex" ), + StyleCascade("text-indent:3", "", "text-indent:3" ), + StyleCascade("text-indent:3", "text-indent:inherit", "text-indent:3" ), + + // SPILengthOrNormal + StyleCascade("letter-spacing:normal", "letter-spacing:normal", "letter-spacing:normal" ), + StyleCascade("letter-spacing:2", "letter-spacing:normal", "letter-spacing:normal" ), + StyleCascade("letter-spacing:normal", "letter-spacing:2", "letter-spacing:2" ), + StyleCascade("letter-spacing:5px", "letter-spacing:5px", "letter-spacing:5px" ), + StyleCascade("letter-spacing:10px", "letter-spacing:5px", "letter-spacing:5px" ), + // ex, em cannot be equal + // StyleCascade("letter-spacing:10em", "letter-spacing:10em", "letter-spacing:10em" ), + + // SPIEnum + StyleCascade("text-anchor:start", "text-anchor:start", "text-anchor:start" ), + StyleCascade("text-anchor:start", "text-anchor:middle", "text-anchor:middle" ), + StyleCascade("text-anchor:start", "", "text-anchor:start" ), + StyleCascade("text-anchor:start", "text-anchor:junk", "text-anchor:start" ), + StyleCascade("text-anchor:end", "text-anchor:inherit", "text-anchor:end" ), + + StyleCascade("font-weight:400", "font-weight:400", "font-weight:400" ), + StyleCascade("font-weight:400", "font-weight:700", "font-weight:700" ), + StyleCascade("font-weight:400", "font-weight:bolder", "font-weight:700" ), + StyleCascade("font-weight:700", "font-weight:bolder", "font-weight:900" ), + StyleCascade("font-weight:400", "font-weight:lighter", "font-weight:100" ), + StyleCascade("font-weight:200", "font-weight:lighter", "font-weight:100" ), + + StyleCascade("font-stretch:condensed","font-stretch:expanded", "font-stretch:expanded" ), + StyleCascade("font-stretch:condensed","font-stretch:wider", "font-stretch:semi-condensed" ), + + // SPIString and SPIFontString + + StyleCascade("font-variation-settings:'wght' 400", "", "font-variation-settings:'wght' 400"), + StyleCascade("font-variation-settings:'wght' 100", + "font-variation-settings:'wght' 400", + "font-variation-settings:'wght' 400"), + + StyleCascade("font-variant-ligatures:no-common-ligatures", "", "font-variant-ligatures:no-common-ligatures"), + StyleCascade("font-variant-ligatures:no-common-ligatures", "inherit", "font-variant-ligatures:no-common-ligatures"), + StyleCascade("font-variant-ligatures:normal", "font-variant-ligatures:no-common-ligatures", "font-variant-ligatures:no-common-ligatures"), + StyleCascade("", "font-variant-ligatures:no-common-ligatures", "font-variant-ligatures:no-common-ligatures"), + + // SPIPaint + + // SPIPaintOrder + + // SPIDashArray + + // SPIFilter + + // SPIFontSize + + // SPIBaselineShift + + + // SPITextDecorationLine + StyleCascade("text-decoration-line:overline", "text-decoration-line:underline", + "text-decoration-line:underline" ), + StyleCascade("text-decoration:overline", + "text-decoration:underline", + "text-decoration:underline;text-decoration-line:underline"), + StyleCascade("text-decoration:underline", + "text-decoration:underline", + "text-decoration:underline;text-decoration-line:underline", + ""), + StyleCascade("text-decoration:overline;text-decoration-line:underline", + "text-decoration:overline", + "text-decoration:overline;text-decoration-line:overline"), + StyleCascade("text-decoration:overline;text-decoration-line:underline", + "text-decoration:underline", + "text-decoration:underline;text-decoration-line:underline", + ""), + + // SPITextDecorationStyle + + // SPITextDecoration + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector<StyleCascade> vect(all_style_data, all_style_data + count); + return vect; + +} + +TEST(StyleTest, Cascade) { + std::vector<StyleCascade> all_style = getStyleCascadeData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style_parent; + SPStyle style_child; + SPStyle style_result; + + style_parent.mergeString( i.parent.c_str() ); + style_child.mergeString( i.child.c_str() ); + style_result.mergeString( i.result.c_str() ); + + // std::cout << "Test:" << std::endl; + // std::cout << " Input: "; + // std::cout << " Parent: " << i.parent + // << " Child: " << i.child + // << " Result: " << i.result << std::endl; + // std::cout << " Write: "; + // std::cout << " Parent: " << style_parent.write( SP_STYLE_FLAG_IFSET ) + // << " Child: " << style_child.write( SP_STYLE_FLAG_IFSET ) + // << " Result: " << style_result.write( SP_STYLE_FLAG_IFSET ) << std::endl; + + style_child.cascade( &style_parent ); + + EXPECT_TRUE(style_child == style_result ); + + // if diff + EXPECT_STREQ(style_result.writeIfDiff(nullptr).c_str(), i.result.c_str()); + EXPECT_STREQ(style_result.writeIfDiff(&style_parent).c_str(), i.diff.c_str()); + } +} + + +} // namespace + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/testfiles/src/svg-affine-test.cpp b/testfiles/src/svg-affine-test.cpp new file mode 100644 index 0000000..300242d --- /dev/null +++ b/testfiles/src/svg-affine-test.cpp @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Test for SVG colors + *//* + * Authors: see git history + * + * Copyright (C) 2010 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <cstdlib> +#include <math.h> +#include <gtest/gtest.h> +#include <glib.h> + +#include "svg/svg.h" +#include <2geom/affine.h> + + +struct test_t +{ + char const *str; + Geom::Affine matrix; +}; + +static double const DEGREE = M_PI / 180.; + +test_t const read_matrix_tests[5] = {{"matrix(0,0,0,0,0,0)", Geom::Affine(0, 0, 0, 0, 0, 0)}, + {" matrix(1,2,3,4,5,6)", Geom::Affine(1, 2, 3, 4, 5, 6)}, + {"matrix (1 2 -3,-4,5e6,-6e-7)", Geom::Affine(1, 2, -3, -4, 5e6, -6e-7)}, + {"matrix(1,2,3,4,5e6-3)", Geom::Affine(1, 2, 3, 4, 5e6, -3)}, + {"matrix(1,2,3,4,5e6.3)", Geom::Affine(1, 2, 3, 4, 5e6, 0.3)}}; +test_t const read_translate_tests[3] = {{"translate(1)", Geom::Affine(1, 0, 0, 1, 1, 0)}, + {"translate(1,1)", Geom::Affine(1, 0, 0, 1, 1, 1)}, + {"translate(-1e3 .123e2)", Geom::Affine(1, 0, 0, 1, -1e3, .123e2)}}; +test_t const read_scale_tests[3] = {{"scale(2)", Geom::Affine(2, 0, 0, 2, 0, 0)}, + {"scale(2,3)", Geom::Affine(2, 0, 0, 3, 0, 0)}, + {"scale(0.1e-2 -.475e0)", Geom::Affine(0.1e-2, 0, 0, -.475e0, 0, 0)}}; +test_t const read_rotate_tests[4] = { + {"rotate(13 )", Geom::Affine(cos(13. * DEGREE), sin(13. * DEGREE), -sin(13. * DEGREE), cos(13. * DEGREE), 0, 0)}, + {"rotate(-13)", + Geom::Affine(cos(-13. * DEGREE), sin(-13. * DEGREE), -sin(-13. * DEGREE), cos(-13. * DEGREE), 0, 0)}, + {"rotate(373)", Geom::Affine(cos(13. * DEGREE), sin(13. * DEGREE), -sin(13. * DEGREE), cos(13. * DEGREE), 0, 0)}, + {"rotate(13,7,11)", Geom::Affine(cos(13. * DEGREE), sin(13. * DEGREE), -sin(13. * DEGREE), cos(13. * DEGREE), + (1 - cos(13. * DEGREE)) * 7 + sin(13. * DEGREE) * 11, + (1 - cos(13. * DEGREE)) * 11 - sin(13. * DEGREE) * 7)}}; +test_t const read_skew_tests[3] = {{"skewX( 30)", Geom::Affine(1, 0, tan(30. * DEGREE), 1, 0, 0)}, + {"skewX(-30)", Geom::Affine(1, 0, tan(-30. * DEGREE), 1, 0, 0)}, + {"skewY(390)", Geom::Affine(1, tan(30. * DEGREE), 0, 1, 0, 0)}}; +char const *const read_fail_tests[25] = { + "matrix((1,2,3,4,5,6)", + "matrix((1,2,3,4,5,6))", + "matrix(1,2,3,4,5,6))", + "matrix(,1,2,3,4,5,6)", + "matrix(1,2,3,4,5,6,)", + "matrix(1,2,3,4,5,)", + "matrix(1,2,3,4,5)", + "translate()", + "translate(,)", + "translate(1,)", + "translate(1,6,)", + "translate(1,6,0)", + "scale()", + "scale(1,6,2)", + "rotate()", + "rotate(1,6)", + "rotate(1,6,)", + "rotate(1,6,3,4)", + "skewX()", + "skewX(-)", + "skewX(.)", + "skewY(,)", + "skewY(1,2)"}; +test_t const write_matrix_tests[2] = { + {"matrix(1,2,3,4,5,6)", Geom::Affine(1, 2, 3, 4, 5, 6)}, + {"matrix(-1,2123,3,0.4,1e-8,1e20)", Geom::Affine(-1, 2.123e3, 3 + 1e-14, 0.4, 1e-8, 1e20)}}; +test_t const write_translate_tests[3] = {{"translate(1,1)", Geom::Affine(1, 0, 0, 1, 1, 1)}, + {"translate(1)", Geom::Affine(1, 0, 0, 1, 1, 0)}, + {"translate(-1345,0.123)", Geom::Affine(1, 0, 0, 1, -1.345e3, .123)}}; +test_t const write_scale_tests[3] = {{"scale(0)", Geom::Affine(0, 0, 0, 0, 0, 0)}, + {"scale(7)", Geom::Affine(7, 0, 0, 7, 0, 0)}, + {"scale(2,3)", Geom::Affine(2, 0, 0, 3, 0, 0)}}; +test_t const write_rotate_tests[3] = { + {"rotate(13)", Geom::Affine(cos(13. * DEGREE), sin(13. * DEGREE), -sin(13. * DEGREE), cos(13. * DEGREE), 0, 0)}, + {"rotate(-13,7,11)", Geom::Affine(cos(-13. * DEGREE), sin(-13. * DEGREE), -sin(-13. * DEGREE), cos(-13. * DEGREE), + (1 - cos(-13. * DEGREE)) * 7 + sin(-13. * DEGREE) * 11, + (1 - cos(-13. * DEGREE)) * 11 - sin(-13. * DEGREE) * 7)}, + {"rotate(-34.5,6.7,89)", + Geom::Affine(cos(-34.5 * DEGREE), sin(-34.5 * DEGREE), -sin(-34.5 * DEGREE), cos(-34.5 * DEGREE), + (1 - cos(-34.5 * DEGREE)) * 6.7 + sin(-34.5 * DEGREE) * 89, + (1 - cos(-34.5 * DEGREE)) * 89 - sin(-34.5 * DEGREE) * 6.7)}}; +test_t const write_skew_tests[3] = {{"skewX(30)", Geom::Affine(1, 0, tan(30. * DEGREE), 1, 0, 0)}, + {"skewX(-30)", Geom::Affine(1, 0, tan(-30. * DEGREE), 1, 0, 0)}, + {"skewY(30)", Geom::Affine(1, tan(30. * DEGREE), 0, 1, 0, 0)}}; + +bool approx_equal_pred(Geom::Affine const &ref, Geom::Affine const &cm) +{ + double maxabsdiff = 0; + for (size_t i = 0; i < 6; i++) { + maxabsdiff = std::max(std::abs(ref[i] - cm[i]), maxabsdiff); + } + return maxabsdiff < 1e-14; +} + +TEST(SvgAffineTest, testReadIdentity) +{ + char const *strs[] = {// 0, + " ", "", "matrix(1,0,0,1,0,0)", "translate(0,0)", "scale(1,1)", "rotate(0,0,0)", "skewX(0)", + "skewY(0)"}; + size_t n = G_N_ELEMENTS(strs); + for (size_t i = 0; i < n; i++) { + Geom::Affine cm; + EXPECT_TRUE(sp_svg_transform_read(strs[i], &cm)) << i; + ASSERT_EQ(Geom::identity(), cm) << strs[i]; + } +} + +TEST(SvgAffineTest, testWriteIdentity) +{ + auto str = sp_svg_transform_write(Geom::identity()); + ASSERT_TRUE(str == ""); +} + +TEST(SvgAffineTest, testReadMatrix) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_matrix_tests); i++) { + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(read_matrix_tests[i].str, &cm)) << read_matrix_tests[i].str; + ASSERT_TRUE(approx_equal_pred(read_matrix_tests[i].matrix, cm)) << read_matrix_tests[i].str; + } +} + +TEST(SvgAffineTest, testReadTranslate) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_translate_tests); i++) { + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(read_translate_tests[i].str, &cm)) << read_translate_tests[i].str; + ASSERT_TRUE(approx_equal_pred(read_translate_tests[i].matrix, cm)) << read_translate_tests[i].str; + } +} + +TEST(SvgAffineTest, testReadScale) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_scale_tests); i++) { + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(read_scale_tests[i].str, &cm)) << read_scale_tests[i].str; + ASSERT_TRUE(approx_equal_pred(read_scale_tests[i].matrix, cm)) << read_scale_tests[i].str; + } +} + +TEST(SvgAffineTest, testReadRotate) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_rotate_tests); i++) { + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(read_rotate_tests[i].str, &cm)) << read_rotate_tests[i].str; + ASSERT_TRUE(approx_equal_pred(read_rotate_tests[i].matrix, cm)) << read_rotate_tests[i].str; + } +} + +TEST(SvgAffineTest, testReadSkew) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_skew_tests); i++) { + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(read_skew_tests[i].str, &cm)) << read_skew_tests[i].str; + ASSERT_TRUE(approx_equal_pred(read_skew_tests[i].matrix, cm)) << read_skew_tests[i].str; + } +} + +TEST(SvgAffineTest, testWriteMatrix) +{ + for (size_t i = 0; i < G_N_ELEMENTS(write_matrix_tests); i++) { + auto str = sp_svg_transform_write(write_matrix_tests[i].matrix); + ASSERT_TRUE(!strcmp(str.c_str(), write_matrix_tests[i].str)); + } +} + +TEST(SvgAffineTest, testWriteTranslate) +{ + for (size_t i = 0; i < G_N_ELEMENTS(write_translate_tests); i++) { + auto str = sp_svg_transform_write(write_translate_tests[i].matrix); + ASSERT_TRUE(!strcmp(str.c_str(), write_translate_tests[i].str)); + } +} + +TEST(SvgAffineTest, testWriteScale) +{ + for (size_t i = 0; i < G_N_ELEMENTS(write_scale_tests); i++) { + auto str = sp_svg_transform_write(write_scale_tests[i].matrix); + ASSERT_TRUE(!strcmp(str.c_str(), write_scale_tests[i].str)); + } +} + +TEST(SvgAffineTest, testWriteRotate) +{ + for (size_t i = 0; i < G_N_ELEMENTS(write_rotate_tests); i++) { + auto str = sp_svg_transform_write(write_rotate_tests[i].matrix); + ASSERT_TRUE(!strcmp(str.c_str(), write_rotate_tests[i].str)); + } +} + +TEST(SvgAffineTest, testWriteSkew) +{ + for (size_t i = 0; i < G_N_ELEMENTS(write_skew_tests); i++) { + auto str = sp_svg_transform_write(write_skew_tests[i].matrix); + ASSERT_TRUE(!strcmp(str.c_str(), write_skew_tests[i].str)); + } +} + +TEST(SvgAffineTest, testReadConcatenation) +{ + char const *str = "skewY(17)skewX(9)translate(7,13)scale(2)rotate(13)translate(3,5)"; + Geom::Affine ref(2.0199976232558053, 1.0674773585906016, -0.14125199392774669, 1.9055550612095459, + 14.412730624347654, 28.499820929377454); // Precomputed using Mathematica + Geom::Affine cm; + ASSERT_TRUE(sp_svg_transform_read(str, &cm)); + ASSERT_TRUE(approx_equal_pred(ref, cm)); +} + +TEST(SvgAffineTest, testReadFailures) +{ + for (size_t i = 0; i < G_N_ELEMENTS(read_fail_tests); i++) { + Geom::Affine cm; + EXPECT_FALSE(sp_svg_transform_read(read_fail_tests[i], &cm)) << read_fail_tests[i]; + } +} + +// vim: filetype=cpp:expandtab:shiftwidth=4:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/svg-color-test.cpp b/testfiles/src/svg-color-test.cpp new file mode 100644 index 0000000..c4e9379 --- /dev/null +++ b/testfiles/src/svg-color-test.cpp @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Test for SVG colors + *//* + * Authors: see git history + * + * Copyright (C) 2010 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include "svg/svg-color.h" + +#include <cstdlib> +#include <gtest/gtest.h> + +#include "preferences.h" +#include "svg/svg-icc-color.h" + +static void check_rgb24(unsigned const rgb24) +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + char css[8]; + + prefs->setBool("/options/svgoutput/usenamedcolors", false); + sp_svg_write_color(css, sizeof(css), rgb24 << 8); + ASSERT_EQ(sp_svg_read_color(css, 0xff), rgb24 << 8); + + prefs->setBool("/options/svgoutput/usenamedcolors", true); + sp_svg_write_color(css, sizeof(css), rgb24 << 8); + ASSERT_EQ(sp_svg_read_color(css, 0xff), rgb24 << 8); +} + +TEST(SvgColorTest, testWrite) +{ + unsigned const components[] = {0, 0x80, 0xff, 0xc0, 0x77}; + unsigned const nc = G_N_ELEMENTS(components); + for (unsigned i = nc * nc * nc; i--;) { + unsigned tmp = i; + unsigned rgb24 = 0; + for (unsigned c = 0; c < 3; ++c) { + unsigned const component = components[tmp % nc]; + rgb24 = (rgb24 << 8) | component; + tmp /= nc; + } + ASSERT_TRUE(tmp == 0); + check_rgb24(rgb24); + } + + /* And a few completely random ones. */ + for (unsigned i = 500; i--;) { /* Arbitrary number of iterations. */ + unsigned const rgb24 = (std::rand() >> 4) & 0xffffff; + check_rgb24(rgb24); + } +} + +TEST(SvgColorTest, testReadColor) +{ + gchar const *val[] = {"#f0f", "#ff00ff", "rgb(255,0,255)", "fuchsia"}; + size_t const n = sizeof(val) / sizeof(*val); + for (size_t i = 0; i < n; i++) { + gchar const *end = 0; + guint32 result = sp_svg_read_color(val[i], &end, 0x3); + ASSERT_EQ(result, 0xff00ff00); + ASSERT_LT(val[i], end); + } +} + +TEST(SvgColorTest, testIccColor) +{ + struct + { + unsigned numEntries; + bool shouldPass; + char const *name; + char const *str; + } cases[] = { + {1, true, "named", "icc-color(named, 3)"}, + {0, false, "", "foodle"}, + {1, true, "a", "icc-color(a, 3)"}, + {4, true, "named", "icc-color(named, 3, 0, 0.1, 2.5)"}, + {0, false, "", "icc-color(named, 3"}, + {0, false, "", "icc-color(space named, 3)"}, + {0, false, "", "icc-color(tab\tnamed, 3)"}, + {0, false, "", "icc-color(0name, 3)"}, + {0, false, "", "icc-color(-name, 3)"}, + {1, true, "positive", "icc-color(positive, +3)"}, + {1, true, "negative", "icc-color(negative, -3)"}, + {1, true, "positive", "icc-color(positive, +0.1)"}, + {1, true, "negative", "icc-color(negative, -0.1)"}, + {0, false, "", "icc-color(named, value)"}, + {1, true, "hyphen-name", "icc-color(hyphen-name, 1)"}, + {1, true, "under_name", "icc-color(under_name, 1)"}, + }; + + for (size_t i = 0; i < G_N_ELEMENTS(cases); i++) { + SVGICCColor tmp; + char const *str = cases[i].str; + char const *result = nullptr; + + bool parseRet = sp_svg_read_icc_color(str, &result, &tmp); + ASSERT_EQ(parseRet, cases[i].shouldPass) << str; + ASSERT_EQ(tmp.colors.size(), cases[i].numEntries) << str; + if (cases[i].shouldPass) { + ASSERT_STRNE(str, result); + ASSERT_EQ(tmp.colorProfile, cases[i].name) << str; + } else { + ASSERT_STREQ(str, result); + ASSERT_TRUE(tmp.colorProfile.empty()); + } + } +} + +// vim: filetype=cpp:expandtab:shiftwidth=4:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/svg-extension-test.cpp b/testfiles/src/svg-extension-test.cpp new file mode 100644 index 0000000..e650d24 --- /dev/null +++ b/testfiles/src/svg-extension-test.cpp @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * SVG Extension test + *//* + * Authors: see git history + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL version 2 or later, read the file 'COPYING' for more information + */ + +#include <gtest/gtest.h> + +#include <src/extension/db.h> +#include <src/extension/input.h> +#include <src/extension/internal/svg.h> +#include <src/inkscape.h> + +#include <glib/gstdio.h> + +using namespace Inkscape; +using namespace Inkscape::Extension; +using namespace Inkscape::Extension::Internal; + +class SvgExtensionTest : public ::testing::Test { + public: + static std::string create_file(const std::string &filename, const std::string &content) + { + std::stringstream path_builder; + path_builder << "SvgExtensionTest_" << _files.size() << "_" << filename; + std::string path = path_builder.str(); + GError *error = nullptr; + if (!g_file_set_contents(path.c_str(), content.c_str(), content.size(), &error)) { + std::stringstream msg; + msg << "SvgExtensionTest::create_file failed: GError(" << error->domain << ", " << error->code << ", " + << error->message << ")"; + g_error_free(error); + throw std::runtime_error(msg.str()); + } + _files.insert(path); + return path; + } + + static std::set<std::string> _files; + + protected: + void SetUp() override + { + // setup hidden dependency + Application::create(false); + } + + static void TearDownTestCase() + { + for (auto file : _files) { + if (g_remove(file.c_str())) { + std::cout << "SvgExtensionTest was unable to remove file: " << file << std::endl; + } + } + } +}; + +std::set<std::string> SvgExtensionTest::_files; + +TEST_F(SvgExtensionTest, openingAsLinkInImageASizelessSvgFileReturnsNull) +{ + std::string sizeless_svg_file = + create_file("sizeless.svg", + "<svg><path d=\"M 71.527648,186.14229 A 740.48715,740.48715 0 0 0 696.31258,625.8041 Z\"/></svg>"); + + Svg::init(); + Input *svg_input_extension(dynamic_cast<Input *>(db.get(SP_MODULE_KEY_INPUT_SVG))); + + Preferences *prefs = Preferences::get(); + prefs->setBool("/options/onimport", true); + prefs->setBool("/dialogs/import/ask_svg", false); + prefs->setString("/dialogs/import/import_mode_svg", "link"); + + ASSERT_EQ(svg_input_extension->open(sizeless_svg_file.c_str()), nullptr); +}
\ No newline at end of file diff --git a/testfiles/src/svg-length-test.cpp b/testfiles/src/svg-length-test.cpp new file mode 100644 index 0000000..b96ee14 --- /dev/null +++ b/testfiles/src/svg-length-test.cpp @@ -0,0 +1,187 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Test for SVG colors + *//* + * Authors: see git history + * + * Copyright (C) 2010 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include "svg/svg-length.h" +#include "svg/svg.h" + +#include <glib.h> +#include <gtest/gtest.h> +#include <utility> + +struct test_t +{ + char const *str; + SVGLength::Unit unit; + float value; + float computed; +}; + +test_t absolute_tests[12] = { + // clang-format off + {"0", SVGLength::NONE, 0 , 0}, + {"1", SVGLength::NONE, 1 , 1}, + {"1.00001", SVGLength::NONE, 1.00001 , 1.00001}, + {"1px", SVGLength::PX , 1 , 1}, + {".1px", SVGLength::PX , 0.1 , 0.1}, + {"100pt", SVGLength::PT , 100 , 400.0/3.0}, + {"1e2pt", SVGLength::PT , 100 , 400.0/3.0}, + {"3pc", SVGLength::PC , 3 , 48}, + {"-3.5pc", SVGLength::PC , -3.5 , -3.5*16.0}, + {"1.2345678mm", SVGLength::MM , 1.2345678, 1.2345678f*96.0/25.4}, // TODO: More precise constants? (a 7 digit constant when the default precision is 8 digits?) + {"123.45678cm", SVGLength::CM , 123.45678 , 123.45678f*96.0/2.54}, // Note that svg_length_read is casting the result from g_ascii_strtod to float. + {"73.162987in", SVGLength::INCH, 73.162987 , 73.162987f*96.0/1.00}}; +test_t relative_tests[3] = { + {"123em", SVGLength::EM, 123, 123. * 7.}, + {"123ex", SVGLength::EX, 123, 123. * 13.}, + {"123%", SVGLength::PERCENT, 1.23, 1.23 * 19.}}; +const char* fail_tests[8] = { + "123 px", + "123e", + "123e+m", + "123ec", + "123pxt", + "--123", + "", + "px"}; +// clang-format on + +TEST(SvgLengthTest, testRead) +{ + for (size_t i = 0; i < G_N_ELEMENTS(absolute_tests); i++) { + SVGLength len; + ASSERT_TRUE( len.read(absolute_tests[i].str)) << absolute_tests[i].str; + ASSERT_EQ( len.unit, absolute_tests[i].unit) << absolute_tests[i].str; + ASSERT_EQ( len.value, absolute_tests[i].value) << absolute_tests[i].str; + ASSERT_EQ( len.computed, absolute_tests[i].computed) << absolute_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(relative_tests); i++) { + SVGLength len; + ASSERT_TRUE( len.read(relative_tests[i].str)) << relative_tests[i].str; + len.update(7, 13, 19); + ASSERT_EQ( len.unit, relative_tests[i].unit) << relative_tests[i].str; + ASSERT_EQ( len.value, relative_tests[i].value) << relative_tests[i].str; + ASSERT_EQ( len.computed, relative_tests[i].computed) << relative_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(fail_tests); i++) { + SVGLength len; + ASSERT_TRUE( !len.read(fail_tests[i])) << fail_tests[i]; + } +} + +TEST(SvgLengthTest, testReadOrUnset) +{ + for (size_t i = 0; i < G_N_ELEMENTS(absolute_tests); i++) { + SVGLength len; + len.readOrUnset(absolute_tests[i].str); + ASSERT_EQ( len.unit, absolute_tests[i].unit) << absolute_tests[i].str; + ASSERT_EQ( len.value, absolute_tests[i].value) << absolute_tests[i].str; + ASSERT_EQ( len.computed, absolute_tests[i].computed) << absolute_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(relative_tests); i++) { + SVGLength len; + len.readOrUnset(relative_tests[i].str); + len.update(7, 13, 19); + ASSERT_EQ( len.unit, relative_tests[i].unit) << relative_tests[i].str; + ASSERT_EQ( len.value, relative_tests[i].value) << relative_tests[i].str; + ASSERT_EQ( len.computed, relative_tests[i].computed) << relative_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(fail_tests); i++) { + SVGLength len; + len.readOrUnset(fail_tests[i], SVGLength::INCH, 123, 456); + ASSERT_EQ( len.unit, SVGLength::INCH) << fail_tests[i]; + ASSERT_EQ( len.value, 123) << fail_tests[i]; + ASSERT_EQ( len.computed, 456) << fail_tests[i]; + } +} + +TEST(SvgLengthTest, testReadAbsolute) +{ + for (size_t i = 0; i < G_N_ELEMENTS(absolute_tests); i++) { + SVGLength len; + ASSERT_TRUE( len.readAbsolute(absolute_tests[i].str)) << absolute_tests[i].str; + ASSERT_EQ( len.unit, absolute_tests[i].unit) << absolute_tests[i].str; + ASSERT_EQ( len.value, absolute_tests[i].value) << absolute_tests[i].str; + ASSERT_EQ( len.computed, absolute_tests[i].computed) << absolute_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(relative_tests); i++) { + SVGLength len; + ASSERT_TRUE( !len.readAbsolute(relative_tests[i].str)) << relative_tests[i].str; + } + for (size_t i = 0; i < G_N_ELEMENTS(fail_tests); i++) { + SVGLength len; + ASSERT_TRUE( !len.readAbsolute(fail_tests[i])) << fail_tests[i]; + } +} + +TEST(SvgLengthTest, testEnumMappedToString) +{ + for (int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + // PX is a special case where we don't have a unit string + if ((target != SVGLength::PX)) { + gchar const *val = sp_svg_length_get_css_units(target); + ASSERT_NE(val, "") << i; + } + } +} + +TEST(SvgLengthTest, testStringsAreValidSVG) +{ + gchar const *valid[] = {"", "em", "ex", "px", "pt", "pc", "cm", "mm", "in", "%"}; + std::set<std::string> validStrings(valid, valid + G_N_ELEMENTS(valid)); + for (int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + gchar const *val = sp_svg_length_get_css_units(target); + ASSERT_TRUE( validStrings.find(std::string(val)) != validStrings.end()) << i; + } +} + +TEST(SvgLengthTest, testValidSVGStringsSupported) +{ + // Note that "px" is omitted from the list, as it will be assumed to be so if not explicitly set. + gchar const *valid[] = {"em", "ex", "pt", "pc", "cm", "mm", "in", "%"}; + std::set<std::string> validStrings(valid, valid + G_N_ELEMENTS(valid)); + for (int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + gchar const *val = sp_svg_length_get_css_units(target); + std::set<std::string>::iterator iter = validStrings.find(std::string(val)); + if (iter != validStrings.end()) { + validStrings.erase(iter); + } + } + ASSERT_EQ(validStrings.size(), 0u) << validStrings.size(); +} + +TEST(SvgLengthTest, testPlaces) +{ + struct testd_t + { + char const *str; + double val; + int prec; + int minexp; + }; + + testd_t const precTests[] = { + {"760", 761.92918978947023, 2, -8}, + {"761.9", 761.92918978947023, 4, -8}, + }; + + for (size_t i = 0; i < G_N_ELEMENTS(precTests); i++) { + std::string buf; + buf.append(sp_svg_number_write_de(precTests[i].val, precTests[i].prec, precTests[i].minexp)); + unsigned int retval = buf.length(); + ASSERT_EQ( retval, strlen(precTests[i].str)) << "Number of chars written"; + ASSERT_EQ( std::string(buf), std::string(precTests[i].str)) << "Numeric string written"; + } +} + +// TODO: More tests + +// vim: filetype=cpp:expandtab:shiftwidth=4:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/svg-path-geom-test.cpp b/testfiles/src/svg-path-geom-test.cpp new file mode 100644 index 0000000..7fa7a21 --- /dev/null +++ b/testfiles/src/svg-path-geom-test.cpp @@ -0,0 +1,499 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * Test for SVG colors + *//* + * Authors: see git history + * + * Copyright (C) 2010 Authors + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ +#include <2geom/coord.h> +#include <2geom/curves.h> +#include <2geom/pathvector.h> +#include <glib.h> +#include <gtest/gtest.h> +#include <vector> + +#include "preferences.h" +#include "svg/svg.h" + +class SvgPathGeomTest : public ::testing::Test +{ +public: + std::vector<std::string> rectanglesAbsoluteClosed = {"M 1,2 L 4,2 L 4,8 L 1,8 z", "M 1,2 4,2 4,8 1,8 z", + "M 1,2 H 4 V 8 H 1 z"}; + std::vector<std::string> rectanglesRelativeClosed = {"m 1,2 l 3,0 l 0,6 l -3,0 z", "m 1,2 3,0 0,6 -3,0 z", + "m 1,2 h 3 v 6 h -3 z"}; + std::vector<std::string> rectanglesAbsoluteOpen = {"M 1,2 L 4,2 L 4,8 L 1,8 L 1,2", "M 1,2 4,2 4,8 1,8 1,2", + "M 1,2 H 4 V 8 H 1 V 2"}; + std::vector<std::string> rectanglesRelativeOpen = {"m 1,2 l 3,0 l 0,6 l -3,0 l 0,-6", "m 1,2 3,0 0,6 -3,0 0,-6", + "m 1,2 h 3 v 6 h -3 v -6"}; + std::vector<std::string> rectanglesAbsoluteClosed2 = {"M 1,2 L 4,2 L 4,8 L 1,8 L 1,2 z", "M 1,2 4,2 4,8 1,8 1,2 z", + "M 1,2 H 4 V 8 H 1 V 2 z"}; + std::vector<std::string> rectanglesRelativeClosed2{"m 1,2 l 3,0 l 0,6 l -3,0 l 0,-6 z", "m 1,2 3,0 0,6 -3,0 0,-6 z", + "m 1,2 h 3 v 6 h -3 v -6 z"}; + Geom::PathVector rectanglepvopen; + Geom::PathVector rectanglepvclosed; + Geom::PathVector rectanglepvclosed2; + + void SetUp() override + { + rectanglepvopen.clear(); + rectanglepvopen.push_back(Geom::Path(Geom::Point(1, 2))); + rectanglepvopen.back().append(Geom::LineSegment(Geom::Point(1, 2), Geom::Point(4, 2))); + rectanglepvopen.back().append(Geom::LineSegment(Geom::Point(4, 2), Geom::Point(4, 8))); + rectanglepvopen.back().append(Geom::LineSegment(Geom::Point(4, 8), Geom::Point(1, 8))); + rectanglepvopen.back().append(Geom::LineSegment(Geom::Point(1, 8), Geom::Point(1, 2))); + rectanglepvclosed.clear(); + rectanglepvclosed.push_back(Geom::Path(Geom::Point(1, 2))); + rectanglepvclosed.back().append(Geom::LineSegment(Geom::Point(1, 2), Geom::Point(4, 2))); + rectanglepvclosed.back().append(Geom::LineSegment(Geom::Point(4, 2), Geom::Point(4, 8))); + rectanglepvclosed.back().append(Geom::LineSegment(Geom::Point(4, 8), Geom::Point(1, 8))); + rectanglepvclosed.back().close(); + rectanglepvclosed2.clear(); + rectanglepvclosed2.push_back(Geom::Path(Geom::Point(1, 2))); + rectanglepvclosed2.back().append(Geom::LineSegment(Geom::Point(1, 2), Geom::Point(4, 2))); + rectanglepvclosed2.back().append(Geom::LineSegment(Geom::Point(4, 2), Geom::Point(4, 8))); + rectanglepvclosed2.back().append(Geom::LineSegment(Geom::Point(4, 8), Geom::Point(1, 8))); + rectanglepvclosed2.back().append(Geom::LineSegment(Geom::Point(1, 8), Geom::Point(1, 2))); + rectanglepvclosed2.back().close(); + } + + bool bpathEqual(Geom::PathVector const &a, Geom::PathVector const &b, double eps = 1e-16) + { + if (a.size() != b.size()) { + printf("PathVectors not the same size: %u != %u", static_cast<unsigned int>(a.size()), + static_cast<unsigned int>(b.size())); + return false; + } + for (size_t i = 0; i < a.size(); i++) { + Geom::Path const &pa = a[i]; + Geom::Path const &pb = b[i]; + if (pa.closed() && !pb.closed()) { + printf("Left subpath is closed, right subpath is open. Subpath: %u", static_cast<unsigned int>(i)); + return false; + } + if (!pa.closed() && pb.closed()) { + printf("Right subpath is closed, left subpath is open. Subpath: %u", static_cast<unsigned int>(i)); + return false; + } + if (pa.size() != pb.size()) { + printf("Not the same number of segments: %u != %u, subpath: %u", static_cast<unsigned int>(pa.size()), + static_cast<unsigned int>(pb.size()), static_cast<unsigned int>(i)); + return false; + } + for (size_t j = 0; j < pa.size(); j++) { + Geom::Curve const *ca = &pa[j]; + Geom::Curve const *cb = &pb[j]; + if (typeid(*ca) == typeid(*cb)) { + if (Geom::LineSegment const *la = dynamic_cast<Geom::LineSegment const *>(ca)) { + Geom::LineSegment const *lb = dynamic_cast<Geom::LineSegment const *>(cb); + if (!Geom::are_near((*la)[0], (*lb)[0], eps)) { + printf("Different start of segment: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[0][Geom::X], (*la)[0][Geom::Y], (*lb)[0][Geom::X], (*lb)[0][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + if (!Geom::are_near((*la)[1], (*lb)[1], eps)) { + printf("Different end of segment: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[1][Geom::X], (*la)[1][Geom::Y], (*lb)[1][Geom::X], (*lb)[1][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + } else if (Geom::CubicBezier const *la = dynamic_cast<Geom::CubicBezier const *>(ca)) { + Geom::CubicBezier const *lb = dynamic_cast<Geom::CubicBezier const *>(cb); + if (!Geom::are_near((*la)[0], (*lb)[0], eps)) { + printf("Different start of segment: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[0][Geom::X], (*la)[0][Geom::Y], (*lb)[0][Geom::X], (*lb)[0][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + if (!Geom::are_near((*la)[1], (*lb)[1], eps)) { + printf("Different 1st control point: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[1][Geom::X], (*la)[1][Geom::Y], (*lb)[1][Geom::X], (*lb)[1][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + if (!Geom::are_near((*la)[2], (*lb)[2], eps)) { + printf("Different 2nd control point: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[2][Geom::X], (*la)[2][Geom::Y], (*lb)[2][Geom::X], (*lb)[2][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + if (!Geom::are_near((*la)[3], (*lb)[3], eps)) { + printf("Different end of segment: (%g,%g) != (%g,%g), subpath: %u, segment: %u", + (*la)[3][Geom::X], (*la)[3][Geom::Y], (*lb)[3][Geom::X], (*lb)[3][Geom::Y], + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + } else { + printf("Unknown curve type: %s, subpath: %u, segment: %u", typeid(*ca).name(), + static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + } else // not same type + { + printf("Different curve types: %s != %s, subpath: %u, segment: %u", typeid(*ca).name(), + typeid(*cb).name(), static_cast<unsigned int>(i), static_cast<unsigned int>(j)); + return false; + } + } + } + return true; + } +}; + +TEST_F(SvgPathGeomTest, testReadRectanglesAbsoluteClosed) +{ + for (size_t i = 0; i < rectanglesAbsoluteClosed.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesAbsoluteClosed[i].c_str()); + EXPECT_TRUE(bpathEqual(pv, rectanglepvclosed)) << rectanglesAbsoluteClosed[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadRectanglesRelativeClosed) +{ + for (size_t i = 0; i < rectanglesRelativeClosed.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesRelativeClosed[i].c_str()); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << rectanglesRelativeClosed[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadRectanglesAbsoluteOpen) +{ + for (size_t i = 0; i < rectanglesAbsoluteOpen.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesAbsoluteOpen[i].c_str()); + ASSERT_TRUE(bpathEqual(pv, rectanglepvopen)) << rectanglesAbsoluteOpen[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadRectanglesRelativeOpen) +{ + for (size_t i = 0; i < rectanglesRelativeOpen.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesRelativeOpen[i].c_str()); + ASSERT_TRUE(bpathEqual(pv, rectanglepvopen)) << rectanglesRelativeOpen[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadRectanglesAbsoluteClosed2) +{ + for (size_t i = 0; i < rectanglesAbsoluteClosed2.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesAbsoluteClosed2[i].c_str()); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed2)) << rectanglesAbsoluteClosed2[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadRectanglesRelativeClosed2) +{ + for (size_t i = 0; i < rectanglesRelativeClosed2.size(); i++) { + Geom::PathVector pv = sp_svg_read_pathv(rectanglesRelativeClosed2[i].c_str()); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed2)) << rectanglesRelativeClosed2[i].c_str(); + } +} + +TEST_F(SvgPathGeomTest, testReadConcatenatedPaths) +{ + // Note that finalPoint doesn't actually return the final point of the path, just the last given point... (but since + // this might be intentional and we're not testing lib2geom here, we just specify the final point explicitly + Geom::PathVector pv_good; + pv_good.push_back(rectanglepvclosed.back()); + pv_good.push_back(rectanglepvopen.back() * Geom::Translate(1, 2) /* * Geom::Translate(pv_good[0].finalPoint())*/); + pv_good.push_back(rectanglepvclosed.back() * Geom::Translate(2, 4) /* *Geom::Translate(pv_good[1].finalPoint())*/); + pv_good.push_back(rectanglepvopen.back()); + pv_good[0].close(); + pv_good[1].close(false); + pv_good[2].close(); + pv_good[3].close(false); + std::string path_str = rectanglesAbsoluteClosed[0] + rectanglesRelativeOpen[0] + rectanglesRelativeClosed[0] + + rectanglesAbsoluteOpen[0]; + Geom::PathVector pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, pv_good)); +} + +TEST_F(SvgPathGeomTest, testReadZeroLengthSubpaths) +{ + // Per the SVG 1.1 specification (section F5) zero-length subpaths are relevant + Geom::PathVector pv_good; + pv_good.push_back(Geom::Path(Geom::Point(0, 0))); + pv_good.push_back(Geom::Path(Geom::Point(1, 1))); + pv_good.back().append(Geom::LineSegment(Geom::Point(1, 1), Geom::Point(2, 2))); + pv_good.push_back(Geom::Path(Geom::Point(3, 3))); + pv_good.back().close(); + pv_good.push_back(Geom::Path(Geom::Point(4, 4))); + pv_good.back().append(Geom::LineSegment(Geom::Point(4, 4), Geom::Point(5, 5))); + pv_good.back().close(); + pv_good.push_back(Geom::Path(Geom::Point(6, 6))); + { // Test absolute version + char const *path_str = "M 0,0 M 1,1 L 2,2 M 3,3 z M 4,4 L 5,5 z M 6,6"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } + { // Test relative version + char const *path_str = "m 0,0 m 1,1 l 1,1 m 1,1 z m 1,1 l 1,1 z m 2,2"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } +} + +TEST_F(SvgPathGeomTest, testReadImplicitMoveto) +{ + g_warning("Currently lib2geom (/libnr) has no way of specifying the difference between 'M 0,0 ... z M 0,0 L 1,0' " + "and 'M 0,0 ... z L 1,0', the SVG specification does state that these should be handled differently with " + "respect to markers however, see the description of the 'orient' attribute of the 'marker' element."); + Geom::PathVector pv_good; + pv_good.push_back(Geom::Path(Geom::Point(1, 1))); + pv_good.back().append(Geom::LineSegment(Geom::Point(1, 1), Geom::Point(2, 2))); + pv_good.back().close(); + pv_good.push_back(Geom::Path(Geom::Point(1, 1))); + pv_good.back().append(Geom::LineSegment(Geom::Point(1, 1), Geom::Point(3, 3))); + pv_good.back().close(); + { // Test absolute version + char const *path_str = "M 1,1 L 2,2 z L 3,3 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } + { // Test relative version + char const *path_str = "M 1,1 l 1,1 z l 2,2 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } +} + +TEST_F(SvgPathGeomTest, testReadFloatingPoint) +{ + Geom::PathVector pv_good1; + pv_good1.push_back(Geom::Path(Geom::Point(.01, .02))); + pv_good1.back().append(Geom::LineSegment(Geom::Point(.01, .02), Geom::Point(.04, .02))); + pv_good1.back().append(Geom::LineSegment(Geom::Point(.04, .02), Geom::Point(1.5, 1.6))); + pv_good1.back().append(Geom::LineSegment(Geom::Point(1.5, 1.6), Geom::Point(.01, .08))); + pv_good1.back().append(Geom::LineSegment(Geom::Point(.01, .08), Geom::Point(.01, .02))); + pv_good1.back().close(); + { // Test decimals + char const *path_str = "M .01,.02 L.04.02 L1.5,1.6L0.01,0.08 .01.02 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good1)) << path_str; + } + Geom::PathVector pv_good2; + pv_good2.push_back(Geom::Path(Geom::Point(.01, .02))); + pv_good2.back().append(Geom::LineSegment(Geom::Point(.01, .02), Geom::Point(.04, .02))); + pv_good2.back().append(Geom::LineSegment(Geom::Point(.04, .02), Geom::Point(1.5, 1.6))); + pv_good2.back().append(Geom::LineSegment(Geom::Point(1.5, 1.6), Geom::Point(.01, .08))); + pv_good2.back().close(); + { // Test exponent + char const *path_str = "M 1e-2,.2e-1 L 0.004e1,0.0002e+2 L0150E-2,1.6e0L1.0e-2,80e-3 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good2)) << path_str; + } +} + +TEST_F(SvgPathGeomTest, testReadImplicitSeparation) +{ + // Coordinates need not be separated by whitespace if they can still be read unambiguously + Geom::PathVector pv_good; + pv_good.push_back(Geom::Path(Geom::Point(.1, .2))); + pv_good.back().append(Geom::LineSegment(Geom::Point(.1, .2), Geom::Point(.4, .2))); + pv_good.back().append(Geom::LineSegment(Geom::Point(.4, .2), Geom::Point(.4, .8))); + pv_good.back().append(Geom::LineSegment(Geom::Point(.4, .8), Geom::Point(.1, .8))); + pv_good.back().close(); + { // Test absolute + char const *path_str = "M .1.2+0.4.2e0.4e0+8e-1.1.8 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } + { // Test relative + char const *path_str = "m .1.2+0.3.0e0.0e0+6e-1-.3.0 z"; + Geom::PathVector pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, pv_good)) << path_str; + } +} + +TEST_F(SvgPathGeomTest, testReadErrorMisplacedCharacter) +{ + + char const *path_str; + Geom::PathVector pv; + // Comma in the wrong place (commas may only appear between parameters) + path_str = "M 1,2 4,2 4,8 1,8 z , m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Comma in the wrong place (commas may only appear between parameters) + path_str = "M 1,2 4,2 4,8 1,8 z m,13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Period in the wrong place (no numbers after a 'z') + path_str = "M 1,2 4,2 4,8 1,8 z . m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Sign in the wrong place (no numbers after a 'z') + path_str = "M 1,2 4,2 4,8 1,8 z + - m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Digit in the wrong place (no numbers after a 'z') + path_str = "M 1,2 4,2 4,8 1,8 z 9809 m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Digit in the wrong place (no numbers after a 'z') + path_str = "M 1,2 4,2 4,8 1,8 z 9809 876 m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; +} +/*FAIL ?? +TEST_F(SvgPathGeomTest, testReadErrorUnrecognizedCharacter) +{ + char const *path_str; + Geom::PathVector pv; + // Unrecognized character + path_str = "M 1,2 4,2 4,8 1,8 z&m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Unrecognized character + path_str = "M 1,2 4,2 4,8 1,8 z m &13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; +} + +TEST_F(SvgPathGeomTest, testReadErrorTypo) +{ + char const *path_str; + Geom::PathVector pv; + // Typo + path_str = "M 1,2 4,2 4,8 1,8 z j 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + + // Typo + path_str = "M 1,2 4,2 4,8 1,8 L 1,2 x m 13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvopen)) << path_str; +} +*/ +TEST_F(SvgPathGeomTest, testReadErrorIllformedNumbers) +{ + char const *path_str; + Geom::PathVector pv; + // Double exponent + path_str = "M 1,2 4,2 4,8 1,8 z m 13e4e5,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Double sign + path_str = "M 1,2 4,2 4,8 1,8 z m +-13,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Double sign + path_str = "M 1,2 4,2 4,8 1,8 z m 13e+-12,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // No digit + path_str = "M 1,2 4,2 4,8 1,8 z m .e12,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // No digit + path_str = "M 1,2 4,2 4,8 1,8 z m .,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // No digit + path_str = "M 1,2 4,2 4,8 1,8 z m +,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // No digit + path_str = "M 1,2 4,2 4,8 1,8 z m +.e+,15"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; +} + +TEST_F(SvgPathGeomTest, testReadErrorJunk) +{ + char const *path_str; + Geom::PathVector pv; + // Junk + path_str = "M 1,2 4,2 4,8 1,8 z j 357 hkjh.,34e34 90ih6kj4 h5k6vlh4N.,6,45wikuyi3yere..3487 m 13,23"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; +} +/* FAIL ??? +TEST_F(SvgPathGeomTest, testReadErrorStopReading) +{ + char const *path_str; + Geom::PathVector pv; + // Unrecognized parameter + path_str = "M 1,2 4,2 4,8 1,8 z m #$%,23,34"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Invalid parameter + path_str = "M 1,2 4,2 4,8 1,8 z m #$%,23,34"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + // Illformed parameter + path_str = "M 1,2 4,2 4,8 1,8 z m +-12,23,34"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvclosed)) << path_str; + + // "Third" parameter + path_str = "M 1,2 4,2 4,8 1,8 1,2,3 M 12,23"; + pv = sp_svg_read_pathv(path_str); + ASSERT_TRUE(bpathEqual(pv, rectanglepvopen)) << path_str; +} +*/ + +TEST_F(SvgPathGeomTest, testRoundTrip) +{ + // This is the easiest way to (also) test writing path data, as a path can be written in more than one way. + Geom::PathVector pv; + Geom::PathVector new_pv; + std::string org_path_str; + std::string path_str; + // Rectangle (closed) + org_path_str = rectanglesAbsoluteClosed[0]; + pv = sp_svg_read_pathv(org_path_str.c_str()); + path_str = sp_svg_write_path(pv); + new_pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, new_pv)) << org_path_str.c_str(); + // Rectangle (open) + org_path_str = rectanglesAbsoluteOpen[0]; + pv = sp_svg_read_pathv(org_path_str.c_str()); + path_str = sp_svg_write_path(pv); + new_pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, new_pv)) << org_path_str.c_str(); + // Concatenated rectangles + org_path_str = rectanglesAbsoluteClosed[0] + rectanglesRelativeOpen[0] + rectanglesRelativeClosed[0] + + rectanglesAbsoluteOpen[0]; + pv = sp_svg_read_pathv(org_path_str.c_str()); + path_str = sp_svg_write_path(pv); + new_pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, new_pv)) << org_path_str.c_str(); + // Zero-length subpaths + org_path_str = "M 0,0 M 1,1 L 2,2 M 3,3 z M 4,4 L 5,5 z M 6,6"; + pv = sp_svg_read_pathv(org_path_str.c_str()); + path_str = sp_svg_write_path(pv); + new_pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, new_pv)) << org_path_str.c_str(); + // Floating-point + org_path_str = "M .01,.02 L 0.04,0.02 L.04,.08L0.01,0.08 z" + "M 1e-2,.2e-1 L 0.004e1,0.0002e+2 L04E-2,.08e0L1.0e-2,80e-3 z"; + pv = sp_svg_read_pathv(org_path_str.c_str()); + path_str = sp_svg_write_path(pv); + new_pv = sp_svg_read_pathv(path_str.c_str()); + ASSERT_TRUE(bpathEqual(pv, new_pv, 1e-17)) << org_path_str.c_str(); +} + +/* + * Please do not change my prefs or put them back after :( + * also, fails. + +TEST_F(SvgPathGeomTest, testMinexpPrecision) +{ + Geom::PathVector pv; + char *path_str; + // Default values + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/options/svgoutput/allowrelativecoordinates", true); + prefs->setBool("/options/svgoutput/forcerepeatcommands", false); + prefs->setInt("/options/svgoutput/numericprecision", 8); + prefs->setInt("/options/svgoutput/minimumexponent", -8); + pv = sp_svg_read_pathv("M 123456781,1.23456781e-8 L 123456782,1.23456782e-8 L 123456785,1.23456785e-8 L +10123456400,1.23456785e-8 L 123456789,1.23456789e-8 L 123456789,101.234564e-8 L 123456789,1.23456789e-8"); path_str = +sp_svg_write_path(pv); ASSERT_FALSE( strcmp("m 123456780,1.2345678e-8 0,0 10,1e-15 9999999210,0 -9999999210,0 +0,9.99999921e-7 0,-9.99999921e-7" , path_str )); g_free(path_str); +}*/ + +// vim: filetype=cpp:expandtab:shiftwidth=4:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/svg-stringstream-test.cpp b/testfiles/src/svg-stringstream-test.cpp new file mode 100644 index 0000000..636b018 --- /dev/null +++ b/testfiles/src/svg-stringstream-test.cpp @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test CSSOStringStream and SVGOStringStream + */ +/* + * Authors: + * Thomas Holder + * + * Copyright (C) 2019 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "2geom/point.h" +#include "svg/css-ostringstream.h" +#include "svg/stringstream.h" + +#include "gtest/gtest.h" +#include <glibmm/ustring.h> + +template <typename S, typename T> +static void assert_tostring_eq(T value, const char *expected) +{ + S os; + + // default of /options/svgoutput/numericprecision + os.precision(8); + + os << value; + ASSERT_EQ(os.str(), expected); +} + +#define TEST_STRING "Hello & <World>" + +template <typename S> +void test_tostring() +{ + assert_tostring_eq<S, char>('A', "A"); + assert_tostring_eq<S, signed char>('A', "A"); + assert_tostring_eq<S, unsigned char>('A', "A"); + + assert_tostring_eq<S, short>(0x7FFF, "32767"); + assert_tostring_eq<S, short>(-30000, "-30000"); + assert_tostring_eq<S, unsigned short>(0xFFFFu, "65535"); + assert_tostring_eq<S, int>(0x7FFFFFFF, "2147483647"); + assert_tostring_eq<S, int>(-2000000000, "-2000000000"); + assert_tostring_eq<S, unsigned int>(0xFFFFFFFFu, "4294967295"); + + // long is 32bit on Windows, 64bit on Linux + assert_tostring_eq<S, long>(0x7FFFFFFFL, "2147483647"); + assert_tostring_eq<S, long>(-2000000000L, "-2000000000"); + assert_tostring_eq<S, unsigned long>(0xFFFFFFFFuL, "4294967295"); + + assert_tostring_eq<S>((char const *)TEST_STRING, TEST_STRING); + assert_tostring_eq<S>((signed char const *)TEST_STRING, TEST_STRING); + assert_tostring_eq<S>((unsigned char const *)TEST_STRING, TEST_STRING); + assert_tostring_eq<S, std::string>(TEST_STRING, TEST_STRING); + assert_tostring_eq<S, Glib::ustring>(TEST_STRING, TEST_STRING); +} + +TEST(CSSOStringStreamTest, tostring) +{ + using S = Inkscape::CSSOStringStream; + + test_tostring<S>(); + + // float has 6 significant digits + assert_tostring_eq<S, float>(0.0, "0"); + assert_tostring_eq<S, float>(4.5, "4.5"); + assert_tostring_eq<S, float>(-4.0, "-4"); + assert_tostring_eq<S, float>(0.001, "0.001"); + assert_tostring_eq<S, float>(0.00123456, "0.00123456"); + assert_tostring_eq<S, float>(-0.00123456, "-0.00123456"); + assert_tostring_eq<S, float>(-1234560.0, "-1234560"); + + // double has 15 significant digits + assert_tostring_eq<S, double>(0.0, "0"); + assert_tostring_eq<S, double>(4.5, "4.5"); + assert_tostring_eq<S, double>(-4.0, "-4"); + assert_tostring_eq<S, double>(0.001, "0.001"); + + // 9 significant digits + assert_tostring_eq<S, double>(1.23456789, "1.23456789"); + assert_tostring_eq<S, double>(-1.23456789, "-1.23456789"); + assert_tostring_eq<S, double>(12345678.9, "12345678.9"); + assert_tostring_eq<S, double>(-12345678.9, "-12345678.9"); + + assert_tostring_eq<S, double>(1.234e-12, "0"); + assert_tostring_eq<S, double>(3e9, "3000000000"); + assert_tostring_eq<S, double>(-3.5e9, "-3500000000"); +} + +TEST(SVGOStringStreamTest, tostring) +{ + using S = Inkscape::SVGOStringStream; + + test_tostring<S>(); + + assert_tostring_eq<S>(Geom::Point(12, 3.4), "12,3.4"); + + // float has 6 significant digits + assert_tostring_eq<S, float>(0.0, "0"); + assert_tostring_eq<S, float>(4.5, "4.5"); + assert_tostring_eq<S, float>(-4.0, "-4"); + assert_tostring_eq<S, float>(0.001, "0.001"); + assert_tostring_eq<S, float>(0.00123456, "0.00123456"); + assert_tostring_eq<S, float>(-0.00123456, "-0.00123456"); + assert_tostring_eq<S, float>(-1234560.0, "-1234560"); + + // double has 15 significant digits + assert_tostring_eq<S, double>(0.0, "0"); + assert_tostring_eq<S, double>(4.5, "4.5"); + assert_tostring_eq<S, double>(-4.0, "-4"); + assert_tostring_eq<S, double>(0.001, "0.001"); + + // 8 significant digits + assert_tostring_eq<S, double>(1.23456789, "1.2345679"); + assert_tostring_eq<S, double>(-1.23456789, "-1.2345679"); + assert_tostring_eq<S, double>(12345678.9, "12345679"); + assert_tostring_eq<S, double>(-12345678.9, "-12345679"); + + assert_tostring_eq<S, double>(1.234e-12, "1.234e-12"); + assert_tostring_eq<S, double>(3e9, "3e+09"); + assert_tostring_eq<S, double>(-3.5e9, "-3.5e+09"); +} + +template <typename S> +void test_concat() +{ + S s; + s << "hello, "; + s << -53.5; + ASSERT_EQ(s.str(), std::string("hello, -53.5")); +} + +TEST(CSSOStringStreamTest, concat) +{ // + test_concat<Inkscape::CSSOStringStream>(); +} + +TEST(SVGOStringStreamTest, concat) +{ // + test_concat<Inkscape::SVGOStringStream>(); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/uri-test.cpp b/testfiles/src/uri-test.cpp new file mode 100644 index 0000000..91af2e7 --- /dev/null +++ b/testfiles/src/uri-test.cpp @@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test Inkscape::URI + */ +/* + * Authors: + * Thomas Holder + * + * Copyright (C) 2018 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "object/uri.h" +#include "gtest/gtest.h" + +using Inkscape::URI; + +#define BASE64_HELLO_WORLD_P1 "SGVsbG8g" +#define BASE64_HELLO_WORLD_P2 "V29ybGQ=" +#define DATA_BASE64_HEADER "data:text/plain;charset=utf-8;base64," +char const *DATA_BASE64_HELLO_WORLD = DATA_BASE64_HEADER BASE64_HELLO_WORLD_P1 BASE64_HELLO_WORLD_P2; +char const *DATA_BASE64_HELLO_WORLD_WRAPPED = DATA_BASE64_HEADER BASE64_HELLO_WORLD_P1 "\n" BASE64_HELLO_WORLD_P2; + +char const *win_url_unc = "file://laptop/My%20Documents/FileSchemeURIs.doc"; +char const *win_url_local = "file:///C:/Documents%20and%20Settings/davris/FileSchemeURIs.doc"; +char const *win_filename_local = "C:\\Documents and Settings\\davris\\FileSchemeURIs.doc"; + +TEST(UriTest, Malformed) +{ + ASSERT_ANY_THROW(URI(nullptr)); + ASSERT_ANY_THROW(URI("nonhex-%XX")); +} + +TEST(UriTest, GetPath) +{ + ASSERT_STREQ(URI().getPath(), nullptr); + ASSERT_STREQ(URI("foo.svg").getPath(), "foo.svg"); + ASSERT_STREQ(URI("foo.svg#bar").getPath(), "foo.svg"); + ASSERT_STREQ(URI("#bar").getPath(), nullptr); + ASSERT_STREQ(URI("scheme://host").getPath(), nullptr); + ASSERT_STREQ(URI("scheme://host/path").getPath(), "/path"); + ASSERT_STREQ(URI("scheme://host/path?query").getPath(), "/path"); + ASSERT_STREQ(URI("scheme:/path").getPath(), "/path"); +} + +TEST(UriTest, FromDir) +{ +#ifdef _WIN32 + ASSERT_EQ(URI::from_dirname("C:\\tmp").str(), "file:///C:/tmp/"); + ASSERT_EQ(URI::from_dirname("C:\\").str(), "file:///C:/"); + ASSERT_EQ(URI::from_href_and_basedir("uri.svg", "C:\\tmp").str(), "file:///C:/tmp/uri.svg"); +#else + ASSERT_EQ(URI::from_dirname("/").str(), "file:///"); + ASSERT_EQ(URI::from_dirname("/tmp").str(), "file:///tmp/"); + ASSERT_EQ(URI::from_href_and_basedir("uri.svg", "/tmp").str(), "file:///tmp/uri.svg"); +#endif +} + +TEST(UriTest, Str) +{ + ASSERT_EQ(URI().str(), ""); + ASSERT_EQ(URI("").str(), ""); + ASSERT_EQ(URI("", "http://a/b").str(), "http://a/b"); + + ASSERT_EQ(URI("uri.svg").str(), "uri.svg"); + ASSERT_EQ(URI("tmp/uri.svg").str(), "tmp/uri.svg"); + ASSERT_EQ(URI("/tmp/uri.svg").str(), "/tmp/uri.svg"); + ASSERT_EQ(URI("../uri.svg").str(), "../uri.svg"); + + ASSERT_EQ(URI("file:///tmp/uri.svg").str(), "file:///tmp/uri.svg"); + ASSERT_EQ(URI("uri.svg", "file:///tmp/").str(), "file:///tmp/uri.svg"); + ASSERT_EQ(URI("file:///tmp/uri.svg").str("file:///tmp/"), "uri.svg"); + ASSERT_EQ(URI("file:///tmp/up/uri.svg").str("file:///tmp/"), "up/uri.svg"); + ASSERT_EQ(URI("file:///tmp/uri.svg").str("file:///tmp/up/"), "../uri.svg"); + ASSERT_EQ(URI("file:///tmp/uri.svg").str("http://web/url"), "file:///tmp/uri.svg"); + ASSERT_EQ(URI("file:///tmp/uri.svg").str("http://web/url"), "file:///tmp/uri.svg"); + ASSERT_EQ(URI("foo/uri.svg", "http://web/a/b/c").str(), "http://web/a/b/foo/uri.svg"); + ASSERT_EQ(URI("foo/uri.svg", "http://web/a/b/c").str("http://web/a/"), "b/foo/uri.svg"); + ASSERT_EQ(URI("foo/uri.svg", "http://web/a/b/c").str("http://other/a/"), "http://web/a/b/foo/uri.svg"); + + ASSERT_EQ(URI("http://web/").str("http://web/"), ""); + ASSERT_EQ(URI("http://web/").str("http://web/url"), "./"); + + // special case: don't cross filesystem root + ASSERT_EQ(URI("file:///a").str("file:///"), "a"); + ASSERT_EQ(URI("file:///ax/b").str("file:///ay/"), "file:///ax/b"); // special case + ASSERT_EQ(URI("file:///C:/b").str("file:///D:/"), "file:///C:/b"); // special case + ASSERT_EQ(URI("file:///C:/a/b").str("file:///C:/b/"), "../a/b"); + + ASSERT_EQ(URI(win_url_unc).str(), win_url_unc); + ASSERT_EQ(URI(win_url_unc).str("file://laptop/My%20Documents/"), "FileSchemeURIs.doc"); + ASSERT_EQ(URI(win_url_local).str(), win_url_local); + ASSERT_EQ(URI(win_url_local).str("file:///C:/Documents%20and%20Settings/"), "davris/FileSchemeURIs.doc"); + ASSERT_EQ(URI(win_url_local).str(win_url_unc), win_url_local); +#ifdef _WIN32 + ASSERT_EQ(URI(win_url_local).toNativeFilename(), win_filename_local); +#else + ASSERT_EQ(URI("file:///tmp/uri.svg").toNativeFilename(), "/tmp/uri.svg"); + ASSERT_EQ(URI("file:///tmp/x%20y.svg").toNativeFilename(), "/tmp/x y.svg"); + ASSERT_EQ(URI("file:///a/b#hash").toNativeFilename(), "/a/b"); +#endif + + ASSERT_ANY_THROW(URI("http://a/b").toNativeFilename()); +} + +TEST(UriTest, StrDataScheme) +{ + ASSERT_EQ(URI("data:,text").str(), "data:,text"); + ASSERT_EQ(URI("data:,white%20space").str(), "data:,white%20space"); + ASSERT_EQ(URI("data:,umlaut-%C3%96").str(), "data:,umlaut-%C3%96"); + ASSERT_EQ(URI(DATA_BASE64_HELLO_WORLD).str(), DATA_BASE64_HELLO_WORLD); +} + +TEST(UriTest, Escape) +{ + ASSERT_EQ(URI("data:,white space").str(), "data:,white%20space"); + ASSERT_EQ(URI("data:,white\nspace").str(), "data:,white%0Aspace"); + ASSERT_EQ(URI("data:,umlaut-\xC3\x96").str(), "data:,umlaut-%C3%96"); +} + +TEST(UriTest, GetContents) +{ + ASSERT_EQ(URI("data:,white space").getContents(), "white space"); + ASSERT_EQ(URI("data:,white%20space").getContents(), "white space"); + ASSERT_EQ(URI("data:,white\nspace").getContents(), "white\nspace"); + ASSERT_EQ(URI("data:,white%0Aspace").getContents(), "white\nspace"); + ASSERT_EQ(URI("data:,umlaut-%C3%96").getContents(), "umlaut-\xC3\x96"); + ASSERT_EQ(URI(DATA_BASE64_HELLO_WORLD).getContents(), "Hello World"); + ASSERT_EQ(URI(DATA_BASE64_HELLO_WORLD_WRAPPED).getContents(), "Hello World"); + + ASSERT_ANY_THROW(URI().getContents()); +} + +TEST(UriTest, CssStr) +{ + ASSERT_EQ(URI("file:///tmp/uri.svg").cssStr(), "url(file:///tmp/uri.svg)"); + ASSERT_EQ(URI("uri.svg").cssStr(), "url(uri.svg)"); +} + +TEST(UriTest, GetMimeType) +{ + ASSERT_EQ(URI("data:image/png;base64,").getMimeType(), "image/png"); + ASSERT_EQ(URI("data:text/plain,xxx").getMimeType(), "text/plain"); + ASSERT_EQ(URI("file:///tmp/uri.png").getMimeType(), "image/png"); + ASSERT_EQ(URI("uri.png").getMimeType(), "image/png"); + ASSERT_EQ(URI("uri.svg").getMimeType(), "image/svg+xml"); + + // can be "text/plain" or "text/*" + ASSERT_EQ(URI("file:///tmp/uri.txt").getMimeType().substr(0, 5), "text/"); +} + +TEST(UriTest, HasScheme) +{ + ASSERT_FALSE(URI().hasScheme("file")); + ASSERT_FALSE(URI("uri.svg").hasScheme("file")); + ASSERT_FALSE(URI("uri.svg").hasScheme("data")); + + ASSERT_TRUE(URI("file:///uri.svg").hasScheme("file")); + ASSERT_TRUE(URI("FILE:///uri.svg").hasScheme("file")); + ASSERT_FALSE(URI("file:///uri.svg").hasScheme("data")); + + ASSERT_TRUE(URI("data:,").hasScheme("data")); + ASSERT_TRUE(URI("DaTa:,").hasScheme("data")); + ASSERT_FALSE(URI("data:,").hasScheme("file")); + + ASSERT_TRUE(URI("http://web/").hasScheme("http")); + ASSERT_FALSE(URI("http://web/").hasScheme("file")); + + ASSERT_TRUE(URI::from_href_and_basedir("data:,white\nspace", "/tmp").hasScheme("data")); +} + +TEST(UriTest, isOpaque) +{ + ASSERT_FALSE(URI().isOpaque()); + ASSERT_FALSE(URI("file:///uri.svg").isOpaque()); + ASSERT_FALSE(URI("/uri.svg").isOpaque()); + ASSERT_FALSE(URI("uri.svg").isOpaque()); + ASSERT_FALSE(URI("foo://bar/baz").isOpaque()); + ASSERT_FALSE(URI("foo://bar").isOpaque()); + ASSERT_FALSE(URI("foo:/bar").isOpaque()); + + ASSERT_TRUE(URI("foo:bar").isOpaque()); + ASSERT_TRUE(URI("mailto:user@host.xy").isOpaque()); + ASSERT_TRUE(URI("news:comp.lang.java").isOpaque()); +} + +TEST(UriTest, isRelative) +{ + ASSERT_TRUE(URI().isRelative()); + + ASSERT_FALSE(URI("http://web/uri.svg").isRelative()); + ASSERT_FALSE(URI("file:///uri.svg").isRelative()); + ASSERT_FALSE(URI("mailto:user@host.xy").isRelative()); + ASSERT_FALSE(URI("data:,").isRelative()); + + ASSERT_TRUE(URI("//web/uri.svg").isRelative()); + ASSERT_TRUE(URI("/uri.svg").isRelative()); + ASSERT_TRUE(URI("uri.svg").isRelative()); + ASSERT_TRUE(URI("./uri.svg").isRelative()); + ASSERT_TRUE(URI("../uri.svg").isRelative()); +} + +TEST(UriTest, isNetPath) +{ + ASSERT_FALSE(URI().isNetPath()); + ASSERT_FALSE(URI("http://web/uri.svg").isNetPath()); + ASSERT_FALSE(URI("file:///uri.svg").isNetPath()); + ASSERT_FALSE(URI("/uri.svg").isNetPath()); + ASSERT_FALSE(URI("uri.svg").isNetPath()); + + ASSERT_TRUE(URI("//web/uri.svg").isNetPath()); +} + +TEST(UriTest, isRelativePath) +{ + ASSERT_FALSE(URI("foo:bar").isRelativePath()); + ASSERT_TRUE(URI("foo%3Abar").isRelativePath()); + + ASSERT_FALSE(URI("http://web/uri.svg").isRelativePath()); + ASSERT_FALSE(URI("//web/uri.svg").isRelativePath()); + ASSERT_FALSE(URI("/uri.svg").isRelativePath()); + + ASSERT_TRUE(URI("uri.svg").isRelativePath()); + ASSERT_TRUE(URI("./uri.svg").isRelativePath()); + ASSERT_TRUE(URI("../uri.svg").isRelativePath()); +} + +TEST(UriTest, isAbsolutePath) +{ + ASSERT_FALSE(URI().isAbsolutePath()); + ASSERT_FALSE(URI("http://web/uri.svg").isAbsolutePath()); + ASSERT_FALSE(URI("//web/uri.svg").isAbsolutePath()); + ASSERT_FALSE(URI("uri.svg").isAbsolutePath()); + ASSERT_FALSE(URI("../uri.svg").isAbsolutePath()); + + ASSERT_TRUE(URI("/uri.svg").isAbsolutePath()); +} + +TEST(UriTest, getScheme) +{ + ASSERT_STREQ(URI().getScheme(), nullptr); + + ASSERT_STREQ(URI("https://web/uri.svg").getScheme(), "https"); + ASSERT_STREQ(URI("file:///uri.svg").getScheme(), "file"); + ASSERT_STREQ(URI("data:,").getScheme(), "data"); + + ASSERT_STREQ(URI("data").getScheme(), nullptr); +} + +TEST(UriTest, getQuery) +{ + ASSERT_STREQ(URI().getQuery(), nullptr); + ASSERT_STREQ(URI("uri.svg?a=b&c=d").getQuery(), "a=b&c=d"); + ASSERT_STREQ(URI("?a=b&c=d#hash").getQuery(), "a=b&c=d"); +} + +TEST(UriTest, getFragment) +{ + ASSERT_STREQ(URI().getFragment(), nullptr); + ASSERT_STREQ(URI("uri.svg").getFragment(), nullptr); + ASSERT_STREQ(URI("uri.svg#hash").getFragment(), "hash"); + ASSERT_STREQ(URI("?a=b&c=d#hash").getFragment(), "hash"); + ASSERT_STREQ(URI("urn:isbn:096139210x#hash").getFragment(), "hash"); +} + +TEST(UriTest, getOpaque) +{ + ASSERT_STREQ(URI().getOpaque(), nullptr); + ASSERT_STREQ(URI("urn:isbn:096139210x#hash").getOpaque(), "isbn:096139210x"); + ASSERT_STREQ(URI("data:,foo").getOpaque(), ",foo"); +} + +TEST(UriTest, from_native_filename) +{ +#ifdef _WIN32 + ASSERT_EQ(URI::from_native_filename(win_filename_local).str(), win_url_local); +#else + ASSERT_EQ(URI::from_native_filename("/tmp/uri.svg").str(), "file:///tmp/uri.svg"); + ASSERT_EQ(URI::from_native_filename("/tmp/x y.svg").str(), "file:///tmp/x%20y.svg"); +#endif +} + +TEST(UriTest, uri_to_iri) +{ + // unescape UTF-8 (U+00D6) + ASSERT_EQ(Inkscape::uri_to_iri("data:,umlaut-%C3%96"), "data:,umlaut-\xC3\x96"); + // don't unescape ASCII (U+003A) + ASSERT_EQ(Inkscape::uri_to_iri("foo%3Abar"), "foo%3Abar"); + // sequence (U+00D6 U+1F37A U+003A) + ASSERT_EQ(Inkscape::uri_to_iri("%C3%96%F0%9F%8D%BA%3A"), "\xC3\x96\xF0\x9F\x8D\xBA%3A"); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/util-test.cpp b/testfiles/src/util-test.cpp new file mode 100644 index 0000000..785e3d3 --- /dev/null +++ b/testfiles/src/util-test.cpp @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test utilities from src/util + */ +/* + * Authors: + * Thomas Holder + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" +#include "util/longest-common-suffix.h" + +TEST(UtilTest, NearestCommonAncestor) +{ +#define nearest_common_ancestor(a, b, c) \ + Inkscape::Algorithms::nearest_common_ancestor(a, b, c) + + // simple node with a parent + struct Node + { + Node const *parent; + Node(Node const *p) : parent(p){}; + Node(Node const &other) = delete; + }; + + // iterator which traverses towards the root node + struct iter + { + Node const *node; + iter(Node const &n) : node(&n) {} + bool operator==(iter const &rhs) const { return node == rhs.node; } + bool operator!=(iter const &rhs) const { return node != rhs.node; } + iter &operator++() + { + node = node->parent; + return *this; + } + + // TODO remove, the implementation should not require this + Node const &operator*() const { return *node; } + }; + + // construct a tree + auto const node0 = Node(nullptr); + auto const node1 = Node(&node0); + auto const node2 = Node(&node1); + auto const node3a = Node(&node2); + auto const node4a = Node(&node3a); + auto const node5a = Node(&node4a); + auto const node3b = Node(&node2); + auto const node4b = Node(&node3b); + auto const node5b = Node(&node4b); + + // start at each node from 5a to 0 (first argument) + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node5b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node4a), iter(node5b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node3a), iter(node5b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node2), iter(node5b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node1), iter(node5b), iter(node0)), iter(node1)); + ASSERT_EQ(nearest_common_ancestor(iter(node0), iter(node5b), iter(node0)), iter(node0)); + + // start at each node from 5b to 0 (second argument) + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node5b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node4b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node3b), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node2), iter(node0)), iter(node2)); + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node1), iter(node0)), iter(node1)); + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node0), iter(node0)), iter(node0)); + + // identity (special case in implementation) + ASSERT_EQ(nearest_common_ancestor(iter(node5a), iter(node5a), iter(node0)), iter(node5a)); + + // identical parents (special case in implementation) + ASSERT_EQ(nearest_common_ancestor(iter(node3a), iter(node3b), iter(node0)), iter(node2)); +} + +// vim: filetype=cpp:expandtab:shiftwidth=4:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/src/xml-test.cpp b/testfiles/src/xml-test.cpp new file mode 100644 index 0000000..dee272d --- /dev/null +++ b/testfiles/src/xml-test.cpp @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Test xml node + */ +/* + * Authors: + * Ted Gould + * + * Copyright (C) 2020 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" +#include "xml/repr.h" + +TEST(XmlTest, nodeiter) +{ + auto testdoc = std::shared_ptr<Inkscape::XML::Document>(sp_repr_read_buf("<svg><g/></svg>", SP_SVG_NS_URI)); + ASSERT_TRUE(testdoc); + + auto count = 0; + for (auto &child : *testdoc->root()) { + ASSERT_STREQ(child.name(), "svg:g"); + count++; + } + ASSERT_EQ(count, 1); + + testdoc = + std::shared_ptr<Inkscape::XML::Document>(sp_repr_read_buf("<svg><g/><g/><g><g/></g></svg>", SP_SVG_NS_URI)); + ASSERT_TRUE(testdoc); + + count = 0; + for (auto &child : *testdoc->root()) { + ASSERT_STREQ(child.name(), "svg:g"); + count++; + } + ASSERT_EQ(count, 3); + + testdoc = std::shared_ptr<Inkscape::XML::Document>(sp_repr_read_buf(R"""( +<svg> + <g/> + <!-- comment --> + <g> + <circle/> + </g> + <g> + <circle id='a'/> + <path id='b'/> + <path id='c'/> + </g> +</svg> +)""", SP_SVG_NS_URI)); + ASSERT_TRUE(testdoc); + + auto path = std::list<std::string>{"svg:g", "svg:path"}; + auto found = testdoc->root()->findChildPath(path); + ASSERT_NE(found, nullptr); + ASSERT_STREQ(found->attribute("id"), "b"); + + // no such second element + path = {"svg:g", "svg:g"}; + ASSERT_EQ(testdoc->root()->findChildPath(path), nullptr); + + // no such first element + path = {"svg:symbol", "svg:path"}; + ASSERT_EQ(testdoc->root()->findChildPath(path), nullptr); + + // root with no children + testdoc = std::shared_ptr<Inkscape::XML::Document>(sp_repr_read_buf("<svg/>", SP_SVG_NS_URI)); + ASSERT_EQ(testdoc->root()->findChildPath(path), nullptr); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/testfiles/unittest.cpp b/testfiles/unittest.cpp new file mode 100644 index 0000000..cee75be --- /dev/null +++ b/testfiles/unittest.cpp @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Unit test main. + * + * Author: + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2015 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "gtest/gtest.h" + +#include <glib.h> + +#include "inkgc/gc-core.h" +#include "inkscape.h" + +#include <giomm/init.h> + +int main(int argc, char **argv) { + + // setup general environment +#if !GLIB_CHECK_VERSION(2,36,0) + g_type_init(); +#endif + + // If possible, unit tests shouldn't require a GUI session + // since this won't generally be available in auto-builders + + Gio::init(); + + Inkscape::GC::init(); + + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : |