diff --git a/CHANGELOG.md b/CHANGELOG.md index 571db49a1..162d4901b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,12 @@ For a complete change history, see the git log. ## Future +- Added `webp` image encoding and decoding support (#1955) + - Added `premultiplied` property on mapnik::image_32 / mapnik.Image to enable knowledge of premultiplied status of image buffer. +- Added `scale-hsla` image-filter that allows scaling colors in HSL color space. RGB is converted to HSL (hue-saturation-lightness) and then each value (and the original alpha value) is stretched based on the specified scaling values. An example syntax is `scale-hsla(0,1,0,1,0,1,0,1)` which means no change because the full range will be kept (0 for lowest, 1 for highest). Other examples are: 1) `scale-hsla(0,0,0,1,0,1,0,1)` which would force all colors to be red in hue in the same way `scale-hsla(1,1,0,1,0,1,0,1)` would, 2) `scale-hsla(0,1,1,1,0,1,0,1)` which would cause all colors to become fully saturated, 3) `scale-hsla(0,1,1,1,0,1,.5,1)` which would force no colors to be any more transparent than half, and 4) `scale-hsla(0,1,1,1,0,1,0,.5)` which would force all colors to be at least half transparent. (#1954) + ## 2.2.0 Released June 3rd, 2013 diff --git a/INSTALL.md b/INSTALL.md index bde1b50ef..e7b2aeddd 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,22 +48,26 @@ Mapnik Core depends on: - regex (optionally built with icu regex support) - program_options (optionally for mapnik command line programs) * libicuuc >= 4.0 (ideally >= 4.2) - International Components for Unicode - * libpng >= 1.2.x - PNG graphics - * libjpeg - JPEG graphics - * libtiff - TIFF graphics * libz - Zlib compression * libfreetype - Freetype2 for font support (Install requires freetype-config) * libxml2 - XML parsing (Install requires xml2-config) - * libproj - PROJ.4 projection library + +Mapnik Core optionally depends on: + + * libpng >= 1.2.x - PNG graphics (Default enabled, if found) + * libjpeg - JPEG graphics (Default enabled, if found) + * libtiff - TIFF graphics (Default enabled, if found) + * libwebp - WEBP graphics (Default enabled, if found) + * libproj - PROJ.4 projection library (Default enabled, if found) Mapnik Python bindings depend on: * Python 2.5-2.7 or >= 3.2 * Boost python -Note: Python3k is supported, see: https://github.com/mapnik/mapnik/wiki/Python3k +Note: Python 3.x is supported, see: https://github.com/mapnik/mapnik/wiki/Python3k -Optional dependencies: +Additional optional dependencies: * Cairo >= 1.6.0 - Graphics library for output formats like PDF, PS, and SVG - pkg-config - Required for building with cairo support diff --git a/SConstruct b/SConstruct index 5ff70060c..efb424080 100644 --- a/SConstruct +++ b/SConstruct @@ -73,6 +73,7 @@ pretty_dep_names = { 'jpeg':'JPEG C library | configure with JPEG_LIBS & JPEG_INCLUDES', 'tiff':'TIFF C library | configure with TIFF_LIBS & TIFF_INCLUDES', 'png':'PNG C library | configure with PNG_LIBS & PNG_INCLUDES', + 'webp':'WEBP C library | configure with WEBP_LIBS & WEBP_INCLUDES', 'icuuc':'ICU C++ library | configure with ICU_LIBS & ICU_INCLUDES or use ICU_LIB_NAME to specify custom lib name | more info: http://site.icu-project.org/', 'z':'Z compression library | more info: http://www.zlib.net/', 'm':'Basic math library, part of C++ stlib', @@ -325,6 +326,9 @@ opts.AddVariables( BoolVariable('TIFF', 'Build Mapnik with TIFF read and write support', 'True'), PathVariable('TIFF_INCLUDES', 'Search path for libtiff include files', '/usr/include', PathVariable.PathAccept), PathVariable('TIFF_LIBS', 'Search path for libtiff library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept), + BoolVariable('WEBP', 'Build Mapnik with WEBP read', 'True'), + PathVariable('WEBP_INCLUDES', 'Search path for libwebp include files', '/usr/include', PathVariable.PathAccept), + PathVariable('WEBP_LIBS','Search path for libwebp library files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept), BoolVariable('PROJ', 'Build Mapnik with proj4 support to enable transformations between many different projections', 'True'), PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept), PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept), @@ -1193,7 +1197,7 @@ if not preconfigured: if env['JPEG']: env.Append(CPPDEFINES = '-DHAVE_JPEG') - LIBSHEADERS.append(['jpeg', ['stdio.h', 'jpeglib.h'], True,'C']) + LIBSHEADERS.append(['jpeg', ['stdio.h', 'jpeglib.h'], False,'C']) inc_path = env['%s_INCLUDES' % 'JPEG'] lib_path = env['%s_LIBS' % 'JPEG'] env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) @@ -1203,7 +1207,7 @@ if not preconfigured: if env['PROJ']: env.Append(CPPDEFINES = '-DMAPNIK_USE_PROJ4') - LIBSHEADERS.append(['proj', 'proj_api.h', True,'C']) + LIBSHEADERS.append(['proj', 'proj_api.h', False,'C']) inc_path = env['%s_INCLUDES' % 'PROJ'] lib_path = env['%s_LIBS' % 'PROJ'] env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) @@ -1213,7 +1217,7 @@ if not preconfigured: if env['PNG']: env.Append(CPPDEFINES = '-DHAVE_PNG') - LIBSHEADERS.append(['png', 'png.h', True,'C']) + LIBSHEADERS.append(['png', 'png.h', False,'C']) inc_path = env['%s_INCLUDES' % 'PNG'] lib_path = env['%s_LIBS' % 'PNG'] env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) @@ -1221,9 +1225,19 @@ if not preconfigured: else: env['SKIPPED_DEPS'].extend(['png']) + if env['WEBP']: + env.Append(CPPDEFINES = '-DHAVE_WEBP') + LIBSHEADERS.append(['webp', 'webp/decode.h', False,'C']) + inc_path = env['%s_INCLUDES' % 'WEBP'] + lib_path = env['%s_LIBS' % 'WEBP'] + env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) + env.AppendUnique(LIBPATH = os.path.realpath(lib_path)) + else: + env['SKIPPED_DEPS'].extend(['webp']) + if env['TIFF']: env.Append(CPPDEFINES = '-DHAVE_TIFF') - LIBSHEADERS.append(['tiff', 'tiff.h', True,'C']) + LIBSHEADERS.append(['tiff', 'tiff.h', False,'C']) inc_path = env['%s_INCLUDES' % 'TIFF'] lib_path = env['%s_LIBS' % 'TIFF'] env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) diff --git a/include/mapnik/filter_featureset.hpp b/include/mapnik/filter_featureset.hpp index b02cf3507..4b4041c4f 100644 --- a/include/mapnik/filter_featureset.hpp +++ b/include/mapnik/filter_featureset.hpp @@ -35,7 +35,7 @@ class filter_featureset : public Featureset typedef T filter_type; public: - filter_featureset(featureset_ptr fs, filter_type const& filter) + filter_featureset(featureset_ptr const& fs, filter_type const& filter) : fs_(fs), filter_(filter) {} feature_ptr next() diff --git a/include/mapnik/image_filter.hpp b/include/mapnik/image_filter.hpp index a2d983632..ca7bd811e 100644 --- a/include/mapnik/image_filter.hpp +++ b/include/mapnik/image_filter.hpp @@ -486,9 +486,8 @@ void apply_filter(Src & src, colorize_alpha const& op) } } -/* template -void apply_filter(Src & src, hsla const& transform) +void apply_filter(Src & src, scale_hsla const& transform) { using namespace boost::gil; bool tinting = !transform.is_identity(); @@ -507,16 +506,24 @@ void apply_filter(Src & src, hsla const& transform) uint8_t & g = get_color(src_it[x], green_t()); uint8_t & b = get_color(src_it[x], blue_t()); uint8_t & a = get_color(src_it[x], alpha_t()); - double a2 = a/255.0; + double a2 = static_cast(a)/255.0; double a1 = a2; + bool alpha_modified = false; if (set_alpha && a2 > 0.01) { a2 = transform.a0 + (a2 * (transform.a1 - transform.a0)); - a = static_cast(std::floor((a2 * 255.0) +.5)); - if (a > 255) a = 255; - if (a < 0) a = 0; + if (a2 <= 0) + { + a = 0; + } + else + { + a = static_cast(std::floor((a2 * 255.0) +.5)); + if (a > 255) a = 255; + } + alpha_modified = true; } - if (tinting && a2 > 0.01) + if (tinting && a > 1) { double h; double s; @@ -537,12 +544,12 @@ void apply_filter(Src & src, hsla const& transform) double h2 = transform.h0 + (h * (transform.h1 - transform.h0)); double s2 = transform.s0 + (s * (transform.s1 - transform.s0)); double l2 = transform.l0 + (l * (transform.l1 - transform.l0)); - if (h2 > 1) { std::clog << "h2: " << h2 << "\n"; h2 = 1; } - else if (h2 < 0) { std::clog << "h2: " << h2 << "\n"; h2 = 0; } - if (s2 > 1) { std::clog << "h2: " << h2 << "\n"; s2 = 1; } - else if (s2 < 0) { std::clog << "s2: " << s2 << "\n"; s2 = 0; } - if (l2 > 1) { std::clog << "h2: " << h2 << "\n"; l2 = 1; } - else if (l2 < 0) { std::clog << "l2: " << l2 << "\n"; l2 = 0; } + if (h2 > 1) { h2 = 1; } + else if (h2 < 0) { h2 = 0; } + if (s2 > 1) { s2 = 1; } + else if (s2 < 0) { s2 = 0; } + if (l2 > 1) { l2 = 1; } + else if (l2 < 0) { l2 = 0; } hsl2rgb(h2,s2,l2,r,g,b); // premultiply // we only work with premultiplied source, @@ -551,7 +558,7 @@ void apply_filter(Src & src, hsla const& transform) g *= a2; b *= a2; } - else + else if (alpha_modified) { // demultiply if (a1 <= 0.0) @@ -576,7 +583,6 @@ void apply_filter(Src & src, hsla const& transform) } } } -*/ template void apply_filter(Src & src, gray const& op) diff --git a/include/mapnik/image_filter_grammar.hpp b/include/mapnik/image_filter_grammar.hpp index 4f4523278..26156fbf1 100644 --- a/include/mapnik/image_filter_grammar.hpp +++ b/include/mapnik/image_filter_grammar.hpp @@ -67,8 +67,8 @@ struct image_filter_grammar : qi::rule start; qi::rule filter; qi::rule, void(ContType&), qi::ascii::space_type> agg_blur_filter; - //qi::rule, - // void(ContType&), qi::ascii::space_type> hsla_filter; + qi::rule, + void(ContType&), qi::ascii::space_type> scale_hsla_filter; qi::rule, void(ContType&), qi::ascii::space_type> colorize_alpha_filter; qi::rule no_args; qi::uint_parser< unsigned, 10, 1, 3 > radius_; diff --git a/include/mapnik/image_filter_types.hpp b/include/mapnik/image_filter_types.hpp index d464a30ce..e5f0b5db6 100644 --- a/include/mapnik/image_filter_types.hpp +++ b/include/mapnik/image_filter_types.hpp @@ -28,7 +28,6 @@ #include // boost #include -#include // stl #include #include @@ -54,10 +53,9 @@ struct agg_stack_blur unsigned ry; }; -/* -struct hsla +struct scale_hsla { - hsla(double _h0, double _h1, + scale_hsla(double _h0, double _h1, double _s0, double _s1, double _l0, double _l1, double _a0, double _a1) : @@ -81,14 +79,6 @@ struct hsla return (a0 == 0 && a1 == 1); } - std::string to_string() const { - std::ostringstream s; - s << h0 << "x" << h1 << ";" - << s0 << "x" << s1 << ";" - << l0 << "x" << l1 << ";" - << a0 << "x" << a1; - return s.str(); - } double h0; double h1; double s0; @@ -98,7 +88,6 @@ struct hsla double a0; double a1; }; -*/ struct color_stop { @@ -124,7 +113,7 @@ typedef boost::variant filter_type; inline std::ostream& operator<< (std::ostream& os, blur) @@ -145,16 +134,14 @@ inline std::ostream& operator<< (std::ostream& os, agg_stack_blur const& filter) return os; } -/* -inline std::ostream& operator<< (std::ostream& os, hsla const& filter) +inline std::ostream& operator<< (std::ostream& os, scale_hsla const& filter) { - os << "hsla(" << filter.h0 << 'x' << filter.h1 << ':' + os << "hsla-transform(" << filter.h0 << 'x' << filter.h1 << ':' << filter.s0 << 'x' << filter.s1 << ':' << filter.l0 << 'x' << filter.l1 << ':' << filter.a0 << 'x' << filter.a1 << ')'; return os; } -*/ inline std::ostream& operator<< (std::ostream& os, emboss) { @@ -198,7 +185,27 @@ inline std::ostream& operator<< (std::ostream& os, invert) return os; } -inline std::ostream& operator<< (std::ostream& os, filter_type const& filter); +template +struct to_string_visitor : boost::static_visitor +{ + to_string_visitor(Out & out) + : out_(out) {} + + template + void operator () (T const& filter_tag) + { + out_ << filter_tag; + } + + Out & out_; +}; + +inline std::ostream& operator<< (std::ostream& os, filter_type const& filter) +{ + to_string_visitor visitor(os); + boost::apply_visitor(visitor, filter); + return os; +} MAPNIK_DECL bool generate_image_filters(std::back_insert_iterator & sink, std::vector const& v); diff --git a/include/mapnik/image_util.hpp b/include/mapnik/image_util.hpp index 56c0fc847..8aa2415a3 100644 --- a/include/mapnik/image_util.hpp +++ b/include/mapnik/image_util.hpp @@ -147,6 +147,12 @@ inline bool is_ps (std::string const& filename) return boost::algorithm::iends_with(filename,std::string(".ps")); } +inline bool is_webp (std::string const& filename) +{ + return boost::algorithm::iends_with(filename,std::string(".webp")); +} + + inline boost::optional type_from_filename(std::string const& filename) { @@ -157,6 +163,7 @@ inline boost::optional type_from_filename(std::string const& filena if (is_pdf(filename)) return result_type("pdf"); if (is_svg(filename)) return result_type("svg"); if (is_ps(filename)) return result_type("ps"); + if (is_webp(filename)) return result_type("webp"); return result_type(); } diff --git a/include/mapnik/image_view.hpp b/include/mapnik/image_view.hpp index 4b788871f..b7bf54985 100644 --- a/include/mapnik/image_view.hpp +++ b/include/mapnik/image_view.hpp @@ -88,6 +88,12 @@ public: { return data_.getRow(row + y_) + x_; } + + inline char const* getBytes() const + { + return reinterpret_cast(&data_); + } + inline T& data() { return data_; @@ -107,4 +113,3 @@ private: } #endif // MAPNIK_IMAGE_VIEW_HPP - diff --git a/include/mapnik/util/hsl.hpp b/include/mapnik/util/hsl.hpp index 7c145847e..ff3fa3466 100644 --- a/include/mapnik/util/hsl.hpp +++ b/include/mapnik/util/hsl.hpp @@ -36,7 +36,7 @@ static inline void rgb2hsl(unsigned char red, unsigned char green, unsigned char double min = std::min(r,std::min(g,b)); double delta = max - min; double gamma = max + min; - h = s = l = gamma / 2.0; + h = 0.0, s = 0.0, l = gamma / 2.0; if (delta > 0.0) { s = l > 0.5 ? delta / (2.0 - gamma) : delta / gamma; if (max == r && max != g) h = (g - b) / delta + (g < b ? 6.0 : 0.0); @@ -47,7 +47,6 @@ static inline void rgb2hsl(unsigned char red, unsigned char green, unsigned char } static inline double hueToRGB(double m1, double m2, double h) { - // poor mans fmod if(h < 0) h += 1; if(h > 1) h -= 1; if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; @@ -59,13 +58,13 @@ static inline double hueToRGB(double m1, double m2, double h) { static inline void hsl2rgb(double h, double s, double l, unsigned char & r, unsigned char & g, unsigned char & b) { if (!s) { - r = g = b = static_cast(l * 255); + r = g = b = static_cast(std::floor((l * 255.0)+.5)); } double m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s; double m1 = l * 2 - m2; - r = static_cast(hueToRGB(m1, m2, h + 0.33333) * 255); - g = static_cast(hueToRGB(m1, m2, h) * 255); - b = static_cast(hueToRGB(m1, m2, h - 0.33333) * 255); + r = static_cast(std::floor((hueToRGB(m1, m2, h + 0.33333) * 255.0)+.5)); + g = static_cast(std::floor((hueToRGB(m1, m2, h) * 255.0)+.5)); + b = static_cast(std::floor((hueToRGB(m1, m2, h - 0.33333) * 255.0)+.5)); } } diff --git a/include/mapnik/webp_io.hpp b/include/mapnik/webp_io.hpp new file mode 100644 index 000000000..80c5473a3 --- /dev/null +++ b/include/mapnik/webp_io.hpp @@ -0,0 +1,130 @@ +/***************************************************************************** + * + * This file is part of Mapnik (c++ mapping toolkit) + * + * Copyright (C) 2013 Artem Pavlenko + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + *****************************************************************************/ + +#ifndef MAPNIK_WEBP_IO_HPP +#define MAPNIK_WEBP_IO_HPP + +#include + +#include +#include +#include + + +namespace mapnik { + +template +int webp_stream_write(const uint8_t* data, size_t data_size, const WebPPicture* picture) +{ + T* out = static_cast(picture->custom_ptr); + out->write(reinterpret_cast(data), data_size); + return true; +} + +std::string webp_encoding_error(WebPEncodingError error) { + std::ostringstream os; + switch (error) { + case VP8_ENC_ERROR_OUT_OF_MEMORY: os << "memory error allocating objects"; break; + case VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY: os << "memory error while flushing bits"; break; + case VP8_ENC_ERROR_NULL_PARAMETER: os << "a pointer parameter is NULL"; break; + case VP8_ENC_ERROR_INVALID_CONFIGURATION: os << "configuration is invalid"; break; + case VP8_ENC_ERROR_BAD_DIMENSION: os << "picture has invalid width/height"; break; + case VP8_ENC_ERROR_PARTITION0_OVERFLOW: os << "partition is bigger than 512k"; break; + case VP8_ENC_ERROR_PARTITION_OVERFLOW: os << "partition is bigger than 16M"; break; + case VP8_ENC_ERROR_BAD_WRITE: os << "error while flushing bytes"; break; + case VP8_ENC_ERROR_FILE_TOO_BIG: os << "file is bigger than 4G"; break; + default: os << "unknown error (" << error << ")"; break; + } + os << " during encoding"; + return os.str(); +} + +template +void save_as_webp(T1& file, + float quality, + int method, + int lossless, + int image_hint, + T2 const& image) +{ + WebPConfig config; + if (!WebPConfigPreset(&config, WEBP_PRESET_DEFAULT, quality)) + { + throw std::runtime_error("version mismatch"); + } + + // Add additional tuning + if (method >= 0) config.method = method; + #if (WEBP_ENCODER_ABI_VERSION >> 8) >= 2 + config.lossless = lossless; + config.image_hint = static_cast(image_hint); + #else + #ifdef _MSC_VER + #pragma NOTE(compiling against webp that does not support lossless flag) + #else + #warning "compiling against webp that does not support lossless flag" + #endif + #endif + + bool valid = WebPValidateConfig(&config); + if (!valid) { + throw std::runtime_error("Invalid configuration"); + } + + WebPPicture pic; + if (!WebPPictureInit(&pic)) + { + throw std::runtime_error("version mismatch"); + } + pic.width = image.width(); + pic.height = image.height(); + #if (WEBP_ENCODER_ABI_VERSION >> 8) >= 2 + pic.use_argb = 1; + #endif + if (!WebPPictureAlloc(&pic)) + { + throw std::runtime_error("memory error"); + } + + int stride = sizeof(typename T2::pixel_type) * image.width(); + uint8_t const* bytes = reinterpret_cast(image.getBytes()); + int ok = WebPPictureImportRGBA(&pic, bytes, stride); + if (!ok) + { + throw std::runtime_error(webp_encoding_error(pic.error_code)); + } + + pic.writer = webp_stream_write; + pic.custom_ptr = &file; + + ok = WebPEncode(&config, &pic); + WebPPictureFree(&pic); + if (!ok) + { + throw std::runtime_error(webp_encoding_error(pic.error_code)); + } + + file.flush(); +} +} + +#endif // MAPNIK_WEBP_IO_HPP diff --git a/src/agg/process_building_symbolizer.cpp b/src/agg/process_building_symbolizer.cpp index ecb91b3aa..bd9fb6921 100644 --- a/src/agg/process_building_symbolizer.cpp +++ b/src/agg/process_building_symbolizer.cpp @@ -57,7 +57,7 @@ void agg_renderer::process(building_symbolizer const& sym, typedef agg::renderer_base ren_base; typedef agg::renderer_scanline_aa_solid renderer; - agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); + agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4); agg::pixfmt_rgba32 pixf(buf); ren_base renb(pixf); diff --git a/src/agg/process_line_pattern_symbolizer.cpp b/src/agg/process_line_pattern_symbolizer.cpp index 1f9f679fd..d308ffb17 100644 --- a/src/agg/process_line_pattern_symbolizer.cpp +++ b/src/agg/process_line_pattern_symbolizer.cpp @@ -115,7 +115,7 @@ void agg_renderer::process(line_pattern_symbolizer const& sym, if (!pat) return; - agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); + agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4); pixfmt_type pixf(buf); pixf.comp_op(static_cast(sym.comp_op())); renderer_base ren_base(pixf); diff --git a/src/agg/process_line_symbolizer.cpp b/src/agg/process_line_symbolizer.cpp index e32b9b257..a0338aaf6 100644 --- a/src/agg/process_line_symbolizer.cpp +++ b/src/agg/process_line_symbolizer.cpp @@ -73,7 +73,7 @@ void agg_renderer::process(line_symbolizer const& sym, gamma_ = stroke_.get_gamma(); } - agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); + agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4); typedef agg::rgba8 color_type; typedef agg::order_rgba order_type; diff --git a/src/agg/process_markers_symbolizer.cpp b/src/agg/process_markers_symbolizer.cpp index 66913a1b5..2bf71bfa2 100644 --- a/src/agg/process_markers_symbolizer.cpp +++ b/src/agg/process_markers_symbolizer.cpp @@ -127,7 +127,7 @@ void agg_renderer::process(markers_symbolizer const& sym, coord2d center = bbox.center(); agg::trans_affine_translation recenter(-center.x, -center.y); agg::trans_affine marker_trans = recenter * tr; - buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); + buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4); dispatch_type rasterizer_dispatch(render_buffer, svg_renderer, *ras_ptr, @@ -167,7 +167,7 @@ void agg_renderer::process(markers_symbolizer const& sym, svg_attribute_type attributes; bool result = push_explicit_style( (*stock_vector_marker)->attributes(), attributes, sym); svg_renderer_type svg_renderer(svg_path, result ? attributes : (*stock_vector_marker)->attributes()); - buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); + buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4); dispatch_type rasterizer_dispatch(render_buffer, svg_renderer, *ras_ptr, @@ -205,7 +205,7 @@ void agg_renderer::process(markers_symbolizer const& sym, agg::trans_affine marker_trans = recenter * tr; boost::optional marker = (*mark)->get_bitmap_data(); typedef raster_markers_rasterizer_dispatch dispatch_type; - buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); + buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4); dispatch_type rasterizer_dispatch(render_buffer, *ras_ptr, **marker, diff --git a/src/agg/process_polygon_pattern_symbolizer.cpp b/src/agg/process_polygon_pattern_symbolizer.cpp index da43f91b3..4aacf9851 100644 --- a/src/agg/process_polygon_pattern_symbolizer.cpp +++ b/src/agg/process_polygon_pattern_symbolizer.cpp @@ -59,7 +59,7 @@ void agg_renderer::process(polygon_pattern_symbolizer const& sym, typedef agg::conv_clip_polygon clipped_geometry_type; typedef coord_transform path_type; - agg::rendering_buffer buf(current_buffer_->raw_data(), width_, height_, width_ * 4); + agg::rendering_buffer buf(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4); ras_ptr->reset(); if (sym.get_gamma() != gamma_ || sym.get_gamma_method() != gamma_method_) { @@ -135,8 +135,8 @@ void agg_renderer::process(polygon_pattern_symbolizer const& sym, path_type path(t_,clipped,prj_trans); path.vertex(&x0,&y0); } - offset_x = unsigned(width_ - x0); - offset_y = unsigned(height_ - y0); + offset_x = unsigned(current_buffer_->width() - x0); + offset_y = unsigned(current_buffer_->height() - y0); } span_gen_type sg(img_src, offset_x, offset_y); diff --git a/src/agg/process_polygon_symbolizer.cpp b/src/agg/process_polygon_symbolizer.cpp index febd2a514..7e7e15d4c 100644 --- a/src/agg/process_polygon_symbolizer.cpp +++ b/src/agg/process_polygon_symbolizer.cpp @@ -76,7 +76,7 @@ void agg_renderer::process(polygon_symbolizer const& sym, } } - agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); + agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4); color const& fill = sym.get_fill(); unsigned r=fill.red(); diff --git a/src/build.py b/src/build.py index c9532dab6..e5464076c 100644 --- a/src/build.py +++ b/src/build.py @@ -68,6 +68,9 @@ if env['PNG']: if env['TIFF']: lib_env['LIBS'].append('tiff') +if env['WEBP']: + lib_env['LIBS'].append('webp') + if env['JPEG']: lib_env['LIBS'].append('jpeg') @@ -280,6 +283,12 @@ if env['PNG']: png_reader.cpp """) +if env['WEBP']: + source += Split( + """ + webp_reader.cpp + """) + # agg backend source += Split( """ diff --git a/src/image_filter_grammar.cpp b/src/image_filter_grammar.cpp index b50807129..a17191d14 100644 --- a/src/image_filter_grammar.cpp +++ b/src/image_filter_grammar.cpp @@ -88,8 +88,8 @@ image_filter_grammar::image_filter_grammar() | agg_blur_filter(_val) | - //hsla_filter(_val) - //| + scale_hsla_filter(_val) + | colorize_alpha_filter(_val) ; @@ -100,16 +100,14 @@ image_filter_grammar::image_filter_grammar() [push_back(_r1,construct(_a,_b))] ; - /* - hsla_filter = lit("hsla") + scale_hsla_filter = lit("scale-hsla") >> lit('(') - >> double_[_a = _1] >> lit('x') >> double_[_b = _1] >> lit(';') - >> double_[_c = _1] >> lit('x') >> double_[_d = _1] >> lit(';') - >> double_[_e = _1] >> lit('x') >> double_[_f = _1] >> lit(';') - >> double_[_g = _1] >> lit('x') >> double_[_h = _1] >> lit(')') - [push_back(_r1, construct(_a,_b,_c,_d,_e,_f,_g,_h))] + >> double_[_a = _1] >> lit(',') >> double_[_b = _1] >> lit(',') + >> double_[_c = _1] >> lit(',') >> double_[_d = _1] >> lit(',') + >> double_[_e = _1] >> lit(',') >> double_[_f = _1] >> lit(',') + >> double_[_g = _1] >> lit(',') >> double_[_h = _1] >> lit(')') + [push_back(_r1, construct(_a,_b,_c,_d,_e,_f,_g,_h))] ; - */ colorize_alpha_filter = lit("colorize-alpha")[_a = construct()] >> lit('(') diff --git a/src/image_filter_types.cpp b/src/image_filter_types.cpp index a9bc4c3ce..9ffa0ad91 100644 --- a/src/image_filter_types.cpp +++ b/src/image_filter_types.cpp @@ -34,28 +34,6 @@ namespace mapnik { namespace filter { -template -struct to_string_visitor : boost::static_visitor -{ - to_string_visitor(Out & out) - : out_(out) {} - - template - void operator () (T const& filter_tag) - { - out_ << filter_tag; - } - - Out & out_; -}; - -inline std::ostream& operator<< (std::ostream& os, filter_type const& filter) -{ - to_string_visitor visitor(os); - boost::apply_visitor(visitor, filter); - return os; -} - bool generate_image_filters(std::back_insert_iterator& sink, std::vector const& filters) { using boost::spirit::karma::stream; diff --git a/src/image_reader.cpp b/src/image_reader.cpp index af98b6f0e..539221040 100644 --- a/src/image_reader.cpp +++ b/src/image_reader.cpp @@ -59,6 +59,14 @@ inline boost::optional type_from_bytes(char const* data, size_t siz } } + if (size>=12) + { + if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F' && + data[8] == 'W' && data[9] == 'E' && data[10] == 'B' && data[11] == 'P') + { + return result_type("webp"); + } + } return result_type(); } diff --git a/src/image_util.cpp b/src/image_util.cpp index efe61c766..7d6759243 100644 --- a/src/image_util.cpp +++ b/src/image_util.cpp @@ -40,6 +40,10 @@ extern "C" #include #endif +#if defined(HAVE_WEBP) +#include +#endif + #include #include #include @@ -237,6 +241,73 @@ void handle_png_options(std::string const& type, } #endif + +#if defined(HAVE_WEBP) +void handle_webp_options(std::string const& type, + double & quality, + int & method, + int & lossless, + int & image_hint + ) +{ + if (type == "webp") + { + return; + } + if (type.length() > 4){ + boost::char_separator sep(":"); + boost::tokenizer< boost::char_separator > tokens(type, sep); + BOOST_FOREACH(std::string t, tokens) + { + if (boost::algorithm::starts_with(t, "quality=")) + { + std::string val = t.substr(8); + if (!val.empty()) + { + if (!mapnik::util::string2double(val,quality) || quality < 0.0 || quality > 100.0) + { + throw ImageWriterException("invalid webp quality: '" + val + "'"); + } + } + } + else if (boost::algorithm::starts_with(t, "method=")) + { + std::string val = t.substr(7); + if (!val.empty()) + { + if (!mapnik::util::string2int(val,method) || method < 0 || method > 6) + { + throw ImageWriterException("invalid webp method: '" + val + "'"); + } + } + } + else if (boost::algorithm::starts_with(t, "lossless=")) + { + std::string val = t.substr(9); + if (!val.empty()) + { + if (!mapnik::util::string2int(val,lossless) || lossless < 0 || lossless > 1) + { + throw ImageWriterException("invalid webp lossless: '" + val + "'"); + } + } + } + else if (boost::algorithm::starts_with(t, "image_hint=")) + { + std::string val = t.substr(11); + if (!val.empty()) + { + if (!mapnik::util::string2int(val,image_hint) || image_hint < 0 || image_hint > 3) + { + throw ImageWriterException("invalid webp image_hint: '" + val + "'"); + } + } + } + } + } +} +#endif + template void save_to_stream(T const& image, std::ostream & stream, @@ -369,6 +440,26 @@ void save_to_stream(T const& image, save_as_jpeg(stream, quality, image); #else throw ImageWriterException("jpeg output is not enabled in your build of Mapnik"); +#endif + } + else if (boost::algorithm::starts_with(t, "webp")) + { +#if defined(HAVE_WEBP) + double quality = 90.0; // 0 lowest, 100 highest + int method = 3; // 0 if fastest, 6 slowest + int lossless = 0; // Lossless encoding (0=lossy(default), 1=lossless). + int image_hint = 3; // used when lossless=1 + /* + WEBP_HINT_DEFAULT = 0, // default preset. + WEBP_HINT_PICTURE, // digital picture, like portrait, inner shot + WEBP_HINT_PHOTO, // outdoor photograph, with natural lighting + WEBP_HINT_GRAPH, // Discrete tone image (graph, map-tile etc). + WEBP_HINT_LAST + */ + handle_webp_options(t,quality,method,lossless, image_hint); + save_as_webp(stream, static_cast(quality), method, lossless, image_hint, image); +#else + throw ImageWriterException("webp output is not enabled in your build of Mapnik"); #endif } else throw ImageWriterException("unknown file type: " + type); diff --git a/src/webp_reader.cpp b/src/webp_reader.cpp new file mode 100644 index 000000000..29f87dbd2 --- /dev/null +++ b/src/webp_reader.cpp @@ -0,0 +1,239 @@ +/***************************************************************************** + * + * This file is part of Mapnik (c++ mapping toolkit) + * + * Copyright (C) 2013 Artem Pavlenko + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + *****************************************************************************/ + +// mapnik +#include +#include + +extern "C" +{ +#include +#include +} + +// boost +#include +#include +#include +// stl +#include + +namespace mapnik +{ + +struct external_buffer_policy +{ + external_buffer_policy( uint8_t const* data, std::size_t size) + : data_(data), + size_(size) {} + + uint8_t const* data() const + { + return data_; + } + + std::size_t size() const + { + return size_; + } + + uint8_t const* data_; + std::size_t size_; +}; + +struct internal_buffer_policy +{ + internal_buffer_policy(std::size_t size) + : data_((size!=0) ? static_cast(::operator new(sizeof(uint8_t) * size)) : 0), + size_(size) + {} + + uint8_t * data() const + { + return data_; + } + + std::size_t size() const + { + return size_; + } + + ~internal_buffer_policy() + { + ::operator delete(data_), data_=0; + } + + uint8_t * data_; + std::size_t size_; +}; + +template +class webp_reader : public image_reader +{ + typedef T buffer_policy_type; +private: + struct config_guard + { + config_guard(WebPDecoderConfig & config) + : config_(config) {} + + ~config_guard() + { + WebPFreeDecBuffer(&config_.output); + } + WebPDecoderConfig & config_; + }; + std::auto_ptr buffer_; + size_t size_; + unsigned width_; + unsigned height_; +public: + explicit webp_reader(char const* data, std::size_t size); + explicit webp_reader(std::string const& filename); + ~webp_reader(); + unsigned width() const; + unsigned height() const; + bool premultiplied_alpha() const { return false; } + void read(unsigned x,unsigned y,image_data_32& image); +private: + void init(); +}; + +namespace +{ +image_reader* create_webp_reader(char const * data, std::size_t size) +{ + return new webp_reader(data, size); +} + +image_reader* create_webp_reader2(std::string const& filename) +{ + return new webp_reader(filename); +} + + +const bool registered = register_image_reader("webp", create_webp_reader); +const bool registered2 = register_image_reader("webp", create_webp_reader2); + +} + +// ctor +template +webp_reader::webp_reader(char const* data, std::size_t size) + : buffer_(new buffer_policy_type(reinterpret_cast(data), size)), + width_(0), + height_(0) +{ + init(); +} + +template +webp_reader::webp_reader(std::string const& filename) + : buffer_(), + size_(0), + width_(0), + height_(0) +{ + std::ifstream file(filename.c_str(), std::ios::binary); + if (!file) + { + throw image_reader_exception("WEBP: Can't read file:" + filename); + } + std::streampos beg = file.tellg(); + file.seekg (0, std::ios::end); + std::streampos end = file.tellg(); + std::size_t file_size = end - beg; + file.seekg (0, std::ios::beg); + buffer_ = std::auto_ptr(new buffer_policy_type(file_size)); + file.read(reinterpret_cast(buffer_->data()), buffer_->size()); + if (!file) + { + throw image_reader_exception("WEBP: Failed to read:" + filename); + } + init(); +} + + +// dtor +template +webp_reader::~webp_reader() +{ + // +} + +template +void webp_reader::init() +{ + int width, height; + if (!WebPGetInfo(buffer_->data(), buffer_->size(), &width, &height)) + { + throw image_reader_exception("WEBP reader: WebPGetInfo failed"); + } + width_ = width; + height_ = height; +} + +template +unsigned webp_reader::width() const +{ + return width_; +} + +template +unsigned webp_reader::height() const +{ + return height_; +} + +template +void webp_reader::read(unsigned x0, unsigned y0,image_data_32& image) +{ + WebPDecoderConfig config; + config_guard guard(config); + if (!WebPInitDecoderConfig(&config)) + { + throw image_reader_exception("WEBP reader: WebPInitDecoderConfig failed"); + } + + config.options.use_cropping = 1; + config.options.crop_left = x0; + config.options.crop_top = y0; + config.options.crop_width = std::min(width_ - x0, image.width()); + config.options.crop_height = std::min(height_ - y0, image.height()); + + if (WebPGetFeatures(buffer_->data(), buffer_->size(), &config.input) != VP8_STATUS_OK) + { + throw image_reader_exception("WEBP reader: WebPGetFeatures failed"); + } + + config.output.colorspace = MODE_RGBA; + config.output.u.RGBA.rgba = (uint8_t *)image.getBytes(); + config.output.u.RGBA.stride = 4 * image.width(); + config.output.u.RGBA.size = image.width() * image.height() * 4; + config.output.is_external_memory = 1; + if (WebPDecode(buffer_->data(), buffer_->size(), &config) != VP8_STATUS_OK) + { + throw image_reader_exception("WEBP reader: WebPDecode failed"); + } +} + +} diff --git a/tests/cpp_tests/data/blank.webp b/tests/cpp_tests/data/blank.webp new file mode 100644 index 000000000..e69de29bb diff --git a/tests/cpp_tests/image_io_test.cpp b/tests/cpp_tests/image_io_test.cpp index 06c229bbf..549378ba4 100644 --- a/tests/cpp_tests/image_io_test.cpp +++ b/tests/cpp_tests/image_io_test.cpp @@ -67,6 +67,20 @@ int main(int argc, char** argv) BOOST_TEST( true ); } + should_throw = "./tests/cpp_tests/data/blank.webp"; + BOOST_TEST( mapnik::util::exists( should_throw ) ); + type = mapnik::type_from_filename(should_throw); + BOOST_TEST( type ); + try + { + std::auto_ptr reader(mapnik::get_image_reader(should_throw,*type)); + BOOST_TEST( false ); + } + catch (std::exception const&) + { + BOOST_TEST( true ); + } + should_throw = "./tests/data/images/xcode-CgBI.png"; BOOST_TEST( mapnik::util::exists( should_throw ) ); type = mapnik::type_from_filename(should_throw); diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+q=64.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+q=64.webp new file mode 100644 index 000000000..ce65bf5df Binary files /dev/null and b/tests/python_tests/images/support/encoding-opts/blank-webp+q=64.webp differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp.webp b/tests/python_tests/images/support/encoding-opts/blank-webp.webp new file mode 100644 index 000000000..ce65bf5df Binary files /dev/null and b/tests/python_tests/images/support/encoding-opts/blank-webp.webp differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+q=64.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+q=64.webp new file mode 100644 index 000000000..ce65bf5df Binary files /dev/null and b/tests/python_tests/images/support/encoding-opts/solid-webp+q=64.webp differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp.webp b/tests/python_tests/images/support/encoding-opts/solid-webp.webp new file mode 100644 index 000000000..ce65bf5df Binary files /dev/null and b/tests/python_tests/images/support/encoding-opts/solid-webp.webp differ diff --git a/tests/python_tests/images/support/transparency/white0.webp b/tests/python_tests/images/support/transparency/white0.webp new file mode 100644 index 000000000..81c926c23 Binary files /dev/null and b/tests/python_tests/images/support/transparency/white0.webp differ diff --git a/tests/python_tests/webp_encoding_test.py b/tests/python_tests/webp_encoding_test.py new file mode 100644 index 000000000..b468f1925 --- /dev/null +++ b/tests/python_tests/webp_encoding_test.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import os, mapnik +from timeit import Timer, time +from nose.tools import * +from utilities import execution_path, run_all + +def setup(): + # All of the paths used are relative, if we run the tests + # from another directory we need to chdir() + os.chdir(execution_path('.')) + +tmp_dir = '/tmp/mapnik-webp/' +if not os.path.exists(tmp_dir): + os.makedirs(tmp_dir) + +opts = [ +'webp', +'webp:q=64', +] + + +def gen_filepath(name,format): + return os.path.join('images/support/encoding-opts',name+'-'+format.replace(":","+")+'.webp') + +def test_quality_threshold(): + im = mapnik.Image(256,256) + im.tostring('webp:quality=99.99000') + im.tostring('webp:quality=0') + im.tostring('webp:quality=0.001') + +@raises(RuntimeError) +def test_quality_threshold_invalid(): + im = mapnik.Image(256,256) + im.tostring('webp:quality=101') + +@raises(RuntimeError) +def test_quality_threshold_invalid2(): + im = mapnik.Image(256,256) + im.tostring('webp:quality=-1') + +generate = False + +def test_expected_encodings(): + im = mapnik.Image(256,256) + for opt in opts: + expected = gen_filepath('solid',opt) + actual = os.path.join(tmp_dir,os.path.basename(expected)) + if generate or not os.path.exists(expected): + print 'generating expected image %s' % expected + im.save(expected,opt) + im.save(actual,opt) + eq_(mapnik.Image.open(actual).tostring(), + mapnik.Image.open(expected).tostring(), + '%s (actual) not == to %s (expected)' % (actual,expected)) + + for opt in opts: + expected = gen_filepath('blank',opt) + actual = os.path.join(tmp_dir,os.path.basename(expected)) + if generate or not os.path.exists(expected): + print 'generating expected image %s' % expected + im.save(expected,opt) + im.save(actual,opt) + eq_(mapnik.Image.open(actual).tostring(), + mapnik.Image.open(expected).tostring(), + '%s (actual) not == to %s (expected)' % (actual,expected)) + +def test_transparency_levels(): + # create partial transparency image + im = mapnik.Image(256,256) + im.background = mapnik.Color('rgba(255,255,255,.5)') + c2 = mapnik.Color('rgba(255,255,0,.2)') + c3 = mapnik.Color('rgb(0,255,255)') + for y in range(0,im.height()/2): + for x in range(0,im.width()/2): + im.set_pixel(x,y,c2) + for y in range(im.height()/2,im.height()): + for x in range(im.width()/2,im.width()): + im.set_pixel(x,y,c3) + + t0 = tmp_dir + 'white0.webp' + + # octree + format = 'webp' + expected = 'images/support/transparency/white0.webp' + if generate or not os.path.exists(expected): + im.save('images/support/transparency/white0.webp') + im.save(t0,format) + im_in = mapnik.Image.open(t0) + t0_len = len(im_in.tostring(format)) + eq_(t0_len,len(mapnik.Image.open(expected).tostring(format))) + + +if __name__ == "__main__": + setup() + run_all(eval(x) for x in dir() if x.startswith("test_")) \ No newline at end of file diff --git a/tests/visual_tests/data/grouped-rendering.sqlite b/tests/visual_tests/data/grouped-rendering.sqlite new file mode 100644 index 000000000..277c0f561 Binary files /dev/null and b/tests/visual_tests/data/grouped-rendering.sqlite differ diff --git a/tests/visual_tests/grids/road-casings-grouped-rendering-500-100-1.0-grid-reference.json b/tests/visual_tests/grids/road-casings-grouped-rendering-500-100-1.0-grid-reference.json new file mode 100644 index 000000000..24cbf9092 --- /dev/null +++ b/tests/visual_tests/grids/road-casings-grouped-rendering-500-100-1.0-grid-reference.json @@ -0,0 +1,344 @@ +{ + "keys": [ + "", + "836", + "840", + "690", + "525", + "523", + "528", + "490", + "472", + "415", + "599", + "598", + "154", + "159", + "153", + "100", + "102", + "108", + "122", + "110", + "113", + "737", + "481", + "473", + "57", + "1", + "72", + "200", + "269", + "228", + "173", + "174", + "687", + "483", + "551", + "583", + "480", + "479", + "401", + "421", + "389", + "749", + "774", + "179", + "851", + "586", + "620", + "548", + "535", + "582", + "325", + "324", + "445", + "393", + "839", + "440", + "268", + "482", + "633", + "634", + "466", + "671", + "462", + "448", + "333", + "326", + "146", + "16", + "25", + "356", + "261", + "238", + "248", + "767", + "849", + "577", + "484", + "471", + "469", + "332", + "378", + "225", + "188", + "175", + "585", + "668", + "665", + "550", + "485", + "570", + "562", + "575", + "131", + "354", + "284", + "285", + "553", + "850", + "739", + "587", + "486", + "632", + "373", + "133", + "41", + "358", + "260", + "177", + "641", + "615", + "95", + "121", + "376", + "56", + "788", + "359", + "236", + "686", + "786", + "692", + "578", + "614", + "579", + "673", + "50", + "92", + "58", + "357", + "212", + "847", + "827", + "664", + "645", + "607", + "505", + "743", + "493", + "841", + "439", + "438", + "214", + "213", + "254", + "835", + "165", + "647", + "626", + "494", + "39", + "5", + "54", + "158", + "317", + "252", + "753", + "838", + "769", + "223", + "784", + "631", + "621", + "674", + "77", + "36", + "304", + "118", + "52", + "773", + "224", + "255", + "727", + "139", + "624", + "628", + "666", + "453", + "295", + "292", + "3", + "123", + "732", + "830", + "771", + "845", + "623", + "613", + "629", + "580", + "144", + "459", + "294", + "23", + "27", + "125", + "844", + "184", + "545", + "507", + "616", + "606", + "681", + "65", + "48", + "35", + "37", + "63", + "831", + "740", + "842", + "221", + "166", + "501", + "142", + "506", + "680", + "26", + "444", + "730", + "742", + "826", + "556", + "117", + "755", + "20", + "699", + "822", + "701", + "808", + "311", + "780", + "170", + "234", + "33", + "569", + "516", + "713", + "705", + "744", + "725", + "350", + "310", + "349", + "192", + "719", + "185", + "552", + "559", + "546", + "643", + "684", + "24", + "706", + "750", + "795", + "818", + "712", + "351", + "683", + "206", + "190", + "689", + "105", + "32", + "34", + "759", + "810", + "819", + "791", + "707", + "852", + "290", + "235", + "160", + "536", + "98", + "44", + "541", + "346", + "811", + "297", + "778", + "169", + "162", + "163", + "752", + "748", + "809", + "805", + "341", + "18", + "167", + "168", + "109", + "112", + "67", + "537", + "829", + "828", + "496", + "540", + "561", + "709", + "340", + "70", + "161", + "176", + "754", + "432", + "306", + "164", + "178", + "824" + ], + "data": {}, + "grid": [ + " !#$ %%%& ' ( ) *+,---./01112233344555555555 ", + " # 6 %%%' (( 7) 8 ****./911:; <=> ?? @ ", + " !#A$ BB%%(( C77DEF GH /I9JK:L <> ? @@ ", + " # M$NN OO( PCQQR 8S TU/V9W:XL ?? @ ", + " !#M$NB BOZ[]^^_`8abcd/e99fgL ? tt u ", + " # MM6 vm ZwQxyz{|}~//e9ff\u007fgL <\u0080> \u0081tuuu ", + " \u0082 ! l\u0083\u0084 \u0085\u0085v ))\u0086\u0087 \u0088\u0089~/\u008a9fff\u007f\u008bL <\u0080>\u008c \u0081\u0081 \u008d\u008d\u008d ", + " \u0082\u0082 !# NA$\u008e \u0085v \u008fz \u0089\u0089\u0090\u0091\u0092\u0093ff\u0094\u007f\u0095 LLL\u0096\u0096\u0096\u0081\u0081\u008d\u008d\u0097\u0097\u0098\u0099\u0098 ", + " \u0082\u0082 !# N\u009am $$ \u0085\u0085\u008f\u009b\u009c \u009d\u0089\u009e\u009f\u00a0\u0093\u0093ffK\u007f\u00a1\u007f\u00a2 \u0097\u0098\u0099\u0098\u0099\u0099 \u00a3\u00a4 ", + " \u0082 !#\u009a\u00a5\u00a6\u00a7\u00a8 \u00a9\u00a9 \u008f\u008f\u00aa }\u0089\u009e\u009e\u009f\u009f\u0093\u0093f\u00ab\u0094\u00ac\u00ad\u00a2\u00ae\u00af\u00b0\u00b1\u0098\u0097\u0098\u0099 \u00a3\u00a4\u00a4\u00b2\u00b2 ", + " \u0082\u0082 ! \u00b3\u00a5\u00b4\u00b4\u00a8 A$\u008f\u00b5\u00aa \u0089\u0089\u00b6\u00b7\u009f\u009f\u00b8\u00b8\u00b9\u00ba\u0094K \u007f\u00bb\u00bc\u00bd\u00be\u00bf\u0099\u0099 \u00c0\u00a3\u00a4\u00a4\u00b2\u00b2 ", + " \u0082\u0082 !#\u00a7\u00a5\u00c1 \u00c2\u00a8\u008f\u00c3\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00c6\u00c6\u00c7\u00b8\u00c8\u00b9#\u00c9\u0094\u00b1\u00bc\u00bb\u00bb\u00ca\u00cb\u00cb\u0099\u00a3\u00c0\u00a3\u00a4\u00b2\u00b2 ", + " \u0082 \u00cc#\u00cd\u00ce \u00cf\u00c2\u008f\u00d0\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00d1\u00d2\u00d3\u00c7\u00d4\u00d4\u00d5#\u00d6\u00d7\u00d8\u00be \u00cb\u00cb\u00cb\u00c0\u00d9\u00a3\u00a4 \u00b2\u00b2 ", + " \u0082\u0082 \u00cc#\u00cd\u00da\u00db\u00dc \u00c4\u00c4\u00dd\u0089\u009e\u00de\u00df\u00e0\u00d2\u00d2\u00c7\u00e1\u00e2\u00e3\u00d6\u00d6\u00d7\u00d8\u00cb\u00cb \u00e4\u00e4\u00a3\u00a4\u00e5\u00b2\u00b2 ", + " \u0082\u0082\u00e6 \u00cc!\u00cd\u00e7\u00e8 \u00e9\u00ea\u00eb\u0089\u0089\u00ec\u00de\u00de\u00df\u00ed\u00ee\u00ef\u00e2\u00e2\u00e3\u00d6\u00d6 \u00f0\u00f1\u00c0\u00a3\u00a4\u00f2\u00f3\u00f3\u00e5\u00f4 ", + " \u0082\u00e6\u00e6k#\u00f5\u00f6\u00f7\u00e9\u00f8\u0089\u0089\u00ec\u00ed\u00de\u00de\u00ee\u00ee##\u00f9\u00e2\u00e2\u00fa\u00fb \u00fc\u00fd\u00fd \u00f2\u00e5 \u00f4 ", + " \u0082\u0082\u00e6\u00f5\u00f5\u00fe\u00f6\u00f6\u00f6\u0089\u00ec\u00ed\u00ed\u00ed\u00ff##\u0100\u00be\u00be\u0101\u0102\u0103\u0104\u0105\u0105\u0106\u00fd\u0107 \u00f2\u0108\u0108\u0108\u0108\u0109\u0109 ", + " \u0082\u0082\u00e6k\u00fe!#\u010a\u010a\u00ed\u010b\u010c##\u010d\u00be\u00be \u010e\u010f\u0110\u0110\u0103\u0111\u0112\u0113\u0114\u00f0\u0115\u00f2\u0116 \u00f4 ", + " \u0117 \u0118\u0119\u011a\u011b\u011c\u010a\u010a###\u011d\u00be\u00be\u010e\u010e\u00cc\u011e\u011f\u0120\u0121\u0121\u0122\u0123\u0123\u0124\u0125\u0126\u00f2\u0116\u0116\u00f4\u00f4 \u0127\u0127\u0127 ", + " \u0117\u0117\u0118 \u0082\u0082\u0128\u010a\u010a\u0129\u012a\u012a\u011d\u011d\u011e\u011e\u011b\u011e\u012b\u012c\u012d\u0121\u012e\u012f\u0130\u0131\u0131\u0131\u0123\u0123\u00f0\u00f2\u0116\u0116 \u0127\u0127\u0132\u0132\u0132\u0132\u0132 ", + " \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u012a\u0136\u011e\u011e\u011e\u011d \u0137\u0138\u011f\u012d\u0139\u013a\u012f\u012f\u0101\u013b\u013b\u013b\u013b\u0131\u00f0\u0107\u00f2\u013c\u013d\u013d\u0132\u0132\u0132\u0132 ", + " \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u0135\u012a\u013e\u013f \u0140\u0140\u0141\u012d\u0139\u013a\u013a\u0142\u0101\u0101\u0143\u0144 \u0145\u013b\u0131\u0146\u0147\u0147\u013d\u013d\u0148\u0148 ", + " \u0117\u0117\u0118\u0149\u0149 \u0135\u0135\u0135\u014a\u014b\u014c\u014c\u014d\u014e \u0140\u012b\u011f\u012d\u0139\u013a\u014f\u0150 \u0151\u0101\u0101\u0144 \u0145 \u0152\u0147\u0147\u0107 \u0153\u0148\u0148\u0148\u0148\u0148 ", + " \u0117\u0117\u0118 \u0149\u0128\u0135\u0135\u014a\u0154\u014c\u014c \u014e\u014d\u012b\u011f\u012d\u012d\u013a\u013a\u0155\u0156\u0156\u0156\u0156\u0101\u0101\u0144\u0144\u0145\u0157\u0152\u0158 \u0159\u0107 \u0153 \u0148\u0148\u0148 " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json b/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json new file mode 100644 index 000000000..905b2fb7a --- /dev/null +++ b/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json @@ -0,0 +1,887 @@ +{ + "keys": [ + "", + "330", + "155", + "74", + "57", + "749", + "788", + "201", + "202", + "181", + "691", + "774", + "228", + "46", + "523", + "73", + "530", + "384", + "286", + "385", + "1", + "156", + "644", + "361", + "531", + "43", + "449", + "93", + "328", + "527", + "605", + "589", + "288", + "215", + "635", + "532", + "588", + "154", + "138", + "287", + "637", + "638", + "529", + "576", + "362", + "348", + "45", + "639", + "497", + "300", + "329", + "237", + "600", + "137", + "534", + "636", + "595", + "103", + "14", + "180", + "232", + "593", + "104", + "353", + "526", + "592", + "594", + "136", + "352", + "327", + "323", + "203", + "490", + "415", + "442", + "342", + "258", + "528", + "596", + "599", + "157", + "343", + "331", + "257", + "598", + "412", + "313", + "335", + "277", + "89", + "597", + "344", + "431", + "276", + "126", + "113", + "108", + "107", + "591", + "590", + "407", + "414", + "147", + "99", + "369", + "413", + "337", + "97", + "124", + "122", + "110", + "174", + "406", + "75", + "82", + "83", + "72", + "278", + "173", + "472", + "481", + "336", + "159", + "153", + "100", + "102", + "96", + "200", + "266", + "265", + "263", + "269", + "231", + "446", + "66", + "409", + "410", + "315", + "179", + "182", + "419", + "392", + "391", + "390", + "525", + "417", + "411", + "183", + "479", + "473", + "146", + "475", + "474", + "401", + "421", + "445", + "356", + "483", + "480", + "551", + "583", + "325", + "324", + "476", + "582", + "364", + "389", + "393", + "839", + "724", + "440", + "227", + "620", + "462", + "477", + "268", + "267", + "225", + "464", + "16", + "271", + "535", + "463", + "299", + "693", + "261", + "270", + "247", + "548", + "467", + "465", + "422", + "241", + "466", + "238", + "239", + "246", + "489", + "634", + "671", + "333", + "326", + "488", + "482", + "633", + "448", + "243", + "248", + "461", + "460", + "332", + "378", + "577", + "484", + "471", + "381", + "25", + "188", + "470", + "565", + "469", + "334", + "379", + "355", + "284", + "279", + "175", + "667", + "562", + "380", + "665", + "550", + "373", + "354", + "632", + "485", + "570", + "363", + "575", + "673", + "585", + "131", + "404", + "285", + "587", + "78", + "145", + "85", + "41", + "739", + "478", + "87", + "121", + "40", + "358", + "226", + "260", + "283", + "687", + "690", + "486", + "133", + "672", + "95", + "322", + "321", + "195", + "264", + "194", + "177", + "396", + "359", + "402", + "55", + "686", + "619", + "15", + "382", + "397", + "319", + "735", + "212", + "236", + "282", + "280", + "618", + "615", + "614", + "403", + "376", + "59", + "204", + "786", + "640", + "641", + "375", + "374", + "400", + "320", + "58", + "773", + "199", + "692", + "584", + "377", + "395", + "405", + "398", + "56", + "579", + "670", + "31", + "357", + "505", + "493", + "784", + "743", + "50", + "92", + "38", + "213", + "847", + "741", + "492", + "841", + "254", + "747", + "827", + "568", + "39", + "53", + "439", + "753", + "224", + "607", + "5", + "61", + "158", + "840", + "438", + "214", + "835", + "223", + "626", + "22", + "13", + "838", + "302", + "54", + "52", + "708", + "769", + "697", + "165", + "118", + "62", + "494", + "491", + "301", + "9", + "222", + "622", + "423", + "296", + "317", + "318", + "252", + "631", + "495", + "304", + "710", + "36", + "123", + "308", + "760", + "762", + "630", + "621", + "674", + "2", + "3", + "253", + "255", + "846", + "77", + "316", + "771", + "628", + "453", + "291", + "383", + "830", + "722", + "564", + "295", + "292", + "365", + "845", + "617", + "624", + "666", + "662", + "581", + "42", + "294", + "726", + "694", + "627", + "654", + "661", + "456", + "48", + "47", + "716", + "732", + "836", + "623", + "507", + "629", + "606", + "651", + "571", + "580", + "574", + "572", + "293", + "837", + "613", + "457", + "65", + "459", + "23", + "764", + "844", + "144", + "125", + "758", + "834", + "831", + "719", + "780", + "184", + "616", + "679", + "681", + "458", + "833", + "825", + "166", + "139", + "682", + "17", + "511", + "509", + "29", + "832", + "770", + "772", + "766", + "768", + "689", + "842", + "220", + "610", + "675", + "518", + "63", + "26", + "27", + "713", + "219", + "221", + "506", + "677", + "120", + "498", + "680", + "35", + "30", + "714", + "730", + "738", + "678", + "676", + "573", + "37", + "443", + "740", + "717", + "502", + "642", + "130", + "444", + "703", + "826", + "767", + "501", + "503", + "142", + "117", + "18", + "28", + "742", + "731", + "745", + "90", + "569", + "70", + "20", + "715", + "808", + "170", + "727", + "515", + "514", + "521", + "755", + "191", + "185", + "684", + "557", + "516", + "513", + "522", + "311", + "234", + "556", + "519", + "517", + "701", + "310", + "545", + "450", + "699", + "696", + "733", + "350", + "211", + "520", + "303", + "725", + "729", + "702", + "822", + "210", + "64", + "820", + "349", + "524", + "140", + "744", + "746", + "815", + "813", + "189", + "192", + "190", + "555", + "135", + "24", + "705", + "698", + "712", + "707", + "193", + "553", + "538", + "546", + "643", + "33", + "34", + "510", + "345", + "721", + "818", + "539", + "750", + "795", + "817", + "351", + "559", + "603", + "601", + "604", + "794", + "793", + "783", + "683", + "206", + "544", + "76", + "734", + "819", + "781", + "789", + "32", + "706", + "805", + "785", + "787", + "297", + "12", + "711", + "235", + "105", + "44", + "542", + "759", + "807", + "791", + "852", + "290", + "347", + "289", + "536", + "51", + "757", + "728", + "811", + "810", + "425", + "160", + "430", + "169", + "778", + "704", + "504", + "541", + "779", + "709", + "134", + "98", + "4", + "346", + "809", + "339", + "305", + "685", + "148", + "752", + "341", + "167", + "162", + "163", + "149", + "754", + "748", + "340", + "10", + "168", + "67", + "828", + "540", + "824", + "782", + "688", + "109", + "554", + "763", + "756", + "428", + "112", + "68", + "496", + "127", + "229", + "128", + "161", + "761", + "829", + "132", + "249", + "176", + "561", + "306", + "537", + "111", + "171", + "307", + "432", + "309", + "19", + "164", + "250", + "178", + "695", + "129", + "116", + "804", + "775", + "197", + "360", + "21", + "802", + "800", + "806", + "803", + "801", + "799", + "797", + "798", + "217", + "216", + "718", + "69", + "150", + "7", + "790", + "338", + "843", + "720", + "152", + "151", + "86", + "8", + "207", + "796", + "233", + "88", + "218", + "560", + "209", + "6", + "777", + "452", + "208", + "172", + "776", + "558", + "451" + ], + "data": {}, + "grid": [ + " ! ##$ %%&'' ( )) *** ", + " ! ##$ %%+', ( ))) ** - ", + " !! #.$ %%&+' ( ))) ** - ", + " / 0 ! #.$ %%&', ( ))) ** - ", + " / 1 0 ! #.$ 2 %%&+', ( ))3 *** - ", + " / 1 00 !! #.$ 4 2 %%&', ( )) 33 ** -- ", + " / 1 000 ! #.$ 4 222 %%%+',55 ( )) 3 ** -- ", + " / 1 66700 ! 8888 ##.$4 22 %%&',555 ( )) 3 ** -- ", + " / 1 99667000 ! 888 #..$4 222 :%%+',55; ( )) 33*** -- ", + " / 1 99 667700 ! 8 ##.$$4 22 :%%&', 55 ( )) 33** -- ", + " / 1 99 66770<0 ! 8 ##.$=422 :%%+',55; ( )) **3 -- ", + " />>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ", + " / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%&+',555 ( ) H 3--- BB BB ", + " / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #OGG= ::%%&' ,55; ( ) * 3- B ", + " //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ", + " / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&+ ,55; () TT - BBBBBBBBB ", + "W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ", + "//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&+ ,555 ))TT] - BB ^ ", + "bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ", + "/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ", + " bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&' ,555 hh iT ] - B nnn ", + " o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ", + " o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{", + " oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081", + " o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ", + " o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',5\u008d\u008e\u008eh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0090\u0090\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0091\u0081\u0081 ", + " o j kq |||\u0084\u0084\u0092\u0087\u0086\u0086 \u0093\u0088\u0088\u0088\u0088\u0088\u0088\u0094\u0095`\u0089\u0089\u0089\u0089\u0089\u0089\u0089\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008e\u008e\u0082\u0082\u0082\u0082\u0082\u0096\u0096\u0096\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0097 -- \u0098 \u0091 ", + " o jj \u0099\u009a\u0099 kkk| \u009b\u0087\u0092\u0092 \u0086\u0086 \u0093\u0093\u009c\u009c\u0088\u0088\u009d\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u0096\u0096\u00a0\u0096\u0096\u0096\u0096 \u00a1\u00a2\u00a3\u00a4\u00a4\u00a5 \u00a6\u00a6\u00a6\u00a6--- \u0098\u0098 \u0091 ", + " o jj \u0099\u0099\u009a \u0099\u0099\u0099 k \u0087\u009b \u0092 k\u00a7\u009c\u009c\u00a8\u009d\u00a9\u00a9\u00aax\u00ab %%%&',55 \u00ac \u00a1\u00a2 \u00ad\u00ad\u00a5\u00a6-- \u0098 \u0091 ", + " o j \u0099 \u009a \u0099 kkkkkkkkkk\u00aekkk \u009c\u009c\u009d\u009d\u00af\u00b0 x\u00b1 %%&&',55 \u00ac \u00a1\u00a2 \u00ad - \u0098\u0098 \u0091 ", + "\u00b2\u00b2\u00b2 o j \u0099 \u009a \u00b3 \u00b4\u00a7\u009c\u009d\u009d\u00af\u00b0x \u00ab\u00b1 %%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ", + " \u00b2\u00b2\u00b2o j \u0099\u0099 \u009a\u009a \u00b6\u00b7 \u00b3 \u00b4\u00a7\u00b8\u009d \u00af\u00b0x\u00ab \u00b1%%%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ", + " \u00b2\u00b2\u00b2 jj \u0099\u0099 \u009a \u00b9\u00ba \u00b6\u00b7\u00b7\u00b7 \u00bb\u00bb\u00bb\u00bb\u00bc \u00bd\u00b8\u00b8\u009d\u00af \u00b0x\u00ab\u00b1 %%%&+',5\u00be \u00ac \u00a1 \u00a2\u00b5\u00ad - \u0098 \u0091 ", + "\u00bf \u00b2\u00b2\u00b2 jj \u0099 \u009a \u00b9 \u00ba\u00ba\u00ba \u00c0 \u00b7\u00b7 \u00bb\u00bb\u00bb \u00bc \u00bd\u00b8\u009d\u009d\u00af\u00b0 x\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a1\u00a2\u00b5\u00b5\u00ad - \u0098 \u0091 ", + " \u00bf\u00bf \u00b2\u00b2 j \u0099\u00c1 \u009a\u009a\u009a\u00b9 \u00c2\u00c2\u00c0\u00b6 \u00b7 \u00c3 \u00c4 \u00bd\u00bd\u00b8\u009d \u00af\u00b0x\u00ab\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a2\u00a2\u00b5\u00b5\u00ad- \u0098 \u0091 ", + " \u00bf\u00bf j \u0099\u0099\u00c1 \u009a\u00c5\u00c5 \u00c6 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b7 \u00c3 \u00c4 \u00bd\u00c7\u00b8\u009d \u00c8\u00c8\u00b0\u00c9\u00b1\u00b1 %% \u00ca\u00cb,55 \u00cc \u00ac \u00a1 \u00a2 \u00b5\u00cd\u00cd- \u0098 \u0091 ", + " \u00bf\u00ce\u00ce\u00ce jj j \u0099\u0099\u00c1\u00c1\u00cf\u00cf\u00cf\u00cf\u00cf\u00b9\u00cf \u00d0\u00c5 \u00c6 \u00b7 \u00c3 \u00c4\u00c4 \u00bd\u00b8\u00b8\u009d \u00b0\u00c9\u00b1 %%%&\u00ca',55 \u00cc \u00ac \u00a1\u00a1\u00d1\u00d1\u00d2\u00d3 -- \u0098 \u0091 ", + " \u00bf\u00bf\u00ce\u00cej jj \u0099\u00cf\u00cf\u00c1 \u00d4\u00cf\u00cf\u00d0 \u00c5\u00c6 \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%%&\u00ca',55 \u00cc \u00ac\u00ac \u00a1\u00d6\u00d1 \u00d3\u00d3 - \u0098 \u0091 ", + " \u00bf\u00bf \u00ce\u00ce \u0099\u00cf\u00cf \u00c1\u00c1\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d8 \u00cf\u00cf\u00c6 \u00b7 \u00c3 \u00c4 \u00d9\u00bd\u00b8\u009d x\u00c9\u00ab %%%&\u00da',55\u00cc\u00be \u00ac \u00a1\u00a1\u00db\u00dc \u00d3 - \u00dd\u00dd\u0098\u0098 \u0091 ", + " \u00bf\u00bf \u00ce\u00ce \u0099\u00de\u00cf \u00d7\u00d7 \u00df \u00d7\u00d7\u00d7 \u00e0\u00cf\u00cf \u00b7 \u00c3 \u00e1\u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00dc\u00dc \u00d3 - \u00e2\u00dd \u0098 \u0091 ", + " \u00bf \u00ce\u00ce \u0099\u0099\u00cf\u00de\u00de\u00de \u00e3\u00e3\u00df\u00e3 \u00d7\u00e0 \u00cf \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1\u00a1 \u00db\u00db \u00d3 -- \u00e4\u00e5\u00e6 \u0098\u0098 \u0091 ", + " \u00bf \u00e7 \u0099 \u00cf\u00e8\u00e8\u00e8 \u00e3 \u00e3\u00e3 \u00e9\u00d7\u00d7 \u00cf \u00b7 \u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db -- \u00e4\u00e4\u00e5\u00e6 \u0098 \u0091 ", + " \u00bf\u00bf \u00e7\u00ec \u00ed\u0099 \u00cf\u00ee\u00ee\u00d7 \u00e3\u00e3 \u00e9\u00e3 \u00d7\u00d7 \u00cf\u00cf \u00b7 \u00ef\u00ef\u00ea\u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db\u00db- \u00e4\u00f0\u00f1\u00f1\u00f1\u0098 \u0091 ", + " \u00bf \u00ec\u00ec\u00ed\u00ed \u0099\u00cf\u00f2\u00ee\u00d7 \u00e3 \u00e3 \u00d7\u00f3\u00f3\u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ef\u00ea\u00ea \u00eb \u00f5\u00bd\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da' 55 \u00be \u00ac \u00a1\u00a1 \u00d3\u00d3 - \u0098 \u0091 ", + " \u00bf \u00f6\u00ed\u00f7\u00f7\u00f7\u00f7\u0099\u00cf \u00d7 \u00f8\u00e3 \u00e3 \u00d7\u00f3 \u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ea \u00eb \u00f9\u00f5\u00f5\u00f5\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00ca' \u00fa\u00fa \u00be \u00ac\u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ", + " \u00f6\u00f6\u00f6 \u00f7\u0099\u00cf \u00d7\u00f8 \u00e3\u00e3 \u00e3 \u00d7 \u00cf\u00b7\u00b7 \u00f4\u00ef\u00ea\u00eb\u00eb \u00f9\u00bd\u00b8\u009d\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be \u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ", + " \u00f6 \u00ed\u00ed\u00f7\u00f7\u0099 \u00cf \u00d7 \u00e3\u00fc\u00e3\u00e3 \u00e3\u00e3 \u00d7 \u00cf\u00b7 \u00f4\u00f4 \u00bd\u00b8\u009d\u00f5 x\u00c9\u00ab\u00ab \u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be\u00be \u00ac \u00a1 \u00d3 - \u0098 \u00fb ", + " \u00f6\u00f6 \u00ed\u00f7\u0099 \u00cf\u00cf \u00fd\u00d7\u00d7\u00fc\u00fc \u00fe \u00d7 \u00b7\u00b7 \u00ff \u00b8\u00b8\u009d\u0100 x\u00c9\u00ab \u00d5%% &\u00cb,\u00fa\u00fa\u0101\u0101 \u00be \u00ac \u00a1 \u0102\u0102\u0103 - \u0098 \u00fb \u0104\u0104\u0104", + " \u00f6\u00f6 \u00ed\u00ed \u00cf\u00cf\u0105 \u00d7\u00d7\u00d7 \u00fe \u00d7\u00d7 \u00cf\u00b7 \u0106 \u00ff \u00b8\u00b8\u009d\u0107xxx\u00c9\u00ab \u00d5%% &\u00cb'\u00fa\u00fa \u0101 \u00be \u00ac \u00a1\u0102\u0102\u0102\u0103\u00d3 -- \u0098 \u00fb \u0104\u0104\u0104\u0104 ", + " \u00f6 \u0099\u0099 \u00cf \u00d7\u0108\u00d7\u00d7\u00d7 \u0109 \u00cf\u00b7\u00b7 \u0106\u010a \u00ff \u00bd\u00b8\u009d\u009d \u00c9\u00ab \u00d5%% &\u00cb\u00fa\u00fa\u00fa\u010b\u010b \u00be \u00ac \u00a1\u00a1 \u0102\u00d3 - \u0098 \u00fb\u00fb \u0104\u0104\u0104\u0104 ", + " \u00f6 \u0099\u0099 \u0108\u010c\u010c \u0109 \u00cf\u010d \u010e\u010a\u010a\u010a\u010a\u010f \u0110 \u0111\u0111\u00b8\u009d\u009d \u00c9\u00c9\u00ab \u00d5\u00d5%% &\u00cb\u00fa\u00fa\u010b \u010b \u00be\u00be \u00ac \u00a1 \u0102\u00d3 - \u0098\u00fb\u00fb \u0104\u0104\u0104\u0104 ", + " \u00f6\u0112 \u0099\u0099 \u010c \u00cf\u0109\u010d \u010e \u010a\u010a\u0110 \u0111\u0113\u0113\u0113\u00b8\u00b8\u009d \u0114\u00ab \u00d5%%% &\u00fa\u00fa\u00fa\u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 - \u0115\u00fb\u0104\u0104\u0104\u0104 ", + " \u00f6\u0116\u0116\u0112\u0112 \u0099 \u010c\u00b7\u00b7\u010d\u010d \u010a\u010a \u010a\u010a \u0110 \u0111\u0113\u0113\u0113\u0117\u0118\u0119\u009d\u011a\u011a \u0114 \u00ab\u00ab\u00d5%% &\u00fa\u00fa \u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 -- \u0115\u0115\u0104 ", + "\u011b \u00f6 \u0116\u0116\u0112\u0112 \u0099\u0099 \u011c\u00b7\u00b7\u00b7\u00b7 \u010d\u010d \u010a\u010a\u010a \u0110 \u0111\u0113\u0113\u0117\u0117\u0117\u0118\u011d\u011e\u011a\u011a\u011f\u011f\u0114 \u00d5\u00d5%% \u00fa\u00fa\u00fa,\u010b \u010b\u010b \u00be\u0120\u0120\u0120 \u00ac \u00a1 \u0102\u0102\u0121\u00d3\u00d3--\u0122\u0122\u0123 \u0115\u0115 ", + "\u0124\u0125\u0125 \u00f6 \u0116\u0112\u0112 \u0099\u0099 \u011c\u0126\u0126 \u010d \u010a\u010a \u0110\u0111\u0127\u0113\u0117\u0128\u0128\u0128\u0129\u011e\u011e\u012a\u012b\u011f\u011f\u011f\u00d5\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b\u010b\u00be\u00be \u00ac\u00ac \u00a1 \u0102\u0121 \u012c\u012d\u012e\u0123 \u0115\u0115 \u012f\u012f", + " \u0124\u0125\u0125 \u00f6 \u0116\u0116\u0112\u0112 \u0099\u011c\u0126 \u0126 \u010d \u0110 \u0127\u0127\u0128 \u0129\u0129\u011e\u011e\u0130\u012b\u012b\u011f\u011f\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b \u0131 \u00ac\u00ac\u00ac \u00a1 \u0121 \u012c \u012e\u012e \u0115\u0115 \u012f\u012f\u012f\u012f ", + " \u0125\u0125 \u00f6\u00f6 \u0116\u0116\u0112\u0112 \u011c\u0126\u0126\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0128 \u0129\u0129\u011e\u011e \u0132\u012b\u012b %% \u00fa\u00fa\u0133\u00da', \u010b \u0131 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00a1 \u0121 \u012d \u0123 \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134", + " \u0135 \u0124\u0125\u0125 \u0116\u0112\u0112 \u0099\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0127\u0136\u0136\u0137\u0137 \u0129\u0129\u011e\u011e \u0138 \u0132\u012b %%% \u00fa\u00fa\u00fa\u0139\u013a\u00cb, \u010b \u013b\u010b \u00ac\u00ac\u00ac\u00ac\u013c\u013c\u013c \u013d \u013e \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 ", + " \u013f \u0135 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141\u0126 \u0110\u0111\u0127\u0127\u0136\u0136\u0136\u0136\u0137\u0137\u0129 \u011e \u0142\u0143\u0132\u0132\u012b\u0144%% \u00fa\u00fa\u00fa\u0133\u0139\u00da', \u010b \u013b \u010b \u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u0145\u0145\u0115\u0115 \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 \u0146\u0146\u0146\u0146", + "\u00bf \u013f \u00f6 \u0147\u0125\u0125\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0110\u0110\u0127\u0127\u0128\u0149\u0149\u014a\u0136\u0136\u0137\u0129 \u011e\u0143\u0143\u0143\u014b\u0132\u014c\u014d\u014d% \u00fa\u00fa\u0133\u0139 \u013a\u014e' \u010b\u010b \u013b\u013b \u010b\u010b \u014f\u014f \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 ", + "\u00bf \u00f6\u00f6 \u0147\u0124\u0125\u0148 \u0116\u0112\u0112 \u0140\u0140\u0141 \u0151\u0151 \u0110\u0111\u0127\u0128\u0149\u0149\u014a\u014a\u0136\u0136 \u0129\u0152\u0143\u0143\u011e\u011e\u0153\u0154\u0155\u014d\u0156\u0156%\u00fa\u00fa\u0133 \u0139 &\u014e', \u010b \u013b\u013b \u010b\u010b \u012f\u012f\u012f \u0134\u0134\u0134\u0134\u0146\u0146\u0150\u0146\u0150\u0150 ", + " \u00f6\u00f6 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141 \u0151\u0157 \u0158\u0111\u0127\u0128\u014a\u0149\u014a\u014a\u0136\u0159\u0159\u0159\u0129\u0152 \u011e\u011e\u0154\u014d\u014d\u0156\u0156\u00fa\u00fa\u00fa\u0133 \u0139 \u00da\u014e', \u010b \u015a\u013b \u010b\u010b \u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150 ", + "\u015b \u00f6 \u0147\u0125\u0125 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0157\u015c \u0110\u0111\u0127\u0127\u0128 \u014a\u0159\u0159\u0159\u0159\u0159\u0159\u0129 \u014d\u014d\u014d\u0156\u0156\u0156\u00fa\u00fa\u0133 \u0139 &\u014e', \u010b\u015a\u015a\u013b\u013b \u013b\u013b\u013b \u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0150\u0150\u0150 \u015d", + "\u015b\u00f6 \u0147\u0124\u015e\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u015c\u015c \u015c \u0110\u0111\u0127\u0127\u0128\u015f\u015f\u015f\u0159\u0159\u0159\u0159 \u0160\u0160\u0161\u0161\u0161\u014d\u014d\u014d\u014d\u014d\u0156\u0156\u00fa\u00fa\u0133\u014c\u014c & ',, \u010b\u015a \u013b\u013b \u013b\u013b\u0162\u013b\u013b \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 \u015d\u015d\u0163", + " \u015b \u0164\u0125\u0125 \u0116\u0116\u0140\u0140\u0141 \u015c\u015c \u015c\u0165 \u0110\u0111\u0127\u0128\u015f\u015f\u015f\u015f\u0161\u0161\u0161\u0161\u0161\u0160\u0160\u0161\u0161\u0161\u014d\u014d\u014d \u0156\u0156\u0156\u00fa\u00fa\u0133 \u014c \u0166 \u014e', \u010b\u010b \u013b\u013b \u013b\u0162\u0162\u0162\u013b\u013b\u013b \u0167\u0167\u0167\u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146 \u0150\u0150\u0150 \u015d\u0163\u0163\u0168\u0169", + "\u016a \u015b\u015b \u0124\u015e\u0125 \u0116\u0140\u0141 \u015c \u0165\u0165 \u0110\u0111\u0127\u0128\u015f\u015f\u015f\u016b\u016b\u016b\u016b\u016b\u016b\u016b\u0160\u0160\u016b\u0161\u0161 \u016c\u0156\u00fa\u00fa\u0133\u0154\u0155\u014c\u014c \u0166\u00da\u014e',\u016d \u010b\u010b \u013b\u013b \u013b \u0162\u0162\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0134\u016e\u0134\u0146\u0146\u0146\u0146\u016f\u016f \u0150\u0150 \u015d\u0163\u0163\u0168\u0169\u0169 ", + "\u0170\u016a \u015b\u015b \u0147\u0124\u0125\u0148 \u0140\u0141 \u015c \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u016b\u016b\u016b\u016b\u0171\u0171\u0171\u016b\u016b\u0160\u016b\u016b\u016b \u016c\u0172\u0172\u0133\u0173\u0173\u0154\u0155\u014c \u0174\u00da\u014e\u00cb ,\u016d \u0175\u0175\u010b\u010b \u013b\u013b\u0176 \u0167 \u0177\u0134\u016e\u016e\u0146\u0146\u0146 \u0178\u016f \u0150\u0150 \u015d\u0163\u0163\u0168\u0169\u0169 ", + "\u0170\u016a\u016a \u0179\u015b \u0147\u0124\u0125\u0125 \u0140\u0141\u0141 \u015c \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u016b\u016b\u0171\u0171\u0171\u0171\u0171\u0171\u0171\u0171\u0160\u016b\u016b\u016b\u016b\u016b \u016c\u016c\u0172\u0172\u017a\u017b\u0173\u0173\u0155\u014c \u0166\u00da \u014e',\u016d\u016d\u0175\u0175 \u0175\u0175\u0175\u010b \u0176\u0176\u0176 \u0167 \u0177\u0177\u0177\u016e\u017c\u0146\u0146 \u0178\u0178\u0178\u016f \u0150 \u015d\u0163\u0163\u0163\u0168\u0169\u0169 ", + "\u0170 \u016a\u016a\u0179 \u015b \u0124\u0125\u0125 \u0140\u0140\u0141 \u015c\u015c \u0110\u0110\u0111\u0127\u015f\u015f\u016b\u016b\u0171\u0171 \u017d\u017d \u0160\u0160\u0171\u016b\u016b\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0173\u0154\u014c \u0166\u00da \u014e',,\u016d\u0175 \u010b\u010b \u0167\u0167\u0167\u0177\u0177\u0177\u0180\u016e\u0181\u017c \u0178\u0178\u0178 \u016f \u0150 \u015d\u0163\u0163\u0182\u0168\u0169\u0169 \u0183\u0183", + "\u0170\u016a\u016a\u0179\u0179 \u015b\u015b \u0147\u0124\u0125\u0148 \u0140\u0140\u0141 \u015c\u015c \u0110\u0111\u0127\u015f\u015f\u015f\u016b\u0171\u0171 \u017d \u017d\u017d\u017d\u017d \u0184\u0184\u0171\u0185\u0185\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0173\u0173\u0155\u014c \u0174\u00da \u014e', \u016d \u010b\u010b \u0167\u0167\u0167\u0177\u0177\u0177\u0180\u017c\u017c\u0181 \u0178\u0178\u0178 \u016f\u016f \u0150 \u015d\u0163\u0163\u0168\u0168\u0169\u0169 \u0183\u0183\u0183 ", + " \u016a\u0179\u0179 \u015b\u015b \u0147\u0124\u0125\u0148\u0140\u0141 \u0186\u0187 \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0171 \u017d\u017d\u0188 \u017d\u017d\u0189\u0184\u0189\u0185\u0185 \u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0173\u0155\u014c \u0174\u00da \u014e',, \u016d \u010b\u010b\u0167\u0177\u0177\u0177\u0180\u0180\u017c\u017c\u0181 \u0178\u0178 \u018a\u018a\u016f \u0150 \u015d\u0163\u0163\u0168\u0168\u0169\u0169 \u0183\u0183 ", + "\u016a \u0179\u018b \u015b\u015b \u0124\u0148\u0148\u0141 \u0186 \u0187 \u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0171 \u017d\u017d \u0188\u0188\u0188\u0188\u0188 \u018c\u0184\u0189\u0185\u0185\u0185\u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0173\u0155\u014c\u018d\u018e\u018e\u018e\u018f\u014e\u00cb', \u016d \u0190\u0190\u0177\u0180\u016e\u017c\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a\u018a\u016f\u016f\u0150 \u015d\u0163\u0163\u0168\u0169\u0169\u0169 \u0183\u0183 ", + " \u0191 \u015b\u015b \u0140\u0147\u0141 \u0192 \u0187 \u0111\u0111\u0127\u015f\u015f\u016b\u016b\u0171 \u017d\u017d \u0193\u0193 \u0188\u0188\u0188\u017d\u0184\u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u017a\u017a\u017a\u017b\u017b\u0173\u018d \u0174\u0194 \u018f\u018f\u014e',, \u016d \u0177\u0177 \u0190\u0190\u0190\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a \u016f\u0150\u0150 \u015d\u0163\u0182\u0168\u0169\u0169\u0169 \u0183\u0183 ", + "\u0179 \u015b\u015b \u0140\u0140\u0141 \u0192\u0192\u0187\u0187 \u0111\u0127\u015f\u015f\u015f\u016b\u0171\u0195\u0195\u0195\u0193\u0193 \u0193\u0193\u0193 \u0188\u017d \u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174\u0194 \u018f\u014e\u00cb', \u016d\u016d \u0177\u0177 \u0198\u016e\u0199\u017c\u0190\u0190 \u016f\u016f\u016f\u016f\u018a\u018a\u018a \u016f \u0150 \u0163\u0163\u0182\u0168\u0169\u0169 \u0183\u0183 ", + "\u019a \u019b\u019b\u015b \u0140\u0141 \u019c\u019c\u019c\u019c\u019c \u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0195\u0195\u0195 \u0193\u0193\u0193\u0193 \u0184\u0189\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174\u00da \u018f \u014e',, \u016d \u0177\u0177 \u0180\u016e\u017c\u017c\u0181\u0181 \u019f\u019f \u016f\u016f\u016f\u016f\u01a0\u01a0\u016f\u016f\u0150 \u015d\u015d\u0163\u01a1\u0168\u0169\u0169 \u0183\u0183 ", + " \u019b \u015b \u0140\u0141\u0141 \u019c\u019c\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u015f\u015f\u016b\u016b\u0195\u0195\u0195 \u0193 \u0184\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174 \u0194 \u01a3\u014e\u00cb',\u01a4\u0177\u0177 \u0180\u016e\u017c\u017c\u0181\u0181 \u01a0\u01a0 \u0150\u0150 \u015d\u0163\u0163\u01a1\u0168\u0169\u0169 \u0183\u0183 ", + " \u01a5 \u019b \u015b\u015b\u0140\u0141\u0141 \u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u015f\u015f\u016b\u016b\u0195\u0195\u0195 \u01a6\u01a6\u01a7\u01a7\u01a7\u01a7 \u01a8\u01a8\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0196 \u0174 \u0194 \u01a9\u01aa\u01a4\u01a4 \u0180\u016e\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0163\u0163\u01a1\u0169\u0169\u0169 \u0183\u0183 ", + " \u01a5\u01a5\u01ab\u01ab\u01ab \u015b\u0140\u0141 \u01a2\u01a2\u01a2 \u01a2\u01a2 \u0111\u0127\u015f\u015f\u015f\u016b\u0195\u0195\u0195 \u01a7\u01ac\u01a7 \u01a7\u01a7\u01a7 \u01ad\u01ad\u01ae\u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0197 \u0174 \u0194\u00da \u01a9\u01a9\u01aa\u01a4\u01a4\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0163\u01a1\u01af\u01af\u0169\u0169 \u0183\u0183\u0183 ", + "\u01b0\u01b1 \u019b\u019b\u01ab \u01ab\u01ab\u01ab \u015b\u015b\u01b2\u01b3 \u019c\u01a2\u01a2\u01b4\u01b4\u01b4\u01b4 \u01a2\u01a2\u0127\u0127\u015f\u015f\u01b5\u0195\u0195 \u01b6\u01a7 \u01ac\u01ac \u01a7\u01ad\u01ad \u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196 \u0174\u0174 \u0194\u00da \u0177\u0177\u01a9\u01b7\u01aa\u01a4\u01a4 \u0181\u0181 \u01a0\u01a0\u01a0\u01a0\u01a0 \u01b8\u0150\u015d\u0163\u0182\u01af\u0168\u0169\u0169 \u0183\u0183 ", + "\u01b1\u01b0\u01b0 \u01b9\u01b9 \u01ab \u01ba\u01bb\u01b2\u019c\u01a2\u01a2\u01b4\u01b4 \u01b4 \u01bc\u0111\u0127\u0127\u01bd\u015f\u01be\u01b5\u01b5 \u01a7\u01b6\u01b6\u01b6 \u01ac\u01ac \u01a7 \u01ae\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u0196\u0196 \u0174 \u01bf\u01c0\u01c1\u0177 \u0180\u0180\u01a9\u01a9\u01aa\u01a4\u01a4\u0181 \u01a0\u01a0\u01a0\u01a0 \u01a0\u01a0\u01a0 \u015d\u015d\u0163\u01af\u01af\u0169 \u0183\u0183 ", + "\u016a\u016a\u01c2\u01b0 \u01c3 \u01c4\u01ab \u01c5\u01c6\u01c7\u01a2\u01a2 \u01b4 \u01c8 \u01c9\u01ca\u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01b5 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac\u01ac\u01a7 \u01ae\u0184\u0184\u019d\u019d\u019e\u019e\u016b\u017a\u017b\u0196\u0197 \u0174\u0174 \u01bf\u01c0\u01c0\u01cc\u0180\u017c\u017c\u01a9\u01b7\u01aa\u01a4\u01a4 \u01a0\u01a0 \u01a0\u01a0\u015d\u01b8\u0163\u0168\u01af\u0169 \u0183\u0183 ", + " \u016a\u016a \u01cd\u01c3 \u019b\u01c4\u01c4 \u01c5\u01ce\u01a2\u01cf\u01b4 \u01c8 \u01c8\u01c9 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5 \u01d0\u01a7 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac \u01ae \u0184\u0185\u019d\u019e\u01d1\u01d1\u01d1 \u0196 \u0174\u0174 \u01c1\u01c1\u01bf\u01c0\u01c0\u01d2\u017c \u0181\u0181\u01a9\u01b7\u01aa\u01a4 \u01a0\u01a0 \u01a0\u015d\u015d\u01d3\u0163\u0182\u0169\u0169 \u0183\u0183 ", + " \u016a \u01cd\u01cd\u019b\u019b\u01ab\u01ab \u01c5\u01ce \u01cf\u01cf\u01cf\u01c8 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5\u01d4\u01d4\u01a7\u01a7\u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6 \u01a7 \u01ae \u0184\u0184\u019d\u01d1\u01d1\u01d1\u01d1\u0196\u01d5\u0174\u0174\u01c1\u01c1\u01d6\u01d7\u01bf\u01c0\u01c0 \u0181\u0181\u0181 \u01d8\u01d9\u01da\u01da\u01a0\u01a0\u01a0\u01a0\u01a0 \u01a0\u015d\u01d3\u01d3\u0163\u0168\u0169\u0169 \u01db\u01db \u0183\u0183 ", + " \u016a \u01c3\u01dc\u019b \u01ab \u01c5\u01ce\u01dd\u01de\u01dd\u01cf\u01cf\u01cf \u0111\u0127\u0127\u01bd\u01bd\u01bd\u01b5\u01b5 \u01d4\u01df\u01df \u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6\u01a7 \u01ae \u0184\u01d1\u01d1\u01d1\u01d1\u016b\u01d5\u01d5\u0174\u01c1\u01d6\u01e0\u01d7\u01d7\u01bf\u01c0\u01c0\u0181\u0181 \u01d8\u01d9\u01da\u01a0 \u01a0\u01d3\u01d3\u0163\u0163\u01e1\u0169\u0169\u01b8 \u01db\u01db \u01e2 ", + "\u01e3 \u016a \u01c3 \u01dc\u01ab \u01c5\u01ce\u01dd\u01de\u01e4\u01dd\u01dd\u01cf\u01cf \u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5 \u01e6 \u01e7\u01d4\u01df\u01df \u01d0\u01d0 \u01cb\u01cb\u01a7\u01a7 \u01ae \u01d1\u01d1\u01d1\u01d1\u01e8\u01e8\u01d5\u01d5\u01e9\u01e0\u01ea\u01eb\u01ec\u01ed\u01bf\u01bf\u01c0 \u01d8\u01ee\u01d9\u01da\u01a0 \u01a0\u015d\u0163\u0163\u0168\u01e1\u01e1\u0169 \u01ef \u01f0\u01f0 \u01db\u01db\u01db \u01e2 ", + "\u01e3\u01e3\u016a \u01c3 \u01ab\u01ab\u01ab \u01f1\u01f1\u01dd\u01de \u01e4\u01f2\u01dd\u01dd\u01cf\u01cf\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5\u01f3\u01e6\u01e6\u01e7\u01d4\u01d4 \u01df\u01df \u01d0\u01d0\u01a7\u01a7\u01cb\u01a7 \u01ae\u01f4\u01f4\u01d1\u01d1\u01f5\u01f6\u01f6\u01e8\u01d5\u01d5\u01ea\u01eb\u01f7\u01ed\u0181\u0181\u01bf\u01c0\u01c0 \u01ee\u01d9\u01da\u01da \u01a0\u015d\u0163\u0163\u0168\u0169\u0169\u0169 \u01ef \u01f8\u01f0\u01f0\u01f0 \u01f9\u01db\u01db \u01e2 ", + " \u01e3\u01e3 \u01c3\u01fa \u01ab \u01c5\u01f1\u01dd\u01de\u01e4\u01e4\u01f2\u01fb \u01dd\u01cf\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5 \u01f3\u01e7\u01e6 \u01e5\u01d4 \u01a7\u01a7\u01df\u01a7\u01a7\u01a7 \u01f4\u01f4\u01f4\u01f4\u01f4\u01fc\u01f5\u01f5\u01f6\u01f6\u01d5\u01d5\u01ed\u01ec\u0181\u0181\u0181 \u01bf \u01d8\u01d8\u01d9\u01da\u01a0 \u01a0\u01a0\u015d\u0163\u0163\u0168\u0169\u0169 \u01ef \u01f8\u01f8\u01f9\u01f9\u01f0 \u01e2 ", + " \u01e3\u01e3 \u01fd\u01fa\u01fa \u01ab \u01c5\u01c5\u01ce \u01fe\u01e4\u01f2\u01f2\u01fb\u01dd \u0127\u0128\u01bd\u01bd\u01bd\u0171\u01e5\u01e5\u01e5 \u01f3\u01e5\u01e5\u01e5\u01d4\u01e5 \u01ff\u01ff\u01f4\u01f4\u01f4\u01f4 \u0174\u01fc\u01fc\u01f5\u01f6\u01f6\u0200\u01d5\u01ec\u0181\u0181 \u0201\u0202 \u01d8\u01ee\u01d9\u0203\u0203\u0203\u0163\u0163\u0168\u0169\u0169 \u01ef \u01f8\u01f8 \u01e2 ", + "\u0174 \u01e3\u01e3\u01e3 \u01fa\u01ab \u01c5\u01ce \u01fe \u0204\u0205\u0206\u01dd\u01dd\u0127\u0127\u01bd\u01bd\u01bd\u0171\u0171 \u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01d4\u01d4 \u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u01f4 \u0174\u0174\u01c1\u01e9\u01fc\u01f5\u01f6\u01f6\u01f6\u01d5\u0181 \u0208\u0208 \u0201\u0202 \u0203\u0203\u0209\u0209\u020a\u0168\u0169\u0169 \u01ef \u01db\u01db \u01e2 ", + "\u0174\u0174 \u020b\u01e3\u01e3\u01e3 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205\u020c\u01dd\u0127\u0127\u0128\u01bd\u01bd\u01be\u0171 \u01e5\u01e5\u01e5\u01e5\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u01d7\u01fc\u01fc\u01f5\u01f6\u01f6\u01d5\u020d \u0208\u0208\u020e \u0201\u0202 \u020f\u0203\u0209\u020a\u0210\u0210\u0210 \u01ef\u01db \u01db\u01db \u01e2 ", + "\u0211\u0174\u0174 \u0212\u0213\u01e3\u01e3\u0214\u0214 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u0171 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0215\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u016e\u016e\u01f7 \u01fc\u01f5\u01f5\u0216\u0217\u020d\u0208\u0208 \u020e \u0201\u0202 \u020f\u020f\u0218\u0219\u021a\u0210\u0210\u0210\u01da \u01ef \u01db\u01db \u01e2 ", + "\u0211\u01c1\u01c1\u0174\u0212 \u0213\u0213\u021b\u0214\u0214\u0214\u0214 \u01fa\u01fa\u01fa\u01c5\u01ce\u01fe\u0204\u0204\u0205 \u020c \u0127\u0128\u01bd\u01bd\u01bd\u0171 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u021c\u0215\u0215 \u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u016e\u016e\u01f7 \u0181\u0181\u01fc\u021d\u021e\u021e\u0216\u020d\u020d \u0201\u0202 \u020f\u0218\u0218\u021f\u0219\u0220\u0220\u0210\u01d8\u01ee\u01d9\u01da \u01ef \u0221\u0221\u0221 \u01e2 ", + "\u0222\u0211\u0211\u0212\u0212\u0174 \u0213\u0213 \u021b\u0214\u0214\u0214\u0214 \u01c5\u01fa\u020c\u020c\u0204\u0205\u0205\u020c \u0127\u0127\u01bd\u01bd\u01bd\u0171\u01ff\u01ff\u01ff\u01ff\u01ff\u0223\u0224\u0224\u0225\u021c\u021c\u021c\u0215\u0215 \u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u0226\u016e\u01d7\u01f7 \u0181\u0181 \u021d\u021e\u021e\u0216\u0216\u020d\u0197 \u0201\u0202 \u020f\u0218\u0218\u021f\u0220\u0220\u0220\u0227\u0227\u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221 ", + "\u0229\u0222\u0211\u0212\u0212\u0174\u0174 \u0213\u0213\u022a\u021b\u021b\u0214\u0214\u0214\u0214 \u020c\u0205\u020c \u0127\u0127\u0128\u01bd\u01bd\u01be\u01ff\u01ff\u01ff\u01ff\u01ff\u022b\u0223 \u021c\u021c\u021c\u022c\u022d \u0215\u0215\u0207\u0207\u0207 \u0174\u01c1\u01c1\u01e9\u0226\u01d7\u016e\u01f7 \u0181\u0181 \u021d\u021d\u021e\u021e\u0216\u020d\u020d \u0201\u0202 \u020f\u0218\u0218\u021f\u0220\u0220\u0220 \u022e \u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2\u022f\u022f\u022f\u022f\u022f ", + " \u0229\u0229\u0222\u0211\u0212\u01c1\u0174\u0174 \u0230 \u021b\u021b\u0214\u0214\u0214\u0214 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff\u0231\u0232\u0232\u022b\u021c\u021c\u0224\u0224\u0225 \u022c\u022d \u0215\u0215\u0207 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u016e\u01f7\u01f7\u0181\u0181 \u021d\u021e\u021e\u0216\u0216\u020d\u0197 \u0233\u0233\u0218\u0218\u021f\u0220\u0220\u0220 \u0234\u022e \u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 \u022f\u022f\u022f\u022f\u022f\u022f ", + "\u0235\u0235 \u0229\u0222\u0211\u0211 \u01c1\u0174\u0230\u0230 \u021b\u021b\u0214\u0214\u0214\u0214\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u0231 \u021c\u021c\u022b\u0223 \u0224\u0225\u0225\u022c\u022d\u0236 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u01d7\u016e\u01f7\u0181\u0181 \u021d\u021d\u021e\u021e\u0216\u020d\u020d\u0237\u0238\u0239\u0239\u0239\u021f\u0220\u0220\u0220 \u023a \u0234 \u022e \u023b\u023b\u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ", + " \u0235\u0235 \u0229\u0222\u0211\u0211\u0230\u0230\u0174\u0174\u0174 \u021b\u021b\u021b\u0214\u0214\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u023c\u021c\u021c\u0232 \u022b \u0223\u0224 \u0225\u0236 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u01d7\u01f7\u01f7\u0181\u0181 \u023d\u021d\u021e\u021e\u0216\u0237\u0237\u0237\u023e\u023f\u0240\u0241\u0220\u0220 \u023a\u023a \u0234 \u0242\u022e\u023b \u0227\u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ", + " \u0235\u0235 \u0229\u0222\u0230\u0230 \u01c1\u01c1\u0174\u0174 \u021b\u0127 \u0243\u0243\u01ff\u01ff\u01ff \u023c\u0231 \u0232\u022b\u022b\u0223\u0236\u0224 \u0174\u0174\u01c1\u01e9\u01e9 \u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u023d \u021d\u0237\u0237\u0237\u0237\u023e\u023e\u023e\u0241\u0241\u0244 \u023a\u023a \u0234 \u0245\u0242\u0242 \u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ", + "\u0246\u0246\u0246\u0246\u0246\u0235\u0235 \u0230\u0222\u0222\u0211\u0211\u01c1\u01c1\u0174\u0174\u0174 \u0247 \u0243\u0243\u0171\u01ff\u01ff \u023c \u0231\u0232 \u022b\u0236 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u0248 \u0249\u0237\u0237\u0237\u023e\u023e\u023e\u024a\u024a\u024b\u0244 \u023a\u023a \u0245 \u024c\u024c \u024d\u024e \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ", + " \u0235\u0235\u024f \u0229\u0229\u0222\u0211\u0211\u0211\u01c1\u0174\u0174\u0250\u0250\u0251\u0243\u0243\u01ff\u01ff \u023c\u0231\u0236\u0232 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0248\u0248\u0249 \u023e\u023e\u0253\u024a\u024a\u024b\u024b\u0254\u0255 \u023a \u0234 \u0256\u024d \u024e \u01d8\u01ee\u01d9\u01da \u01ef\u01ef \u0228 \u01e2 ", + "\u0257 \u0258\u0258\u0258 \u0259\u025a\u025a\u025a \u0229\u0229\u0229\u0211\u0211\u0250\u0250\u0251\u0251\u025b\u025b\u025c\u01ff \u025d\u025d \u023c\u0236 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0252 \u025e\u0248\u0248 \u0222\u0222\u025f\u024a\u0260\u024b\u024b\u024b\u0254\u0254\u0255\u023a \u0256\u0256\u0256\u0256\u0256\u024c \u024e \u01d8\u01ee\u01d9\u01da \u01ef \u0228\u0228 \u01e2 ", + "\u0257\u0257\u0258\u0258\u0258 \u0259\u0261 \u025a\u025a\u025a \u0229\u0229\u0250\u0251\u0251\u025b\u025b\u025c\u025c \u025d\u025d\u025d\u025d \u0174\u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u025e\u0222\u0222\u0222\u0262\u0263\u0264\u0260\u0260\u024b\u024b\u0216\u0254\u0254\u0255\u0265 \u024c \u024e\u024e \u01ee \u01da\u01da \u01ef \u0228\u0228 \u01e2 ", + " \u0266\u0257 \u0259\u0267 \u0268\u0269 \u0250\u0250\u0251\u025b\u025b\u025c\u025c\u0181\u01c1\u0174\u0174\u01c1\u0174\u0174\u0174\u0174\u01c1\u0174\u01c1\u01c1\u01e9\u01e9\u01f7\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u0222\u0222\u0229\u0222\u0262\u0262\u026a\u0263\u026b\u026c\u024b\u024b\u021e\u021e\u0216\u0254\u0255\u0255\u0265\u0265\u0265\u0265 \u026d\u026d\u026d\u026d\u026d \u026e \u024e\u024e \u01d8\u01d8 \u01da\u01da\u01ef\u01ef \u0228 \u01e2 ", + "\u0266 \u0257\u0257 \u0261\u0261\u0267 \u026f \u0270\u0270\u0251\u025b\u025b\u025b\u025c\u0229\u0229\u0229\u0222\u0181\u0181\u0181 \u01e9\u01e9\u0271\u01f7\u01f7\u0181\u0181\u0181 \u0252\u0252\u0252 \u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262\u0272\u0272\u0263\u0273\u026c\u0274 \u021d\u021d\u021e\u0254\u0254\u0255\u020d\u020d\u0265 \u026d\u026d\u026d\u026d\u026d \u026d\u026d\u026e\u026d\u026d\u026d \u024e\u024e \u01d8\u01ee \u01da \u01ef \u0228 \u01e2 ", + "\u0266 \u0257\u0257 \u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u025b\u025b\u025c\u025c \u0229\u0222\u0222\u0229\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0276\u0276\u0276\u0252\u0252 \u0222\u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262\u0262 \u0272\u0277\u0263\u026b\u0278\u026c\u0279 \u027a\u021d\u021d\u0254\u0255\u0255\u027b\u020d\u027c \u026d\u026d\u026d \u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d \u026e \u026d\u026d\u026d \u01d8\u01d8\u01d9\u01da\u01ef\u01ef \u0228 \u01e2 \u027e", + " \u0257\u0257\u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u027f\u027f\u025c\u025c\u0280 \u0281\u0229\u0271\u0229\u0222\u0222\u0222\u0276\u0276\u0276\u0276\u0276\u0222\u0222\u0222\u0222\u0229\u0222\u0222\u0222\u0229\u0229\u0262\u0262\u0262\u0262\u0262 \u0282\u0282\u0272\u0277\u0277\u026b\u0278\u0279\u0283\u0274 \u027a \u0254\u0254\u0255\u0216\u027c\u027c\u027c\u0284\u0285\u0286\u0287\u0287\u027d \u027d\u027d\u027d\u027d \u026d\u026d \u01d8\u01ee\u01d9\u01da\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e", + " \u0288\u0257 \u0267 \u026f \u0270\u0275\u0275\u027f\u027f\u0289\u0289 \u0280 \u0281\u0281\u028a\u028a\u028a \u028b\u0276\u0276\u0276\u0276\u0229\u0229\u0262\u0262\u0262\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028d\u0272\u0277\u0263\u0273\u0278\u0279\u0283\u0274 \u027a \u0254\u0255\u0255\u027c\u027c\u0284\u0284\u0285\u028e \u0287 \u027d\u027d\u027d \u026d\u026d \u01d8\u01ee\u01d9\u01ef\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f", + " \u0288 \u0257\u0257 \u026f \u0270\u0270\u0275\u027f\u027f\u027f\u0289 \u0280 \u0281\u0281\u028a\u028a \u028b\u028b\u028b \u0262\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028c\u028c\u028d\u0277\u026b\u026b\u0278\u0279\u0283\u0274\u027a\u027a \u0254\u0255\u027c\u0284\u0284\u0285\u0285\u020d\u020d\u0290\u0291 \u027d\u027d\u027d \u026d \u01ee\u01ee\u01d9\u01ef\u01ef \u0228\u0228\u01e2\u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ", + " \u0288\u0288 \u0257\u0257 \u0270\u0270\u0275\u027f\u027f\u027f\u0289 \u0280\u0281\u0281\u028a\u028a \u028b\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028c\u028c\u028d\u0277\u0277\u0263\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0293\u027c\u0284\u0284\u0285\u021e\u0216\u027b\u020d\u0290\u0291 \u027d\u027d \u026d\u026d\u01d8\u01ee\u01d9\u01ef \u0228\u0228 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ", + " \u0288\u0288 \u0294\u0294\u0257\u0270\u0270\u0275\u0275\u027f\u027f\u0289\u0289 \u0295\u028a\u028a \u028b\u028b\u0262\u0262\u0262 \u028c\u028c\u028d\u028d\u0277\u0277\u0296\u026c\u0278\u0283\u0283 \u027a\u027a \u0292\u0293\u0297\u0297\u0285\u0285\u021e\u021e\u021e\u0216\u020d\u020d\u0290\u0291\u0291\u0291\u0291 \u027d \u026d\u026d\u01d8 \u01da\u01ef \u01e2 \u027e\u027e\u0298\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ", + " \u0288 \u0294\u0294 \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u029a \u0281\u0281\u028a\u0295 \u028b\u0262\u0262\u0262 \u029b\u029c\u028d\u028d\u0277\u0277\u026b\u026c\u0278\u0283\u0283 \u027a\u027a \u0292\u0297\u0297\u0285\u029d\u029e\u021d\u021e\u021e\u021e\u0216\u020d \u0291\u0291\u0291\u0291\u0291\u0291\u0291 \u027d\u027d \u026d\u01d8\u01d8\u01d9\u029f\u01ef \u01e2\u01e2 \u02a0\u02a0\u02a0\u02a0\u027e\u028f\u028f\u028f\u028f\u028f\u028f ", + " \u0288 \u0294\u0294 \u0299\u0275\u0275\u027f\u027f\u029a\u029a \u0281\u0281\u028a \u02a1\u02a1\u0262\u0262 \u029b\u029c\u028d \u0277\u0263\u0296\u026c\u0278\u0283\u0283 \u027a \u0292\u0297\u0297\u02a2 \u029e\u029e\u021d\u021d\u021e\u021e\u0216\u0216\u020d \u02a3 \u0291\u0291\u0291\u0291\u0291\u0291\u0291 \u027d\u027d \u026d\u01d8\u01d9\u01ef\u01ef \u02a4\u02a0\u02a0\u02a0\u02a5\u02a5\u02a5\u02a6\u02a6\u028f ", + " \u0288 \u0294\u0299\u0299\u0275\u027f\u027f\u027f\u029a \u0281\u0281\u028a \u02a7\u02a8\u02a8\u02a8 \u029b\u029c\u028d \u0277\u0263\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0297\u0297 \u02a9\u029e \u021d\u02aa\u021e\u021e\u0216\u020d \u02a3 \u02ab\u0291\u0291\u0291\u0291\u0291\u0291\u027d\u027d \u01d8\u01ee\u01d9\u029f \u02a4\u02a4\u02a4\u02a4\u02a5\u02a5\u02a5\u02a5\u02a5\u02ac\u02ac ", + "\u0288\u0288 \u0299\u0299\u0275\u0275\u027f\u027f\u029a \u0281\u028a \u02ad\u02ad \u02a8\u02ae \u029c\u028d\u028d\u02ae\u0277\u026b\u0273\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0297 \u02a9\u02a9 \u021d\u021d\u021e\u021e\u0216\u0216\u020d \u02a3 \u02ab \u027d\u027d \u026d\u02af\u02b0\u02b1\u02b2\u02b2\u02b2\u02a4\u02a5\u02a5\u02a5 \u02ac\u02ac ", + "\u0288 \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02b4\u02b5 \u02a7\u02ad\u02ad \u02ae \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u026b\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9\u029e \u021d\u021d\u021e\u021e\u0216\u020d\u02b6 \u02a3 \u02ab \u027d \u026d\u02b2\u02b2\u02b7\u02b7\u02b7\u02b8 \u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0275\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02b4\u02b5 \u02a7\u02ad \u02b9\u02ae \u029b\u029c\u028d\u028d\u0277\u0263\u026b\u0273\u0278\u0283\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u02aa\u021d\u021e\u021e\u0216\u0216\u02ba \u02a3\u02a3 \u02ab \u027d \u02b2\u02b2\u02b7\u02b7\u02b7\u02b7\u01da\u02bb\u02bb \u02ac\u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02b4\u02b4 \u02ad\u02ad \u02b9\u02b9 \u02ae \u029b\u029c\u028d\u02ae\u0277\u0277\u0296\u0273\u0278\u0283\u0283 \u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u021d\u02bc\u021e\u021e\u0216\u02ba\u02b6 \u02a3 \u02ab \u02bd\u02b2\u02b7\u02b7\u02b7\u02af\u02b1\u01da\u01da \u02ac\u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02be\u02bf \u02a7\u02ad \u02b9\u02b9 \u02ae \u029b\u029c\u028d\u02ae\u0277\u0263\u026b\u026c\u0278\u0283\u0283\u027a\u027a \u0292\u0297\u0297 \u02a9\u02a9 \u029e \u02bc\u021e\u021e\u0216\u0216\u02b6 \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02b7 \u026d\u02af\u02b1\u01da\u01da \u02c1\u02c2 \u02ac\u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf \u02a7\u02ad \u02b9\u02b9 \u02ae\u02ae \u029b\u029c\u028d\u02ae\u0277\u026b\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e\u029e \u02bc\u02bc\u021e\u021e\u0216\u02ba \u02a3 \u02ab \u02bd\u02bd\u02c0\u02c0 \u02af\u02b0\u02b1\u01da\u01da \u02c2\u02c2 \u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae\u02ae \u02c3\u02c3 \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u0296\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u02bc\u021e\u021e\u0216\u02ba \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02c0 \u02af\u02af\u02b1\u01da\u01da \u02c2 \u02ac\u02ac\u02ac\u02ac ", + " \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae\u02c3\u02c3 \u029b\u029c\u028d\u028d\u0277\u0263\u026b\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0297\u0297 \u02a9\u02a9 \u02c4\u02c4\u02c4\u02c4\u02c4 \u02bc\u021e\u021e\u0216 \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02c0 \u026d\u02b0\u02b1\u01da \u02c2 \u02ac\u02ac\u02ac\u02ac", + "\u02c5\u02c5 \u0299\u0299\u0275\u027f\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u0273\u0278\u0279\u0283\u0274\u027a \u0292\u0297 \u02a9 \u02c4\u02c4 \u02c4\u02c4 \u02bc\u021e\u021e\u0216\u02b6 \u02a3\u02a3\u02a3\u02a3\u02a3\u02a3\u02a3 \u02ab \u02bd\u02bd\u02c6\u02c0\u02c7 \u026d\u02af\u02b1\u02b1\u01da \u02c2 \u02ac", + " \u02c5\u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf \u02ad \u02b9\u02b9 \u02ae\u02ae \u029b\u029c\u028d\u02ae\u0277\u0263\u0296\u026c\u0278\u0283\u0283\u0274\u027a \u0292\u0292\u0297 \u02a9\u02c8 \u02c4\u02c4\u02c4 \u02c4 \u02bc\u021e\u02ba\u02ba \u02a3\u02a3\u02a3\u02a3\u02a3\u02bd\u02bd\u02bd\u02c6\u02c6 \u02c7\u02c7 \u026d\u02b0\u02b0 \u01da \u02c2 ", + " \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02bf\u02bf\u02ad\u02ad \u02b9\u02b9 \u02ae\u02ae\u02ae\u029b\u029c\u028d\u02ae\u0277\u0263\u026b\u026c\u0279\u0283\u0283\u027a\u027a \u0292\u0292 \u02c9\u02c9 \u02ca\u02ca\u02c4\u02c4 \u02c4 \u02bc\u02bc\u02ba\u02cb \u02cc\u02cc\u02bd\u02c6\u02c6 \u02cd\u02c7\u02ce\u02ce \u026d\u02af\u02b1 \u01da \u02c2\u02c2 ", + " \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02bf\u02bf\u02a7\u02ad \u02b9\u02b9 \u029b\u028d\u028d\u02ae\u0277\u0263\u0296\u026c\u0278\u0283\u0283\u027a\u027a \u0292\u02cf \u02c9 \u02ca \u02c4 \u02c4\u02d0\u02d0\u02ba \u02cc\u02cc\u02d1\u02d1 \u02cd\u02cd\u02cd \u02c7 \u02ce \u026d\u02b0\u02b1\u01da\u01da \u02c2\u02c2 ", + "\u0299\u0299\u0275\u027f\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9\u02b9 \u029c\u028d\u028d\u0277\u0277\u02d2\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u02d3\u02cf \u02c9 \u02c4\u02c4 \u02c4\u02c4\u02c4\u02bc\u02bc\u02ba\u02b6 \u02cc\u02cc\u02c6\u02c6\u02d4 \u02c7\u02ce\u02ce \u02af\u02af\u02b1\u01da\u01da \u02c2 ", + "\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf\u02a7\u02ad \u02b9\u02b9 \u029c\u028d\u028d\u0277\u0277\u02d2\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u02cf \u02d5\u02d5\u02c9 \u02c4\u02c4\u02c4 \u02d6\u02bc\u02bc\u02ba \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7\u02c7\u02ce\u02ce \u026d\u02b0\u02b1\u01da \u02c2 ", + "\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf\u02bf\u02ad \u02b9\u02b9 \u02ae\u029c\u028d\u028d\u0277\u0277\u02d2\u02d7\u02d8\u0279\u0283\u0274\u027a \u0292\u02cf \u02d5\u02d5\u02c9 \u02d6\u02bc\u02ba\u02ba \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7\u02c7\u02ce \u02af\u02b1\u02b1\u01da \u02c2 ", + "\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02bf\u02bf\u02a7\u02ad \u02b9 \u02ae\u02ae\u029c\u029c\u028d\u02d9\u0277\u02da\u02db\u02d8\u02dc\u0283\u0274\u027a \u0292\u0292\u02cf \u02d5\u02d5 \u02c9 \u02d6\u02bc\u02bc\u02ba\u02b6 \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7 \u02ce \u02b0\u02b1 \u01da \u02c2\u02c2 ", + "\u027f\u027f\u029a\u02b3\u02b3 \u02be\u02bf\u02ad\u02ad \u02b9 \u02ae\u02ae \u029c\u028d\u028d\u02d9\u0277\u02d7\u02db\u02dc\u02dd\u02de\u027a\u027a \u0292\u0292\u02cf \u02d5 \u02c9\u02c9 \u02d6\u02bc\u02bc\u02ba\u02b6\u02b6\u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7 \u02ce \u02af\u02af\u02b1\u01da\u01da \u02c2\u02c2 ", + "\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae \u029c\u028d\u028d\u02d9\u0277\u02d7\u02db\u02dc\u02de\u02de\u027a\u027a \u0292\u0292\u02cf \u02d5 \u02c9 \u02d6\u02d6\u02bc\u02bc\u02ba\u02ba\u02cc\u02cc\u02c6\u02c6\u02df\u02df\u02e0 \u02d4 \u02c7 \u02ce \u02af\u02b0\u02e1\u01da\u01da ", + "\u027f\u029a\u02b3 \u02bf\u02bf\u02ad \u02b9\u02b9 \u02ae \u029c\u028d\u028d\u02d9\u0277\u02db\u02d8\u02dc\u02de \u027a\u027a \u0292\u0292\u02cf \u02d5\u02d5 \u02c9 \u02d6\u02d6\u02bc\u02cb\u02e2\u02cc\u02e3\u02c6 \u02e0\u02e0\u02e0\u02d4\u02d4\u02d4\u02d4\u02d4 \u02c7\u02c7\u02e4\u02ce \u02af\u02b0\u02b1\u01da ", + "\u029a\u02b3 \u02bf\u02bf\u02a7 \u02b9\u02b9 \u02ae\u029c\u028d\u02d9\u02d9\u0277\u02d8\u02db\u02de\u02de \u027a\u027a \u0292\u02e5\u0292 \u02d5\u02d5 \u02c9 \u02e6 \u02d6\u02bc\u02bc\u02e2\u02cb\u02e3\u02c6 \u02d4\u02d4\u02d4\u02d4\u02d4\u02d4\u02d4\u02c7\u02c7\u02e4\u02ce \u02e7\u02b0\u02e8\u01da ", + "\u02b3\u02b3 \u02be\u02bf\u02ad\u02ad \u02b9\u02b9 \u02ae\u02ae\u02d9\u02d9\u0277 \u02d8\u02dd\u02dd \u027a\u027a \u0292\u02e5\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6\u02e6 \u02d6\u02e9\u02e9\u02cb\u02ea\u02c6 \u02d4\u02c7\u02e4\u02e4\u02ce \u02af\u02b1\u02e1\u01da ", + "\u02b3 \u02be\u02bf\u02a7\u02ad \u02d9\u0277\u0277 \u02dc\u02dd \u027a\u027a \u02e5\u02e5\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02e9\u02e9\u02e9\u02cb\u02cb\u02ec \u02ed\u02c7\u02e4\u02ce\u02ce \u02af\u02e7\u02e8\u02e8\u01da ", + " \u02bf\u02a7\u02ad \u02d9\u0277\u0277 \u02dc\u02ee \u027a\u027a\u0292\u0292\u02cf \u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02eb\u02ef\u02f0\u02f0\u02d6\u02ec\u02ec\u02ec\u02ec \u02ed \u02c7\u02e4\u02ce\u02ce \u02f1\u02f1 \u02af\u02e7\u02b1\u01da\u01da ", + " \u02bf\u02bf\u02a7 \u02d9\u0277\u02f2\u02ee\u02dc \u027a\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02eb\u02f0\u02f0\u02f3\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec \u02ed \u02c7\u02c7\u02e4\u02ce\u02ce\u02f1\u02f1 \u02e7\u02b0\u02e8\u01da\u01da ", + " \u02be\u02bf\u02ad \u02d9\u02d9\u0277\u02f2\u02f5\u02ee\u027a\u027a\u0292\u0292\u0292 \u02d5\u02d5 \u02c9 \u02e6 \u02f6\u02eb\u02eb\u02f0 \u02f3\u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f7\u02ec \u02f8\u02e4\u02e4\u02f1\u02f1 \u02af\u02b0\u02e1\u01da\u01da ", + "\u02be\u02bf\u02a7\u02ad \u02d9\u02d9\u0277\u02f2\u02f5\u02f9\u02fa\u02fa\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02fb\u02f6\u02eb\u02f0\u02f0 \u02f3\u02f4\u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f7\u02f7\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f8\u02e4\u02e4\u02ce \u02af\u02af\u02b1\u02e1\u01da\u01da ", + "\u02bf\u02ad\u02ad \u02d9\u0277\u0277\u02f5\u02f5\u02f9\u02fa\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02f6\u02f6\u02f6\u02eb\u02f0 \u02f3\u02f3\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f7\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02f8\u02ec\u02e4\u02e4\u02ce \u02af\u02af\u02b1\u02e1\u01da ", + "\u02a7\u02ad \u02d9\u0277 \u02f5\u02f5\u02f9\u02fa\u0292\u0292 \u02d5 \u02c9\u02c9 \u02fb \u02f0\u02f0 \u02f3\u02f3\u02f3\u02f3\u02f4\u02f3\u02f3\u02f3\u02f3\u02f3\u02f7\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02ec\u02ec\u02f8\u02ec\u02ec\u02e4\u02ce \u02af\u02b0\u02b1 \u01da ", + "\u02ad \u02d9\u02d9\u0277 \u02f9\u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02f4\u02f8\u02ec\u02ec\u02ec\u02ce\u02ce \u02af\u02b0\u02b1 \u01da ", + "\u02ad \u02d9\u02d9\u0277 \u02f9\u02f9\u02fa\u0292\u02cf \u02c9 \u02f8\u02f4\u02ec\u02ec\u02ec\u02ec\u02ce \u02af\u02b1\u02b1\u01da\u01da ", + " \u02d9\u0277\u0277 \u02f9\u02f9\u0292\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02af\u02b1\u02b1\u01da\u01da ", + " \u02d9\u02d9\u0277 \u02f9\u02f9\u0292\u0292 \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1\u02b1\u01da ", + " \u02d9\u02d9\u0277 \u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da ", + " \u02d9\u0277 \u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da ", + " \u02d9 \u02f9\u02f9\u02fa\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af \u02b1\u01da\u01da ", + " \u02f9\u02f9\u0292\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1\u02b1\u01da ", + " \u02f9\u02f9\u0292\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-1.0-grid-reference.json b/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-1.0-grid-reference.json new file mode 100644 index 000000000..6565f65e9 --- /dev/null +++ b/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-1.0-grid-reference.json @@ -0,0 +1,891 @@ +{ + "keys": [ + "", + "330", + "155", + "74", + "57", + "749", + "788", + "201", + "202", + "181", + "691", + "774", + "228", + "46", + "523", + "73", + "530", + "384", + "286", + "385", + "1", + "156", + "644", + "361", + "531", + "43", + "449", + "93", + "328", + "527", + "605", + "589", + "288", + "215", + "635", + "532", + "588", + "154", + "138", + "287", + "637", + "638", + "529", + "576", + "362", + "348", + "45", + "639", + "497", + "300", + "329", + "237", + "600", + "137", + "534", + "636", + "595", + "103", + "14", + "180", + "232", + "593", + "104", + "353", + "526", + "592", + "594", + "136", + "352", + "327", + "323", + "203", + "490", + "415", + "442", + "342", + "258", + "528", + "596", + "599", + "157", + "343", + "331", + "257", + "598", + "412", + "313", + "335", + "277", + "89", + "597", + "344", + "431", + "276", + "126", + "113", + "108", + "107", + "591", + "590", + "407", + "414", + "147", + "372", + "369", + "413", + "337", + "124", + "122", + "110", + "174", + "406", + "75", + "82", + "83", + "99", + "97", + "72", + "278", + "173", + "472", + "481", + "336", + "159", + "153", + "100", + "102", + "96", + "200", + "266", + "265", + "263", + "269", + "231", + "446", + "371", + "66", + "409", + "410", + "315", + "179", + "182", + "419", + "392", + "391", + "390", + "525", + "417", + "411", + "183", + "479", + "473", + "146", + "475", + "474", + "401", + "421", + "445", + "356", + "483", + "480", + "551", + "583", + "325", + "324", + "476", + "582", + "364", + "389", + "393", + "839", + "724", + "440", + "227", + "620", + "462", + "477", + "268", + "267", + "225", + "464", + "16", + "271", + "535", + "463", + "299", + "693", + "261", + "270", + "247", + "548", + "467", + "465", + "422", + "241", + "466", + "238", + "239", + "246", + "489", + "634", + "671", + "333", + "326", + "488", + "482", + "633", + "448", + "243", + "248", + "461", + "460", + "332", + "378", + "577", + "484", + "471", + "381", + "25", + "188", + "355", + "470", + "565", + "469", + "334", + "379", + "284", + "279", + "175", + "667", + "562", + "380", + "665", + "550", + "373", + "354", + "632", + "485", + "570", + "363", + "575", + "673", + "585", + "131", + "404", + "285", + "587", + "78", + "145", + "85", + "41", + "773", + "739", + "478", + "87", + "121", + "40", + "358", + "226", + "260", + "283", + "687", + "690", + "486", + "133", + "672", + "95", + "322", + "321", + "195", + "264", + "194", + "177", + "396", + "359", + "402", + "55", + "686", + "619", + "15", + "382", + "397", + "319", + "735", + "212", + "236", + "282", + "280", + "618", + "615", + "614", + "403", + "376", + "59", + "204", + "786", + "640", + "641", + "375", + "374", + "400", + "320", + "58", + "199", + "692", + "584", + "377", + "395", + "405", + "398", + "56", + "579", + "670", + "31", + "357", + "505", + "493", + "784", + "743", + "50", + "92", + "38", + "213", + "847", + "741", + "492", + "841", + "254", + "747", + "827", + "568", + "39", + "53", + "439", + "753", + "224", + "607", + "5", + "61", + "158", + "840", + "438", + "214", + "835", + "223", + "626", + "22", + "13", + "838", + "302", + "54", + "52", + "708", + "769", + "697", + "165", + "118", + "62", + "494", + "491", + "301", + "9", + "222", + "622", + "423", + "296", + "317", + "318", + "252", + "631", + "495", + "304", + "710", + "762", + "36", + "123", + "308", + "760", + "630", + "621", + "674", + "2", + "3", + "253", + "255", + "846", + "77", + "316", + "771", + "628", + "453", + "291", + "383", + "722", + "564", + "295", + "292", + "365", + "830", + "845", + "617", + "624", + "666", + "662", + "581", + "42", + "294", + "726", + "694", + "627", + "654", + "661", + "456", + "48", + "47", + "716", + "732", + "836", + "623", + "507", + "629", + "606", + "651", + "571", + "580", + "574", + "572", + "293", + "837", + "613", + "457", + "65", + "459", + "23", + "758", + "834", + "764", + "831", + "780", + "844", + "144", + "125", + "719", + "184", + "616", + "679", + "681", + "458", + "833", + "713", + "825", + "166", + "139", + "682", + "17", + "511", + "509", + "29", + "832", + "770", + "772", + "766", + "768", + "689", + "842", + "220", + "610", + "675", + "518", + "63", + "26", + "27", + "219", + "221", + "506", + "677", + "120", + "714", + "498", + "680", + "35", + "730", + "738", + "678", + "676", + "573", + "37", + "443", + "740", + "717", + "502", + "642", + "130", + "444", + "703", + "742", + "826", + "767", + "501", + "503", + "142", + "117", + "18", + "28", + "731", + "745", + "90", + "569", + "70", + "20", + "715", + "808", + "170", + "727", + "515", + "514", + "521", + "755", + "191", + "185", + "684", + "557", + "516", + "513", + "522", + "311", + "234", + "556", + "519", + "517", + "701", + "310", + "545", + "450", + "699", + "696", + "733", + "350", + "211", + "520", + "303", + "725", + "736", + "702", + "823", + "210", + "64", + "816", + "822", + "820", + "349", + "524", + "140", + "345", + "746", + "815", + "814", + "189", + "192", + "190", + "555", + "135", + "24", + "705", + "744", + "698", + "813", + "193", + "553", + "538", + "546", + "643", + "33", + "34", + "510", + "721", + "818", + "712", + "707", + "539", + "750", + "795", + "817", + "12", + "351", + "559", + "603", + "601", + "604", + "794", + "793", + "783", + "683", + "206", + "544", + "76", + "734", + "819", + "781", + "789", + "32", + "706", + "805", + "785", + "787", + "297", + "235", + "105", + "44", + "542", + "759", + "807", + "791", + "711", + "290", + "347", + "289", + "536", + "51", + "757", + "728", + "811", + "810", + "852", + "425", + "160", + "430", + "169", + "778", + "704", + "504", + "779", + "709", + "134", + "98", + "4", + "541", + "346", + "809", + "339", + "305", + "685", + "148", + "540", + "752", + "341", + "167", + "162", + "163", + "149", + "754", + "748", + "340", + "10", + "168", + "67", + "828", + "824", + "782", + "688", + "109", + "554", + "763", + "756", + "428", + "112", + "68", + "496", + "127", + "229", + "128", + "161", + "761", + "829", + "132", + "249", + "176", + "561", + "306", + "537", + "111", + "171", + "307", + "432", + "309", + "19", + "164", + "250", + "178", + "695", + "129", + "116", + "804", + "775", + "197", + "360", + "21", + "802", + "800", + "806", + "803", + "801", + "799", + "797", + "798", + "217", + "216", + "718", + "69", + "150", + "7", + "790", + "338", + "843", + "720", + "152", + "151", + "86", + "8", + "207", + "796", + "233", + "88", + "218", + "560", + "209", + "6", + "777", + "452", + "208", + "172", + "776", + "558", + "451" + ], + "data": {}, + "grid": [ + " ! ##$ %%&'' ( )) *** ", + " ! ##$ %%+', ( ))) ** - ", + " !! #.$ %%&+' ( ))) ** - ", + " / 0 ! #.$ %%&', ( ))) ** - ", + " / 1 0 ! #.$ 2 %%&+', ( ))3 *** - ", + " / 1 00 !! #.$ 4 2 %%&', ( )) 33 ** -- ", + " / 1 000 ! #.$ 4 222 %%%+',55 ( )) 3 ** -- ", + " / 1 66700 ! 8888 ##.$4 22 %%&',555 ( )) 3 ** -- ", + " / 1 99667000 ! 888 #..$4 222 :%%+',55; ( )) 33*** -- ", + " / 1 99 667700 ! 8 ##.$$4 22 :%%&', 55 ( )) 33** -- ", + " / 1 99 66770<0 ! 8 ##.$=422 :%%+',55; ( )) **3 -- ", + " />>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ", + " / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%&+',555 ( ) H 3--- BB BB ", + " / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #O.G= ::%%&' ,55; ( ) * 3- B ", + " //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ", + " / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&+ ,55; () TT - BBBBBBBBB ", + "W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ", + "//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&+ ,555 ))TT] - BB ^ ", + "bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ", + "/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ", + " bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&' ,555 hh iT ] - B nnn ", + " o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ", + " o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{", + " oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081", + " o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ", + " o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',55\u008d\u008dh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008f\u008f\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0090\u0081\u0081 ", + " o j kq |||\u0084\u0084\u0091\u0087\u0086\u0086 \u0092\u0088\u0088\u0088\u0088\u0088\u0088\u0093\u0094`\u0095\u0095\u0095\u0095\u0095\u0095\u0095\u0096\u0096&+\u0096,\u0096\u0096\u0096\u008d\u008d\u0082\u0082\u0082\u0082\u0082\u0097\u0097\u0097\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u0098 -- \u0099 \u0090 ", + " o jj \u009a\u009b\u009a kkk| \u009c\u0087\u0091\u0091 \u0086\u0086 \u0092\u0092\u009d\u009d\u0088\u0088\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u00a0\u00a0\u00a0\u00a0+\u00a0,\u00a0\u00a0\u0097\u0097\u00a1\u0097\u0097\u0097\u0097 \u00a2\u00a3\u00a4\u00a5\u00a5\u00a6 \u00a7\u00a7\u00a7\u00a7--- \u0099\u0099 \u0090 ", + " o jj \u009a\u009a\u009b \u009a\u009a\u009a k \u0087\u009c \u0091 k\u00a8\u009d\u00a9\u00aa\u009e\u00ab\u00ab\u00acx\u00ad %%%&',55 \u00ae \u00a2\u00a3 \u00af\u00af\u00a6\u00a7-- \u0099 \u0090 ", + " o j \u009a \u009b \u009a kkkkkkkkkk\u00b0kkk \u009d\u009d\u009e\u009e\u00b1\u00b2 x\u00b3 %%&&',55 \u00ae \u00a2\u00a3 \u00af - \u0099\u0099 \u0090 ", + "\u00b4\u00b4\u00b4 o j \u009a \u009b \u00b5 \u00b6\u00a8\u009d\u009e\u009e\u00b1\u00b2x \u00ad\u00b3 %%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ", + " \u00b4\u00b4\u00b4o j \u009a\u009a \u009b\u009b \u00b8\u00b9 \u00b5 \u00b6\u00a8\u00ba\u009e \u00b1\u00b2x\u00ad \u00b3%%%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ", + " \u00b4\u00b4\u00b4 jj \u009a\u009a \u009b \u00bb\u00bc \u00b8\u00b9\u00b9\u00b9 \u00bd\u00bd\u00bd\u00bd\u00be \u00bf\u00ba\u00ba\u009e\u00b1 \u00b2x\u00ad\u00b3 %%%&+',5\u00c0 \u00ae \u00a2 \u00a3\u00b7\u00af - \u0099 \u0090 ", + "\u00c1 \u00b4\u00b4\u00b4 jj \u009a \u009b \u00bb \u00bc\u00bc\u00bc \u00c2 \u00b9\u00b9 \u00bd\u00bd\u00bd \u00be \u00bf\u00ba\u009e\u009e\u00b1\u00b2 x\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a2\u00a3\u00b7\u00b7\u00af - \u0099 \u0090 ", + " \u00c1\u00c1 \u00b4\u00b4 j \u009a\u00c3 \u009b\u009b\u009b\u00bb \u00c4\u00c4\u00c2\u00b8 \u00b9 \u00c5 \u00c6 \u00bf\u00bf\u00ba\u009e \u00b1\u00b2x\u00ad\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a3\u00a3\u00b7\u00b7\u00af- \u0099 \u0090 ", + " \u00c1\u00c1 j \u009a\u009a\u00c3 \u009b\u00c7\u00c7 \u00c8 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b9 \u00c5 \u00c6 \u00bf\u00c9\u00ba\u009e \u00ca\u00ca\u00b2\u00cb\u00b3\u00b3 %% \u00cc\u00cd,55 \u00ce \u00ae \u00a2 \u00a3 \u00b7\u00cf\u00cf- \u0099 \u0090 ", + " \u00c1\u00d0\u00d0\u00d0 jj j \u009a\u009a\u00c3\u00c3\u00d1\u00d1\u00d1\u00d1\u00d1\u00bb\u00d1 \u00d2\u00c7 \u00c8 \u00b9 \u00c5 \u00c6\u00c6 \u00bf\u00ba\u00ba\u009e \u00b2\u00cb\u00b3 %%%&\u00cc',55 \u00ce \u00ae \u00a2\u00a2\u00d3\u00d3\u00d4\u00d5 -- \u0099 \u0090 ", + " \u00c1\u00c1\u00d0\u00d0j jj \u009a\u00d1\u00d1\u00c3 \u00d6\u00d1\u00d1\u00d2 \u00c7\u00c8 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%%&\u00cc',55 \u00ce \u00ae\u00ae \u00a2\u00d8\u00d3 \u00d5\u00d5 - \u0099 \u0090 ", + " \u00c1\u00c1 \u00d0\u00d0 \u009a\u00d1\u00d1 \u00c3\u00c3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00da \u00d1\u00d1\u00c8 \u00b9 \u00c5 \u00c6 \u00db\u00bf\u00ba\u009e x\u00cb\u00ad %%%&\u00dc',55\u00ce\u00c0 \u00ae \u00a2\u00a2\u00dd\u00de \u00d5 - \u00df\u00df\u0099\u0099 \u0090 ", + " \u00c1\u00c1 \u00d0\u00d0 \u009a\u00e0\u00d1 \u00d9\u00d9 \u00e1 \u00d9\u00d9\u00d9 \u00e2\u00d1\u00d1 \u00b9 \u00c5 \u00e3\u00c6 \u00bfx\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00de\u00de \u00d5 - \u00e4\u00df \u0099 \u0090 ", + " \u00c1 \u00d0\u00d0 \u009a\u009a\u00d1\u00e0\u00e0\u00e0 \u00e5\u00e5\u00e1\u00e5 \u00d9\u00e2 \u00d1 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2\u00a2 \u00dd\u00dd \u00d5 -- \u00e6\u00e7\u00e8 \u0099\u0099 \u0090 ", + " \u00c1 \u00e9 \u009a \u00d1\u00ea\u00ea\u00ea \u00e5 \u00e5\u00e5 \u00eb\u00d9\u00d9 \u00d1 \u00b9 \u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd -- \u00e6\u00e6\u00e7\u00e8 \u0099 \u0090 ", + " \u00c1\u00c1 \u00e9\u00ee \u00ef\u009a \u00d1\u00f0\u00f0\u00d9 \u00e5\u00e5 \u00eb\u00e5 \u00d9\u00d9 \u00d1\u00d1 \u00b9 \u00f1\u00f1\u00ec\u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd\u00dd- \u00e6\u00f2\u00f3\u00f3\u00f3\u0099 \u0090 ", + " \u00c1 \u00ee\u00ee\u00ef\u00ef \u009a\u00d1\u00f4\u00f0\u00d9 \u00e5 \u00e5 \u00d9\u00f5\u00f5\u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00f1\u00ec\u00ec \u00ed \u00f7\u00bf\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc' 55 \u00c0 \u00ae \u00a2\u00a2 \u00d5\u00d5 - \u0099 \u0090 ", + " \u00c1 \u00f8\u00ef\u00f9\u00f9\u00f9\u00f9\u009a\u00d1 \u00d9 \u00fa\u00e5 \u00e5 \u00d9\u00f5 \u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00ec \u00ed \u00fb\u00f7\u00f7\u00f7\u00f7\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cc' \u00fc\u00fc \u00c0 \u00ae\u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ", + " \u00f8\u00f8\u00f8 \u00f9\u009a\u00d1 \u00d9\u00fa \u00e5\u00e5 \u00e5 \u00d9 \u00d1\u00b9\u00b9 \u00f6\u00f1\u00ec\u00ed\u00ed \u00fb\u00bf\u00ba\u009e\u009e\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0 \u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ", + " \u00f8 \u00ef\u00ef\u00f9\u00f9\u009a \u00d1 \u00d9 \u00e5\u00ff\u00e5\u00e5 \u00e5\u00e5 \u00d9 \u00d1\u00b9 \u00f6\u00f6 \u00bf\u00ba\u009e\u00f7 x\u00cb\u00ad\u00ad \u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0\u00c0 \u00ae \u00a2 \u00d5 - \u0099 \u00fd ", + " \u00f8\u00f8 \u00ef\u00f9\u009a \u00d1\u00d1 \u0100\u00d9\u00d9\u00ff\u00ff \u0101 \u00d9 \u00b9\u00b9 \u0102 \u00ba\u00ba\u009e\u0103 x\u00cb\u00ad \u00d7%% &\u00cd,\u00fc\u00fc\u00fe\u00fe \u00c0 \u00ae \u00a2 \u0104\u0104\u0105 - \u0099 \u00fd \u0106\u0106\u0106", + " \u00f8\u00f8 \u00ef\u00ef \u00d1\u00d1\u0107 \u00d9\u00d9\u00d9 \u0101 \u00d9\u00d9 \u00d1\u00b9 \u0108 \u0102 \u00ba\u00ba\u009e\u0109xxx\u00cb\u00ad \u00d7%% &\u00cd'\u00fc\u00fc \u00fe \u00c0 \u00ae \u00a2\u0104\u0104\u0104\u0105\u00d5 -- \u0099 \u00fd \u0106\u0106\u0106\u0106 ", + " \u00f8 \u009a\u009a \u00d1 \u00d9\u010a\u00d9\u00d9\u00d9 \u010b \u00d1\u00b9\u00b9 \u0108\u010c \u0102 \u00bf\u00ba\u009e\u009e \u00cb\u00ad \u00d7%% &\u00cd,\u00fc\u010d\u010d\u010d \u00c0 \u00ae \u00a2\u00a2 \u0104\u00d5 - \u0099 \u00fd\u00fd \u0106\u0106\u0106\u0106 ", + " \u00f8 \u009a\u009a \u010a\u010e\u010e \u010b \u00d1\u010f \u0110\u010c\u010c\u010c\u010c\u0111 \u0112 \u0113\u0113\u00ba\u009e\u009e \u00cb\u00cb\u00ad \u00d7\u00d7%% &\u00cd'\u00fc\u010d \u010d \u00c0\u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0099\u00fd\u00fd \u0106\u0106\u0106\u0106 ", + " \u00f8\u0114 \u009a\u009a \u010e \u00d1\u010b\u010f \u0110 \u010c\u010c\u0112 \u0113\u0115\u0115\u0115\u00ba\u00ba\u009e \u0116\u00ad \u00d7%%% &\u00dc'\u00fc\u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0117\u00fd\u0106\u0106\u0106\u0106 ", + " \u00f8\u0118\u0118\u0114\u0114 \u009a \u010e\u00b9\u00b9\u010f\u010f \u010c\u010c \u010c\u010c \u0112 \u0113\u0115\u0115\u0115\u0119\u011a\u011b\u009e\u011c\u011c \u0116 \u00ad\u00ad\u00d7%% &\u011d\u00fc \u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 -- \u0117\u0117\u0106 ", + "\u011e \u00f8 \u0118\u0118\u0114\u0114 \u009a\u009a \u011f\u00b9\u00b9\u00b9\u00b9 \u010f\u010f \u010c\u010c\u010c \u0112 \u0113\u0115\u0115\u0119\u0119\u0119\u011a\u0120\u0121\u011c\u011c\u0122\u0122\u0116 \u00d7\u00d7%% &\u00dc',\u010d \u010d\u010d \u00c0\u0123\u0123\u0123 \u00ae \u00a2 \u0104\u0104\u0124\u00d5\u00d5--\u0125\u0125\u0126 \u0117\u0117 ", + "\u0127\u0128\u0128 \u00f8 \u0118\u0114\u0114 \u009a\u009a \u011f\u0129\u0129 \u010f \u010c\u010c \u0112\u0113\u012a\u0115\u0119\u012b\u012b\u012b\u012c\u0121\u0121\u012d\u012e\u0122\u0122\u0122\u00d7\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d\u010d\u00c0\u00c0 \u00ae\u00ae \u00a2 \u0104\u0124 \u012f\u0130\u0131\u0126 \u0117\u0117 \u0132\u0132", + " \u0127\u0128\u0128 \u00f8 \u0118\u0118\u0114\u0114 \u009a\u011f\u0129 \u0129 \u010f \u0112 \u012a\u012a\u012b \u012c\u012c\u0121\u0121\u0133\u012e\u012e\u0122\u0122\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d \u0134 \u00ae\u00ae\u00ae \u00a2 \u0124 \u012f \u0131\u0131 \u0117\u0117 \u0132\u0132\u0132\u0132 ", + " \u0128\u0128 \u00f8\u00f8 \u0118\u0118\u0114\u0114 \u011f\u0129\u0129\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012b \u012c\u012c\u0121\u0121 \u0135\u012e\u012e %% \u00fc\u00fc\u0136\u00dc', \u010d \u0134 \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00a2 \u0124 \u0130 \u0126 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137", + " \u0138 \u0127\u0128\u0128 \u0118\u0114\u0114 \u009a\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012a\u0139\u0139\u013a\u013a \u012c\u012c\u0121\u0121 \u013b \u0135\u012e %%% \u00fc\u00fc\u00fc\u013c\u013d\u00cd, \u010d \u013e\u010d \u00ae\u00ae\u00ae\u00ae\u013f\u013f\u013f \u0140 \u0141 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 ", + " \u0142 \u0138 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144\u0129 \u0112\u0113\u012a\u012a\u0139\u0139\u0139\u0139\u013a\u013a\u012c \u0121 \u0145\u0146\u0135\u0135\u012e\u0147%% \u00fc\u00fc\u00fc\u0136\u013c\u00dc', \u010d \u013e \u010d \u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u0148\u0148\u0117\u0117 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 \u0149\u0149\u0149\u0149", + "\u00c1 \u0142 \u00f8 \u014a\u0128\u0128\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0112\u0112\u012a\u012a\u012b\u014c\u014c\u014d\u0139\u0139\u013a\u012c \u0121\u0146\u0146\u0145\u014e\u0135\u014f\u0150\u0150% \u00fc\u00fc\u0136\u013c \u013d\u011d' \u010d\u010d \u013e\u013e \u010d\u010d \u0151\u0151 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 ", + "\u00c1 \u00f8\u00f8 \u014a\u0127\u0128\u014b \u0118\u0114\u0114 \u0143\u0143\u0144 \u0153\u0153 \u0112\u0113\u012a\u012b\u014c\u014c\u014d\u014d\u0139\u0139 \u012c\u0154\u0146\u0146\u0121\u0121\u0155\u0156\u0157\u0150\u0158\u0158%\u00fc\u00fc\u0136 \u013c &\u011d', \u010d \u013e\u013e \u010d\u010d \u0132\u0132\u0132 \u0137\u0137\u0137\u0137\u0149\u0149\u0152\u0149\u0152\u0152 ", + " \u00f8\u00f8 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144 \u0153\u0159 \u015a\u0113\u012a\u012b\u014d\u014c\u014d\u014d\u0139\u015b\u015b\u015b\u012c\u0154 \u0121\u0121\u0156\u0150\u0150\u0158\u0158\u00fc\u00fc\u00fc\u0136 \u013c \u00dc\u011d', \u010d \u015c\u013e \u010d\u010d \u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152 ", + "\u015d \u00f8 \u014a\u0128\u0128 \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0159\u015e \u0112\u0113\u012a\u012a\u012b \u014d\u015b\u015b\u015b\u015b\u015b\u015b\u012c \u0150\u0150\u0150\u0158\u0158\u014f\u00fc\u00fc\u0136 \u013c &\u011d', \u010d\u015c\u015c\u013e\u013e \u013e\u013e\u013e \u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0152\u0152\u0152 \u015f", + "\u015d\u00f8 \u014a\u0127\u0160\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u015e\u015e \u015e \u0112\u0113\u012a\u012a\u012b\u0161\u0161\u0161\u015b\u015b\u015b\u015b \u0162\u0162\u0163\u0163\u0163\u0150\u0150\u0150\u0150\u0121\u0158\u0158\u00fc\u00fc\u0136\u014f\u014f & ',, \u010d\u015c \u013e\u013e \u013e\u013e\u0164\u013e\u013e \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 \u015f\u015f\u0165", + " \u015d \u0166\u0128\u0128 \u0118\u0118\u0143\u0143\u0144 \u015e\u015e \u015e\u0167 \u0112\u0113\u012a\u012b\u0161\u0161\u0161\u0161\u0163\u0163\u0163\u0163\u0163\u0163\u0162\u0163\u0163\u0163\u0150\u0150\u0150 \u0158\u0158\u0158\u00fc\u00fc\u0157 \u014f \u0168 \u011d', \u010d\u010d \u013e\u013e \u013e\u0164\u0164\u0164\u013e\u013e\u013e \u0169\u0169\u0169\u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149 \u0152\u0152\u0152 \u015f\u0165\u0165\u016a\u016b", + "\u016c \u015d\u015d \u0127\u0160\u0128 \u0118\u0143\u0144 \u015e \u0167\u0167 \u0112\u0113\u012a\u012b\u0161\u0161\u0161\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u0162\u016d\u0163\u0163 \u016e\u0158\u00fc\u00fc\u0136\u0156\u0157\u014f\u014f \u0168\u00dc\u011d',\u016f \u010d\u010d \u013e\u013e \u013e \u0164\u0164\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0137\u0170\u0137\u0149\u0149\u0149\u0149\u0171\u0171 \u0152\u0152 \u015f\u0165\u0165\u016a\u016b\u016b ", + "\u0172\u016c \u015d\u015d \u014a\u0127\u0128\u014b \u0143\u0144 \u015e \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u016d\u016d\u016d\u016d\u0173\u0173\u0173\u016d\u016d\u0162\u016d\u016d\u016d \u016e\u0174\u0174\u0136\u0175\u0175\u0156\u0157\u014f \u0176\u00dc\u011d\u00cd ,\u016f \u0177\u0177\u010d\u010d \u013e\u013e\u0178 \u0169 \u0179\u0137\u0170\u0170\u0149\u0149\u0149 \u017a\u0171 \u0152\u0152 \u015f\u0165\u0165\u016a\u016b\u016b ", + "\u0172\u016c\u016c \u017b\u015d \u014a\u0127\u0128\u0128 \u0143\u0144\u0144 \u015e \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u016d\u016d\u0173\u0173\u0173\u0173\u0173\u0173\u0173\u0173\u0162\u016d\u016d\u016d\u016d\u016d \u016e\u016e\u0174\u0174\u017c\u017d\u0175\u0175\u0157\u014f \u0168\u00dc \u011d',\u016f\u016f\u0177\u0177 \u0177\u0177\u0177\u010d \u0178\u0178\u0178 \u0169 \u0179\u0179\u0179\u0170\u017e\u0149\u0149 \u017a\u017a\u017a\u0171 \u0152 \u015f\u0165\u0165\u0165\u016a\u016b\u016b ", + "\u0172 \u016c\u016c\u017b \u015d \u0127\u0128\u0128 \u0143\u0143\u0144 \u015e\u015e \u0112\u0112\u0113\u012a\u0161\u0161\u016d\u016d\u0173\u0173 \u017f\u017f \u0162\u0173\u0173\u016d\u016d\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0175\u0156\u014f \u0168\u00dc \u011d',,\u016f\u0177 \u010d\u010d \u0169\u0169\u0169\u0179\u0179\u0179\u0182\u0170\u0183\u017e \u017a\u017a\u017a \u0171 \u0152 \u015f\u0165\u0165\u0184\u016a\u016b\u016b \u0185\u0185", + "\u0172\u016c\u016c\u017b\u017b \u015d\u015d \u014a\u0127\u0128\u014b \u0143\u0143\u0144 \u015e\u015e \u0112\u0113\u012a\u0161\u0161\u0161\u016d\u0173\u0173 \u017f \u017f\u017f\u017f\u017f \u0186\u0186\u0173\u0187\u0187\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0175\u0175\u0157\u014f \u0176\u00dc \u011d', \u016f \u010d\u010d \u0169\u0169\u0169\u0179\u0179\u0179\u0182\u017e\u017e\u0183 \u017a\u017a\u017a \u0171\u0171 \u0152 \u015f\u0165\u0165\u016a\u016a\u016b\u016b \u0185\u0185\u0185 ", + " \u016c\u017b\u017b \u015d\u015d \u014a\u0127\u0128\u014b\u0143\u0144 \u0188\u0189 \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0173 \u017f\u017f\u018a \u017f\u017f\u018b\u0186\u018b\u0187\u0187 \u016d\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0175\u0157\u014f \u0176\u00dc \u011d',, \u016f \u010d\u010d\u0169\u0179\u0179\u0179\u0182\u0182\u017e\u017e\u0183 \u017a\u017a \u018c\u018c\u0171 \u0152 \u015f\u0165\u0165\u016a\u016a\u016b\u016b \u0185\u0185 ", + "\u016c \u017b\u018d \u015d\u015d \u0127\u014b\u014b\u0144 \u0188 \u0189 \u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0173 \u017f\u017f \u018a\u018a\u018a\u018a\u018a \u018e\u0186\u018b\u0187\u0187\u0187\u0180\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0175\u0157\u014f\u018f\u0176\u00dc\u0190\u0191\u011d\u00cd', \u016f \u0192\u0179\u0179\u0182\u0170\u017e\u017e\u0183 \u017a\u017a\u017a \u018c\u018c\u018c\u0171\u0171\u0152 \u015f\u0165\u0165\u016a\u016b\u016b\u016b \u0185\u0185 ", + " \u0193 \u015d\u015d \u0143\u014a\u0144 \u0194 \u0189 \u0113\u0113\u012a\u0161\u0161\u016d\u016d\u0173 \u017f\u017f \u0195\u0195 \u018a\u018a\u018a\u017f\u0186\u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u017c\u017c\u017c\u017d\u017d\u0175\u018f \u0176\u0196 \u0191\u0191\u011d',, \u016f \u0179\u0179 \u0182\u0170\u0197\u017e\u0183 \u017a\u017a\u017a \u018c\u018c \u0171\u0152\u0152 \u015f\u0165\u0184\u016a\u016b\u016b\u016b \u0185\u0185 ", + "\u017b \u015d\u015d \u0143\u0143\u0144 \u0194\u0194\u0189\u0189 \u0113\u012a\u0161\u0161\u0161\u016d\u0173\u0198\u0198\u0198\u0195\u0195 \u0195\u0195\u0195 \u018a\u017f \u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176\u0196 \u0191\u011d\u00cd', \u016f\u016f \u0179\u0179 \u019b\u0170\u0197\u017e\u0183\u0192 \u0171\u0171\u0171\u0171\u018c\u018c\u018c \u0171 \u0152 \u0165\u0165\u0184\u016a\u016b\u016b \u0185\u0185 ", + "\u019c \u019d\u019d\u015d \u0143\u0144 \u019e\u019e\u019e\u019e\u019e \u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0198\u0198\u0198 \u0195\u0195\u0195\u0195 \u0186\u018b\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176\u00dc \u0191 \u011d',, \u016f \u0179\u0179 \u0182\u0170\u017e\u017e\u0183\u0183 \u01a1\u01a1 \u0171\u0171\u0171\u0171\u01a2\u01a2\u0171\u0171\u0152 \u015f\u015f\u0165\u01a3\u016a\u016b\u016b \u0185\u0185 ", + " \u019d \u015d \u0143\u0144\u0144 \u019e\u019e\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0161\u0161\u016d\u016d\u0198\u0198\u0198 \u0195 \u0186\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176 \u0196 \u01a5\u011d\u00cd',\u01a6\u0179\u0179 \u0182\u0170\u017e\u017e\u0183\u0183 \u01a2\u01a2 \u0152\u0152 \u015f\u0165\u0165\u01a3\u016a\u016b\u016b \u0185\u0185 ", + " \u01a7 \u019d \u015d\u015d\u0143\u0144\u0144 \u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0161\u0161\u016d\u016d\u0198\u0198\u0198 \u01a8\u01a8\u01a9\u01a9\u01a9\u01a9 \u01aa\u01aa\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u0199 \u0176 \u0196 \u011d\u01ab\u01a6\u01a6 \u0182\u0170\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0165\u0165\u01a3\u016b\u016b\u016b \u0185\u0185 ", + " \u01a7\u01a7\u01ac\u01ac\u01ac \u015d\u0143\u0144 \u01a4\u01a4\u01a4 \u01a4\u01a4 \u0113\u012a\u0161\u0161\u0161\u016d\u0198\u0198\u0198 \u01a9\u01ad\u01a9 \u01a9\u01a9\u01a9 \u01ae\u01ae\u01af\u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u019a \u0176 \u0196\u00dc \u01b0\u0179\u01ab\u01a6\u0182\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0165\u01a3\u01b1\u01b1\u016b\u016b \u0185\u0185\u0185 ", + "\u01b2\u01b3 \u019d\u019d\u01ac \u01ac\u01ac\u01ac \u015d\u015d\u01b4\u01b5 \u019e\u01a4\u01a4\u01b6\u01b6\u01b6\u01b6 \u01a4\u01a4\u012a\u012a\u0161\u0161\u01b7\u0198\u0198 \u01b8\u01a9 \u01ad\u01ad \u01a9\u01ae\u01ae \u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199 \u0176\u0176 \u0196\u00dc \u0179\u0179\u01b0\u01b9\u0182\u01a6\u01a6 \u0183\u0183 \u01a2\u01a2\u01a2\u01a2\u01a2 \u01ba\u0152\u015f\u0165\u0184\u01b1\u016a\u016b\u016b \u0185\u0185 ", + "\u01b3\u01b2\u01b2 \u01bb\u01bb \u01ac \u01bc\u01bd\u01b4\u019e\u01a4\u01a4\u01b6\u01b6 \u01b6 \u01be\u0113\u012a\u012a\u01bf\u0161\u01c0\u01b7\u01b7 \u01a9\u01b8\u01b8\u01b8 \u01ad\u01ad \u01a9 \u01af\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u0199\u0199 \u0176 \u01c1\u01c2\u01c3\u0179 \u0182\u0182\u017e\u01b0\u01ab\u01a6\u0183\u0183 \u01a2\u01a2\u01a2\u01a2 \u01a2\u01a2\u01a2 \u015f\u015f\u0165\u01b1\u01b1\u016b \u0185\u0185 ", + "\u016c\u016c\u01c4\u01b2 \u01c5 \u01c6\u01ac \u01c7\u01c8\u01c9\u01a4\u01a4 \u01b6 \u01ca \u01cb\u01cc\u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01b7 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad\u01ad\u01a9 \u01af\u0186\u0186\u019f\u019f\u01a0\u01a0\u016d\u017c\u017d\u0199\u019a \u0176\u0176 \u01c3\u01c2\u01c2\u01ce\u0182\u017e\u017e\u01b0\u01b9\u01ab\u01a6\u01a6 \u01a2\u01a2 \u01a2\u01a2\u015f\u01ba\u0165\u016a\u01b1\u016b \u0185\u0185 ", + " \u016c\u016c \u01cf\u01c5 \u019d\u01c6\u01c6 \u01c7\u01d0\u01a4\u01d1\u01b6 \u01ca \u01ca\u01cb \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7 \u01d2\u01a9 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad \u01af \u0186\u0187\u019f\u01a0\u01a0\u01d3\u01d3 \u0199 \u0176\u0176 \u01c3\u01c3\u01d4\u01c2\u01d5\u01d6\u017e \u0183\u0183\u01b0\u01d7\u01ab\u01d8 \u01a2\u01a2 \u01a2\u015f\u015f\u01d9\u0165\u0184\u016b\u016b \u0185\u0185 ", + " \u016c \u01cf\u01cf\u019d\u019d\u01ac\u01ac \u01c7\u01d0 \u01d1\u01d1\u01d1\u01ca \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7\u01da\u01da\u01a9\u01a9\u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8 \u01a9 \u01af \u0186\u0186\u019f\u01a0\u01d3\u01d3\u016d\u0199\u01db\u0176\u0176\u01c3\u01c3\u01d4\u01d5\u01d5\u01c2\u01d6 \u0183\u0183\u0183 \u01d7\u01dc\u01d8\u01d8\u01a2\u01a2\u01a2\u01a2\u01a2 \u01a2\u015f\u01d9\u01d9\u0165\u016a\u016b\u016b \u01dd\u01dd \u0185\u0185 ", + " \u016c \u01c5\u01de\u019d \u01ac \u01c7\u01d0\u01df\u01e0\u01df\u01d1\u01d1\u01d1 \u0113\u012a\u012a\u01bf\u01bf\u01bf\u01b7\u01b7 \u01da\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8\u01a9 \u01af \u0186\u019f\u01d3\u01d3\u016d\u016d\u01db\u01db\u0176\u01c3\u01d4\u01e2\u01d5\u01d5\u01e3\u01c2\u0183\u0183\u0183 \u01d7\u01dc\u01d8\u01a2 \u01a2\u01d9\u01d9\u0165\u0165\u01e4\u016b\u016b\u01ba \u01dd\u01dd \u01e5 ", + "\u01e6 \u016c \u01c5 \u01de\u01ac \u01c7\u01d0\u01df\u01e0\u01e7\u01df\u01df\u01d1\u01d1 \u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8 \u01e9 \u01ea\u01da\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd\u01a9\u01a9 \u01af \u01d3\u01d3\u01d3\u01a0\u01eb\u01eb\u0176\u01c3\u01ec\u01e2\u01ed\u01ee\u01ef\u01f0\u0183\u01c1\u0183 \u01d7\u01f1\u01dc\u01d8\u01a2 \u01a2\u015f\u0165\u0165\u016a\u01e4\u01e4\u016b \u01f2 \u01f3\u01f3 \u01dd\u01dd\u01dd \u01e5 ", + "\u01e6\u01e6\u016c \u01c5 \u01ac\u01ac\u01ac \u01f4\u01f4\u01df\u01e0 \u01e7\u01f5\u01df\u01df\u01d1\u01d1\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8\u01f6\u01e9\u01e9\u01ea\u01da\u01da \u01e1\u01e1 \u01d2\u01d2\u01a9\u01a9\u01cd\u01a9 \u01af\u01f7\u01f7\u01d3\u01d3\u01f8\u01f9\u0176\u01c3\u01ec\u01db\u01ed\u01ee\u01e3\u01f0\u0183\u0183\u0183\u01c2\u01c2 \u01f1\u01dc\u01d8\u01d8 \u01a2\u015f\u0165\u0165\u016a\u016b\u016b\u016b \u01f2 \u01fa\u01f3\u01f3\u01f3 \u01fb\u01dd\u01dd \u01e5 ", + " \u01e6\u01e6 \u01c5\u01fc \u01ac \u01c7\u01f4\u01df\u01e0\u01e7\u01e7\u01f5\u01fd \u01df\u01d1\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8 \u01f6\u01ea\u01e9 \u01e8\u01da \u01a9\u01a9\u01e1\u01a9\u01a9\u01a9 \u01f7\u01f7\u01f7\u01f7\u01f7\u01fe\u0176\u01c3\u01ec\u01f9\u01db\u01db\u01f0\u01ef\u0183\u0183\u0183 \u01ff \u01d7\u01d7\u01dc\u01d8\u01a2 \u01a2\u01a2\u015f\u0165\u0165\u016a\u016b\u016b \u01f2 \u01fa\u01fa\u01fb\u01fb\u01f3 \u01e5 ", + " \u01e6\u01e6 \u0200\u01fc\u01fc \u01ac \u01c7\u01c7\u01d0 \u0201\u01e7\u01f5\u01f5\u01fd\u01df \u012a\u012b\u01bf\u01bf\u01bf\u0173\u01e8\u01e8\u01e8 \u01f6\u01e8\u01e8\u01e8\u01da\u01e8 \u0202\u0202\u01f7\u01f7\u01f7\u01f7 \u0176\u01c3\u01fe\u01ec\u01d5\u01d5\u01f0\u01db\u01ef\u0183\u0183 \u01ff\u0203 \u01d7\u01f1\u01dc\u01d8\u0204\u0204\u0165\u0165\u016a\u016b\u016b \u01f2 \u01fa\u01fa \u01e5 ", + "\u0176 \u01e6\u01e6\u01e6 \u01fc\u01ac \u01c7\u01d0 \u0201 \u0205\u0206\u0207\u01df\u01df\u012a\u012a\u01bf\u01bf\u01bf\u0173\u0173 \u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01da\u01da \u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u01f7 \u0176\u0176\u01c3\u01ec\u01d5\u01d5\u01e3\u01f9\u01ef\u01ef\u0183 \u0209\u0209 \u01ff\u0203 \u01d7\u01f1\u01dc\u020a\u020b\u016a\u016b\u016b \u01f2 \u01dd\u01dd \u01e5 ", + "\u0176\u0176 \u020c\u01e6\u01e6\u01e6 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206\u020d\u01df\u012a\u012a\u012b\u01bf\u01bf\u01c0\u0173 \u01e8\u01e8\u01e8\u01e8\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u01d5\u01fe\u01e3\u01f8\u01ef\u01f9\u01db\u020e \u0209\u0209\u020f \u01ff\u0203 \u0210\u0211\u020a\u020b\u0212\u0212\u016b \u01f2\u01dd \u01dd\u01dd \u01e5 ", + "\u0213\u0176\u0176 \u0214\u0215\u01e6\u01e6\u0216\u0216 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0173 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0217\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u0170\u0170\u01e3 \u01fe\u01f8\u01f8\u0218\u0219\u020e\u0209\u0209 \u020f \u01ff\u0203 \u0210\u0210\u0211\u021a\u021b\u0212\u0212\u01dc\u01d8 \u01f2 \u01dd\u01dd \u01e5 ", + "\u0213\u01c3\u01c3\u0176\u0214 \u0215\u0215\u021c\u0216\u0216\u0216\u0216 \u01fc\u01fc\u01fc\u01c7\u01d0\u0201\u0205\u0205\u0206 \u020d \u012a\u012b\u01bf\u01bf\u01bf\u0173 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u021d\u0217\u0217 \u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u0170\u0170\u01e3 \u0183\u0183\u01fe\u021e\u021f\u021f\u0218\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u021a\u0221\u0221\u0212\u01d7\u01f1\u01dc\u01d8 \u01f2 \u0222\u0222\u0222 \u01e5 ", + "\u0223\u0213\u0213\u01c3\u0176\u0176 \u0215\u0215 \u021c\u0216\u0216\u0216\u0216 \u01c7\u01fc\u020d\u020d\u0205\u0206\u0206\u020d \u012a\u012a\u01bf\u01bf\u01bf\u0173\u0202\u0202\u0202\u0202\u0202\u0224\u0225\u0225\u0226\u021d\u021d\u021d\u0217\u0217 \u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u0227\u0170\u01d5\u01e3 \u0183\u0183 \u021e\u021f\u021f\u0218\u0218\u020e\u019a \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221\u0228\u0228\u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222 ", + "\u022a\u0223\u0213\u0214\u0214\u0176\u0176 \u0215\u0215\u022b\u021c\u021c\u0216\u0216\u0216\u0216 \u020d\u0206\u020d \u012a\u012a\u012b\u01bf\u01bf\u01c0\u0202\u0202\u0202\u0202\u0202\u022c\u0224 \u021d\u021d\u021d\u022d\u022e \u0217\u0217\u0208\u0208\u0208 \u0176\u01c3\u01c3\u01ec\u0227\u01d5\u0170\u01e3 \u0183\u0183 \u021e\u021e\u021f\u021f\u0218\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221 \u022f \u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5\u0230\u0230\u0230\u0230\u0230 ", + " \u022a\u022a\u0223\u0213\u0214\u01c3\u0176\u0176 \u0231 \u021c\u021c\u0216\u0216\u0216\u0216 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202\u0232\u0233\u0233\u022c\u021d\u021d\u0225\u0225\u0226 \u022d\u022e \u0217\u0217\u0208 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u0170\u01e3\u01e3\u0183\u0183 \u021e\u021f\u021f\u0218\u0218\u020e\u019a \u01ff\u0234\u0211\u0211\u0220\u0221\u0221\u0221 \u0235\u022f \u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 \u0230\u0230\u0230\u0230\u0230\u0230 ", + "\u0236\u0236 \u022a\u0223\u0213\u0213 \u01c3\u0176\u0231\u0231 \u021c\u021c\u0216\u0216\u0216\u0216\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u0232 \u021d\u021d\u022c\u0224 \u0225\u0226\u0226\u022d\u022e\u0237 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u0170\u01e3\u0183\u0183 \u021e\u021e\u021f\u021f\u0218\u020e\u020e\u0238\u0239\u0239\u023a\u023a\u0220\u0221\u0221\u0221 \u023b \u0235 \u022f \u023c\u023c\u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ", + " \u0236\u0236 \u022a\u0223\u0213\u0213\u0231\u01c3\u0176\u0176\u0176 \u021c\u021c\u021c\u0216\u0216\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u023d\u021d\u021d\u0233 \u022c \u0224\u0225 \u0226\u0237 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u01e3\u01e3\u0183\u0183 \u023e\u021e\u021f\u021f\u0218\u0218\u0238\u0238\u023f\u0240\u0241\u0242\u0221\u0221 \u023b\u023b \u0235 \u0243\u022f\u023c \u0228\u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ", + " \u0236\u0236 \u022a\u0223\u0231\u0213 \u01c3\u01c3\u0176\u0176 \u021c\u012a \u0244\u0244\u0202\u0202\u0202 \u023d\u0232 \u0233\u022c\u022c\u0224\u0237\u0225 \u0176\u0176\u01c3\u01ec\u01ec \u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u023e \u021e\u0238\u021f\u0238\u0238\u023f\u023f\u023f\u0245\u0246\u0247 \u023b\u023b \u0235 \u0248\u0243\u0243 \u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ", + "\u0249\u0249\u0249\u0249\u0249\u0236\u0236 \u022a\u0223\u0223\u0213\u0213\u01c3\u01c3\u0176\u0176\u0176 \u024a \u0244\u0244\u0173\u0202\u0202 \u023d \u0232\u0233 \u022c\u0237 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u024b \u024c\u024c\u0238\u0238\u023f\u023f\u023f\u024d\u024d\u024e\u0203 \u023b\u023b \u0248 \u024f\u024f \u0250\u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ", + " \u0236\u0236\u0252 \u022a\u022a\u0223\u0213\u0213\u0213\u01c3\u0176\u0176\u0176\u0253\u0254\u0244\u0244\u0202\u0202 \u023d\u0232\u0237\u0233 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0256\u0256\u024c \u023f\u023f\u0257\u024d\u024d\u0258\u020e\u01ff\u0203 \u023b \u0235 \u0259\u0250 \u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2\u01f2 \u0229 \u01e5 ", + "\u025a \u025b\u025b\u025b \u025c\u025d\u025d\u025d \u022a\u022a\u022a\u0213\u0213\u0253\u01c3\u0176\u0254\u025e\u025e\u025f\u0202 \u0260\u0260 \u023d\u0237 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0255 \u024b\u024b\u0256 \u0223\u0223\u0261\u024d\u0262\u0258\u0258\u0218\u020e\u0263\u0264\u023b \u0259\u0259\u0259\u0259\u0259\u024f \u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229\u0229 \u01e5 ", + "\u025a\u025a\u025b\u025b\u025b \u025c\u0265 \u025d\u025d\u025d \u022a\u022a\u0223\u0223\u0254\u0213\u0213\u01c3\u0176 \u0260\u0260\u0260\u0260 \u0176\u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u024b\u0223\u0223\u0223\u0266\u0267\u0268\u0262\u0262\u0258\u021f\u0218\u0269\u0263\u020e\u026a \u024f \u0251\u0251 \u01f1 \u01d8\u01d8 \u01f2 \u0229\u0229 \u01e5 ", + " \u026b\u025a \u025c\u026c \u026d\u026e \u0253\u0253\u0254\u022a\u025e\u022a\u0213\u0183\u01c3\u0176\u0176\u01c3\u0176\u0176\u0176\u0176\u01c3\u0176\u01c3\u01c3\u01ec\u01ec\u01e3\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u0223\u0223\u022a\u0223\u0266\u0266\u026f\u0267\u0270\u0271\u0258\u021e\u021f\u021f\u0218\u0263\u0264\u020e\u026a\u026a\u026a\u026a \u0272\u0272\u0272\u0272\u0272 \u0273 \u0251\u0251 \u01d7\u01d7 \u01d8\u01d8\u01f2\u01f2 \u0229 \u01e5 ", + "\u026b \u025a\u025a \u0265\u0265\u026c \u0274 \u0275\u0275\u0254\u025e\u025e\u025e\u025f\u022a\u022a\u022a\u0223\u0183\u0183\u0183 \u01ec\u01ec\u0276\u01e3\u01e3\u0183\u0183\u0183 \u0255\u0255\u0255 \u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266\u0277\u0277\u0267\u0278\u0271\u0279 \u021e\u021e\u021f\u021f\u0263\u0264\u020e\u020e\u026a \u0272\u0272\u0272\u0272\u0272 \u0272\u0272\u0272\u0272\u0272\u0272 \u0251\u0251 \u01d7\u01f1 \u01d8 \u01f2 \u0229 \u01e5 ", + "\u026b \u025a\u025a \u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u025e\u025e\u025f\u025f \u022a\u0223\u0223\u022a\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u027b\u027b\u027b\u0255\u0255 \u0223\u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266\u0266 \u0277\u027c\u0267\u0270\u027d\u0271\u027e \u027f\u021e\u021e\u021f\u0264\u0218\u0269\u020e\u020e \u0272\u0272\u0272 \u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280 \u0273 \u0272\u0272\u0272 \u01d7\u01d7\u01dc\u01d8\u01f2\u01f2 \u0229 \u01e5 \u0281", + " \u025a\u025a\u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u0282\u0282\u025f\u025f\u0283 \u0284\u022a\u0276\u022a\u0223\u0223\u0223\u0223\u0223\u027b\u027b\u0223\u0223\u0223\u0223\u0223\u022a\u0223\u0223\u0223\u022a\u022a\u0266\u0266\u0266\u0266\u0266 \u0285\u0285\u0277\u027c\u027c\u0270\u027d\u027e\u0286\u0279 \u027f \u021e\u0263\u0264\u0218\u0218\u0269\u0287\u0272\u0288\u0289\u028a\u028a\u0280 \u0280\u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01dc\u01d8\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281", + " \u028b\u025a \u026c \u0274 \u0275\u027a\u027a\u0282\u0282\u028c\u028c \u0283 \u0284\u0284\u028d\u028d\u028d \u028e\u028e\u027b\u027b\u027b\u022a\u022a\u0266\u0266\u0266\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u0290\u0277\u027c\u0267\u0278\u027d\u027e\u0286\u0279 \u027f \u0263\u0264\u021f\u021f\u0287\u0291\u0291\u0288\u0292 \u028a \u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01dc\u01f2\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293", + " \u028b \u025a\u025a \u0274 \u0275\u0275\u027a\u0282\u0282\u0282\u028c \u0283 \u0284\u0284\u028d\u028d \u028e\u028e\u028e \u0266\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u028f\u028f\u0290\u027c\u0270\u0270\u027d\u027e\u0286\u0279\u027f\u027f \u0263\u0264\u021e\u0291\u0291\u0288\u0288\u020e\u020e\u0294\u0295 \u0280\u0280\u0280 \u0272 \u01f1\u01f1\u01dc\u01f2\u01f2 \u0229\u0229\u01e5\u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ", + " \u028b\u028b \u025a\u025a \u0275\u0275\u027a\u0282\u0282\u0282\u028c \u0283\u0284\u0284\u028d\u028d \u028e\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u028f\u028f\u0290\u027c\u027c\u0267\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0297\u0287\u0291\u0291\u0288\u021f\u0218\u0269\u020e\u0294\u0295 \u0280\u0280 \u0272\u0272\u01d7\u01f1\u01dc\u01f2 \u0229\u0229 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ", + " \u028b\u028b \u0298\u0298\u025a\u0275\u0275\u027a\u027a\u0282\u0282\u028c\u028c \u0284\u028d\u028d \u028e\u028e\u0266\u0266\u0266 \u028f\u028f\u0290\u0290\u027c\u027c\u0299\u0271\u027d\u0286\u0286 \u027f\u027f \u0296\u0297\u029a\u029a\u0288\u0288\u021f\u021f\u021f\u0218\u020e\u020e\u0294\u0295\u0295\u0295\u0295 \u0280 \u0272\u0272\u01d7 \u01d8\u01f2 \u01e5 \u0281\u0281\u029b\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ", + " \u028b \u0298\u0298 \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u029d \u0284\u0284\u028d\u029e \u028e\u0266\u0266\u0266 \u029f\u02a0\u0290\u0290\u027c\u027c\u0270\u0271\u027d\u0286\u0286 \u027f\u027f \u0296\u029a\u029a\u0288\u02a1\u02a2\u021e\u021f\u021f\u021f\u0218\u020e \u0295\u0295\u0295\u0295\u0295\u0295\u0295 \u0280\u0280 \u0272\u01d7\u01d7\u01dc\u02a3\u01f2 \u01e5\u01e5 \u02a4\u02a4\u02a4\u02a4\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ", + " \u028b \u0298\u0298 \u029c\u027a\u027a\u0282\u0282\u029d\u029d \u0284\u0284\u028d \u02a5\u02a6\u0266\u0266 \u029f\u02a0\u0290 \u027c\u0267\u0299\u0271\u027d\u0286\u0286 \u027f \u0296\u029a\u029a\u02a7 \u02a2\u02a2\u021e\u021e\u021f\u021f\u0218\u0218\u020e \u02a8 \u0295\u0295\u0295\u0295\u0295\u0295\u0295 \u0280\u0280 \u0272\u01d7\u01dc\u01f2\u01f2 \u02a9\u02a4\u02a4\u02a4\u02aa\u02aa\u02aa\u02ab\u02ab\u0293 ", + " \u028b \u0298\u029c\u029c\u027a\u0282\u0282\u0282\u029d \u0284\u0284\u028d \u02ac\u02ad\u02ad\u02ad \u029f\u02a0\u0290 \u027c\u0267\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u029a\u029a \u02ae\u02a2 \u021e\u02af\u021f\u021f\u0218\u020e \u02a8 \u02b0\u0295\u0295\u0295\u0295\u0295\u0295\u0280\u0280 \u01d7\u01f1\u01dc\u02a3 \u02a9\u02a9\u02a9\u02a9\u02aa\u02aa\u02aa\u02aa\u02aa\u02b1\u02b1 ", + "\u028b\u028b \u029c\u029c\u027a\u027a\u0282\u0282\u029d \u0284\u028d \u02b2\u02b2 \u02ad\u02a5 \u02a0\u0290\u0290\u02a5\u027c\u0270\u0278\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u029a \u02ae\u02ae \u021e\u021e\u021f\u021f\u0218\u0218\u020e \u02a8 \u02b0 \u0280\u0280 \u0272\u02b3\u02b4\u02b5\u01f2\u02b6\u02b6\u02a9\u02aa\u02aa\u02aa \u02b1\u02b1 ", + "\u028b \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02b8\u02b9 \u02ac\u02b2\u02b2 \u02a5 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0270\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae\u02a2 \u021e\u021e\u021f\u021f\u0218\u020e\u02ba \u02a8 \u02b0 \u0280 \u0272\u02b3\u02b4\u02bb\u02bb\u02bb\u02bc \u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u027a\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02b8\u02b9 \u02ac\u02b2 \u02bd\u02a5 \u029f\u02a0\u0290\u0290\u027c\u0267\u0270\u0278\u027d\u0286\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u02af\u021e\u021f\u021f\u0218\u0218\u02be \u02a8\u02a8 \u02b0 \u0280 \u02b6\u02b6\u0272\u02b3\u02bb\u01d8\u01d8\u02bf\u02bf \u02b1\u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02b8\u02b8 \u02b2\u02b2 \u02bd\u02bd \u02a5 \u029f\u02a0\u0290\u02a5\u027c\u027c\u0299\u0278\u027d\u0286\u0286 \u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u021e\u02c0\u021f\u021f\u0218\u02be\u02ba \u02a8 \u02b0 \u02c1\u02b6\u02bb\u02bb\u0272\u02b3\u02b5\u01d8\u01d8 \u02b1\u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c2\u02c3 \u02ac\u02b2 \u02bd\u02bd \u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0267\u0270\u0271\u027d\u0286\u0286\u027f\u027f \u0296\u029a\u029a \u02ae\u02ae \u02a2 \u02c0\u021f\u021f\u0218\u0218\u02ba \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02bb \u0272\u02b3\u02b5\u01d8\u01d8 \u02c5\u02c6 \u02b1\u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3 \u02ac\u02b2 \u02bd\u02bd \u02a5\u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0270\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2\u02a2 \u02c0\u02c0\u021f\u021f\u0218\u02be \u02a8 \u02b0 \u02c1\u02c1\u02c4\u02c4 \u02b3\u02b4\u02b5\u01d8\u01d8 \u02c6\u02c6 \u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5\u02a5 \u02c7\u02c7 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0299\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u02c0\u021f\u021f\u0218\u02be \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02c4 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6 \u02b1\u02b1\u02b1\u02b1 ", + " \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5\u02c7\u02c7 \u029f\u02a0\u0290\u0290\u027c\u0267\u0270\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u029a\u029a \u02ae\u02ae \u02c8\u02c8\u02c8\u02c8\u02c8 \u02c0\u021f\u021f\u0218 \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02c4 \u0272\u02b4\u02b5\u01d8 \u02c6 \u02b1\u02b1\u02b1\u02b1", + "\u02c9\u02c9 \u029c\u029c\u027a\u0282\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0278\u027d\u027e\u0286\u0279\u027f \u0296\u029a \u02ae \u02c8\u02c8 \u02c8\u02c8 \u02c0\u021f\u021f\u0218\u02ba \u02a8\u02a8\u02a8\u02a8\u02a8\u02a8\u02a8 \u02b0 \u02c1\u02c1\u02ca\u02c4\u02cb \u0272\u02b3\u02b5\u02b5\u01d8 \u02c6 \u02b1", + " \u02c9\u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3 \u02b2 \u02bd\u02bd \u02a5\u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0267\u0299\u0271\u027d\u0286\u0286\u0279\u027f \u0296\u0296\u029a \u02ae\u02cc \u02c8\u02c8\u02c8 \u02c8 \u02c0\u021f\u02be\u02be \u02a8\u02a8\u02a8\u02a8\u02a8\u02c1\u02c1\u02c1\u02ca\u02ca \u02cb\u02cb \u0272\u02b4\u02b4 \u01d8 \u02c6 ", + " \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02c3\u02c3\u02b2\u02b2 \u02bd\u02bd \u02a5\u02a5\u02a5\u029f\u02a0\u0290\u02a5\u027c\u0267\u0270\u0271\u027e\u0286\u0286\u027f\u027f \u0296\u0296 \u02cd\u02cd \u02ce\u02ce\u02c8\u02c8 \u02c8 \u02c0\u02c0\u02be\u02cf \u02d0\u02d0\u02c1\u02ca\u02ca \u02d1\u02cb\u02d2\u02d2 \u0272\u02b3\u02b5 \u01d8 \u02c6\u02c6 ", + " \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c3\u02c3\u02ac\u02b2 \u02bd\u02bd \u029f\u0290\u0290\u02a5\u027c\u0267\u0299\u0271\u027d\u0286\u0286\u027f\u027f \u0296\u02d3 \u02cd \u02ce \u02c8 \u02c8\u02d4\u02d4\u02be \u02d0\u02d0\u02d5\u02d5 \u02d1\u02d1\u02d1 \u02cb \u02d2 \u0272\u02b4\u02b5\u01d8\u01d8 \u02c6\u02c6 ", + "\u029c\u029c\u027a\u0282\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd\u02bd \u02a0\u0290\u0290\u027c\u027c\u02d6\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u02d7\u02d3 \u02cd \u02c8\u02c8 \u02c8\u02c8\u02c8\u02c0\u02c0\u02be\u02ba \u02d0\u02d0\u02ca\u02ca\u02d8 \u02cb\u02d2\u02d2 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6 ", + "\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3\u02ac\u02b2 \u02bd\u02bd \u02a0\u0290\u0290\u027c\u027c\u02d6\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u02d3 \u02d9\u02d9\u02cd \u02c8\u02c8\u02c8 \u02da\u02c0\u02c0\u02be \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb\u02cb\u02d2\u02d2 \u0272\u02b4\u02b5\u01d8 \u02c6 ", + "\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3\u02c3\u02b2 \u02bd\u02bd \u02a5\u02a0\u0290\u0290\u027c\u027c\u02d6\u02db\u02dc\u027e\u0286\u0279\u027f \u0296\u02d3 \u02d9\u02d9\u02cd \u02da\u02c0\u02be\u02be \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb\u02cb\u02d2 \u02b3\u02b5\u02b5\u01d8 \u02c6 ", + "\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c3\u02c3\u02ac\u02b2 \u02bd \u02a5\u02a5\u02a0\u02a0\u0290\u02dd\u027c\u02de\u02df\u02dc\u02e0\u0286\u0279\u027f \u0296\u0296\u02d3 \u02d9\u02d9 \u02cd \u02da\u02c0\u02c0\u02be\u02ba \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb \u02d2 \u02b4\u02b5 \u01d8 \u02c6\u02c6 ", + "\u0282\u0282\u029d\u02b7\u02b7 \u02c2\u02c3\u02b2\u02b2 \u02bd \u02a5\u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02db\u02df\u02e0\u02e1\u02e2\u027f\u027f \u0296\u0296\u02d3 \u02d9 \u02cd\u02cd \u02da\u02c0\u02c0\u02be\u02ba\u02ba\u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb \u02d2 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6\u02c6 ", + "\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02db\u02df\u02e0\u02e2\u02e2\u027f\u027f \u0296\u0296\u02d3 \u02d9 \u02cd \u02da\u02da\u02c0\u02c0\u02be\u02be\u02d0\u02d0\u02ca\u02ca\u02e3\u02e3\u02e4 \u02d8 \u02cb \u02d2 \u02b3\u02b4\u02e5\u01d8\u01d8 ", + "\u0282\u029d\u02b7 \u02c3\u02c3\u02b2 \u02bd\u02bd \u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02df\u02dc\u02e0\u02e2 \u027f\u027f \u0296\u0296\u02d3 \u02d9\u02d9 \u02cd \u02da\u02da\u02c0\u02cf\u02e6\u02d0\u02e7\u02ca \u02e4\u02e4\u02e4\u02d8\u02d8\u02d8\u02d8\u02d8 \u02cb\u02cb\u02e8\u02d2 \u02b3\u02b4\u02b5\u01d8 ", + "\u029d\u02b7 \u02c3\u02c3\u02ac \u02bd\u02bd \u02a5\u02a0\u0290\u02dd\u02dd\u027c\u02dc\u02df\u02e2\u02e2 \u027f\u027f \u0296\u02e9\u0296 \u02d9\u02d9 \u02cd \u02ea \u02da\u02c0\u02c0\u02e6\u02cf\u02e7\u02ca \u02d8\u02d8\u02d8\u02d8\u02d8\u02d8\u02d8\u02cb\u02cb\u02e8\u02d2 \u02eb\u02b4\u02ec\u01d8 ", + "\u02b7\u02b7 \u02c2\u02c3\u02b2\u02b2 \u02bd\u02bd \u02a5\u02a5\u02dd\u02dd\u027c \u02dc\u02e1\u02e1 \u027f\u027f \u0296\u02e9\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea\u02ea \u02da\u02ed\u02ed\u02cf\u02ee\u02ca \u02d8\u02cb\u02e8\u02e8\u02d2 \u02b3\u02b5\u02e5\u01d8 ", + "\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02dd\u027c\u027c \u02e0\u02e1 \u027f\u027f \u02e9\u02e9\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ef\u02ed\u02ed\u02ed\u02cf\u02cf\u02f0 \u02f1\u02cb\u02e8\u02d2\u02d2 \u02b3\u02eb\u02ec\u02ec\u01d8 ", + " \u02c3\u02ac\u02b2 \u02dd\u027c\u027c \u02e0\u02f2 \u027f\u027f\u0296\u0296\u02d3 \u02d9 \u02cd\u02cd \u02ea \u02ef\u02ef\u02f3\u02f4\u02f4\u02da\u02f0\u02f0\u02f0\u02f0 \u02f1 \u02cb\u02e8\u02d2\u02d2 \u02f5\u02f5 \u02b3\u02eb\u02b5\u01d8\u01d8 ", + " \u02c3\u02c3\u02ac \u02dd\u027c\u02f6\u02f2\u02e0 \u027f\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ef\u02ef\u02f4\u02f4\u02f7\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0 \u02f1 \u02cb\u02cb\u02e8\u02d2\u02d2\u02f5\u02f5 \u02eb\u02b4\u02ec\u01d8\u01d8 ", + " \u02c2\u02c3\u02b2 \u02dd\u02dd\u027c\u02f6\u02f9\u02f2\u027f\u027f\u0296\u0296\u0296 \u02d9\u02d9 \u02cd \u02ea \u02fa\u02ef\u02ef\u02f4 \u02f7\u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fb\u02f0 \u02fc\u02e8\u02e8\u02f5\u02f5 \u02b3\u02b4\u02e5\u01d8\u01d8 ", + "\u02c2\u02c3\u02ac\u02b2 \u02dd\u02dd\u027c\u02f6\u02f9\u02fd\u02fe\u02fe\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ff\u02fa\u02ef\u02f4\u02f4 \u02f7\u02f8\u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fb\u02fb\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fc\u02e8\u02e8\u02d2 \u02b3\u02b3\u02b5\u02e5\u01d8\u01d8 ", + "\u02c3\u02b2\u02b2 \u02dd\u027c\u027c\u02f9\u02f9\u02fd\u02fe\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02fa\u02fa\u02fa\u02ef\u02f4 \u02f7\u02f7\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02fb\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02fc\u02f0\u02e8\u02e8\u02d2 \u02b3\u02b3\u02b5\u02e5\u01d8 ", + "\u02ac\u02b2 \u02dd\u027c \u02f9\u02f9\u02fd\u02fe\u0296\u0296 \u02d9 \u02cd\u02cd \u02ff \u02f4\u02f4 \u02f7\u02f7\u02f7\u02f7\u02f8\u02f7\u02f7\u02f7\u02f7\u02f7\u02fb\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f0\u02f0\u02fc\u02f0\u02f0\u02e8\u02d2 \u02b3\u02b4\u02b5 \u01d8 ", + "\u02b2 \u02dd\u02dd\u027c \u02fd\u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f8\u02fc\u02f0\u02f0\u02f0\u02d2\u02d2 \u02b3\u02b4\u02b5 \u01d8 ", + "\u02b2 \u02dd\u02dd\u027c \u02fd\u02fd\u02fe\u0296\u02d3 \u02cd \u02fc\u02f8\u02f0\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b5\u02b5\u01d8\u01d8 ", + " \u02dd\u027c\u027c \u02fd\u02fd\u0296\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b3\u02b5\u02b5\u01d8\u01d8 ", + " \u02dd\u02dd\u027c \u02fd\u02fd\u0296\u0296 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5\u02b5\u01d8 ", + " \u02dd\u02dd\u027c \u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 ", + " \u02dd\u027c \u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 ", + " \u02dd \u02fd\u02fd\u02fe\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3 \u02b5\u01d8\u01d8 ", + " \u02fd\u02fd\u0296\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5\u02b5\u01d8 ", + " \u02fd\u02fd\u0296\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png index 24c587122..0fe1cacfb 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png index ffa40ac2d..761743e75 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png index 1594a246c..f766c3a28 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png index 018a553b7..f6c31d6ca 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png index 5b28189bf..7da16b1cd 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png index cbfda129c..e991deb99 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png index c1b3387f7..cdc496257 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png index fb4489a65..a4aec0749 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png index d66a6a861..2a65704af 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png index cf585a900..a7bc35af6 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png index c968382d0..22d92db8d 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png index b242281b5..784c23c62 100644 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png and b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png new file mode 100644 index 000000000..dd77a0cd7 Binary files /dev/null and b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png new file mode 100644 index 000000000..d271f6bb1 Binary files /dev/null and b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png new file mode 100644 index 000000000..557ec5e24 Binary files /dev/null and b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png new file mode 100644 index 000000000..1f71622b3 Binary files /dev/null and b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png new file mode 100644 index 000000000..19af02167 Binary files /dev/null and b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png new file mode 100644 index 000000000..2b88ab390 Binary files /dev/null and b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png new file mode 100644 index 000000000..957f2b870 Binary files /dev/null and b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png new file mode 100644 index 000000000..b34a8a5ed Binary files /dev/null and b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png differ diff --git a/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml b/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml index 31110e31c..4d691fbaa 100644 --- a/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml +++ b/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml @@ -1,6 +1,9 @@ - + + + + + casing + bridge + fill + marking + + ../data/grouped-rendering.sqlite + (SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z +FROM roads ORDER BY z_order) AS road + sqlite + + + + \ No newline at end of file diff --git a/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml b/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml new file mode 100644 index 000000000..3d29d93ee --- /dev/null +++ b/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml @@ -0,0 +1,67 @@ + + + + + + + + + + casing + bridge + fill + marking + + ../data/grouped-rendering.sqlite + (SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z +FROM roads ORDER BY z_order) AS road + sqlite + + + + \ No newline at end of file diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py index 01d87306c..98b894e3e 100755 --- a/tests/visual_tests/test.py +++ b/tests/visual_tests/test.py @@ -102,7 +102,7 @@ files = { 'marker-on-line-spacing-eq-width-overlap': {'sizes':[(600,400)]}, 'marker_line_placement_on_points':{}, 'marker-with-background-image': {'sizes':[(600,400),(400,600),(257,256)]}, - #'marker-with-background-image-and-hsla-transform': {'sizes':[(600,400),(400,600),(257,256)]}, + 'marker-with-background-image-and-hsla-transform': {'sizes':[(600,400),(400,600),(257,256)]}, 'marker-on-hex-grid': {'sizes':[(600,400),(400,600),(257,256)]}, 'whole-centroid': {'sizes':[(600,400)], 'bbox': mapnik.Box2d(736908, 4390316, 2060771, 5942346)}, @@ -140,13 +140,22 @@ files = { 'bbox':mapnik.Box2d(-13267022.12540147,4598451.621636203,-13247454.246160466,4618019.500877209) }, 'tiff-reprojection-1': {'sizes':[(250,250)]}, - 'tiff-reprojection-2': {'sizes':[(250,250)]}, + + # disabled since fixing is not actionable: https://github.com/mapnik/mapnik/issues/1913 + #'tiff-reprojection-2': {'sizes':[(250,250)]}, + # https://github.com/mapnik/mapnik/issues/1520 # commented because these are not critical failures #'tiff-alpha-raster': {'sizes':[(600,400)]}, #'tiff-alpha-broken-assoc-alpha-raster': {'sizes':[(600,400)]}, #'tiff-nodata-edge-raster': {'sizes':[(600,400)]}, #'tiff-opaque-edge-raster': {'sizes':[(256,256)]}, + 'road-casings-grouped-rendering': {'sizes':[(600,600)], + 'bbox':mapnik.Box2d(1477001.12245,6890242.37746,1480004.49012,6892244.62256) + }, + 'road-casings-non-grouped-rendering': {'sizes':[(600,600)], + 'bbox':mapnik.Box2d(1477001.12245,6890242.37746,1480004.49012,6892244.62256) + } } class Reporting: